Ticket #1107 (closed defect: fixed)

Opened 14 months ago

Last modified 14 months ago

"Registers clobbered" error

Reported by: matt.kaufmann Owned by:
Priority: normal Milestone:
Component: Compiler Version: trunk
Keywords: Cc:

Description

The attached file produces an error in CCL, startup banner:

Welcome to Clozure Common Lisp Version 1.10-dev-r15881M-trunk  (LinuxX8664)!

The error message is as shown below.

% /projects/acl2/lisps/ccl/ccl-15881
Starting 64-bit CCL
Welcome to Clozure Common Lisp Version 1.10-dev-r15881M-trunk  (LinuxX8664)!
? (load "bug.lisp")
> Error: Registers clobbered applying G to (3)
>        save0 sb: NIL, Was: 4
>        save1 sb: #1=(NIL), Was: #1#
>        save2 sb: *SAVE-SOURCE-LOCATIONS*, Was: *SAVE-SOURCE-LOCATIONS*
>        save3 sb: #2=#<CCL::LEXICAL-ENVIRONMENT #x302000496AAD>, Was: #2#
>        
> While executing: (:INTERNAL CCL::WITH-COMPILATION-UNIT-BODY CCL::LOAD-FROM-STREAM), in process listener(1).
> Type :POP to abort, :R for a list of available restarts.
> Type :? for other options.
1 > 

Perhaps this related to CCL's optimized handling of CASE expressions in some situations; for example, changing 2 to 8 in this example makes the problem disappear.

By the way, I tried it on a Mac too, with a slightly older version of CCL and got a similar error. Startup banner there was:

Welcome to Clozure Common Lisp Version 1.10-dev-r15835M-trunk  (DarwinX8664)!

Attachments

bug.lisp Download (330 bytes) - added by matt.kaufmann 14 months ago.
Submit (load "bug.lisp") to see the error.

Change History

Changed 14 months ago by matt.kaufmann

Submit (load "bug.lisp") to see the error.

comment:1 Changed 14 months ago by matt.kaufmann

The following workaround eliminates the bug.

(setq CCL::*X862-GENERATE-CASEJUMP* nil)

comment:2 Changed 14 months ago by gb

  • Status changed from new to closed
  • Resolution set to fixed

(In [15883]) When CASE via jump table clauses return multiple values, force stack cleanup.

Fixes ticket:1107 in the trunk.

Note: See TracTickets for help on using tickets.