> Doesn't 'circ? also set the gc bit?
Well observed!! That't true, but it is the "other" mark bit. While gc uses the
bit in the CDR
or (X CDR) 1 # Set mark bit
uses 'circ' the one in the CAR of the cell
or (A) 1 # Mark
> Could it be possible that 'circ? evaluates a term which accesses something
> with a changed pointer?
The bits are only set after all evaluation is done, and the raw circ detection
processing runs. Then the bits are cleared (as after garbage collection too).