[Gc] Uniq() test in gctest

Boehm, Hans hans.boehm at hp.com
Fri Nov 12 15:16:34 PST 2004

It probably doesn't mean a lot.  X86 machines don't have many
registers, and many calling conventions simply push arguments onto
the memory stack.  In that sort of environment, this test is just
not very thorough.


> -----Original Message-----
> From: Peter Colson [mailto:pcolson at connexus.net.au]
> Sent: Wednesday, November 10, 2004 8:32 PM
> To: Boehm, Hans
> Cc: gc at napali.hpl.hp.com
> Subject: Re: [Gc] Uniq() test in gctest
> On 11/11/2004, at 11:01 AM, Boehm, Hans wrote:
> > This is a serious problem that needs to be fixed.
> >
> > It means that either GC_generic_push_regs itself is not saving the
> > effected registers on the stack (e.g. because setjmp doesn't save
> > them), or it means that GC_push_current_stack is not pushing the
> > result on the mark stack.  Certainly GC_stackbottom could 
> also be an 
> > issue,
> > though that's unlikely if this is the only failure.  Does it run
> > much further if you comment out this test?  Does GC_stackbottom look
> > reasonable relative the stack pointer?
> I did notice something else - on a Win32 system (since the 400 is 
> giving such trouble) I tried running the uniq() test by itself, first 
> using the Win32 GC_push_regs, then GC_generic_push_regs, and finally 
> with GC_generic_push_regs simply doing a return and nothing else. In 
> each case the uniq() test succeeded, i.e., all pointers were unique.
> What does this say about the relationship of the push_regs 
> routines to 
> what uniq() is actually testing?
> Regards,
> Peter Colson.

More information about the Gc mailing list