[Gc] Uniq() test in gctest
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?
> Peter Colson.
More information about the Gc