[Gc] Re: bug? or misunderstanding?
hans.boehm at hp.com
Thu Feb 16 15:34:54 PST 2006
The inner marking code was largely redesigned in 7.0. Thus it makes
sense that the problem doesn't exist there.
I managed to reproduce the problem on X86 and IA64 linux, with the aid
of your test case, and I largely understand it. It is clearly a serious
cross-platform. I should have a patch shortly. I currently believe it
doesn't affect anything running without interior pointer recognition, in
spite of the fact that the interior pointer here is on the stack, and
should be recognized in either case. That's probably worth testing.
A useful debugging trick appears to be to stop someplace shortly before
the failure in the marker, and then set breakpoints in
GC_add_to_black_list_normal and GC_add_to_black_list_stack. If
something near the heap fails to get marked, one of those will be
called. And at that point all the locals in the mess of macros will be
on the stack, so it's reasonably easy to ask why it wasn't marked.
From: gc-bounces at napali.hpl.hp.com
[mailto:gc-bounces at napali.hpl.hp.com] On Behalf Of Andrew McKinlay
Sent: Thursday, February 16, 2006 10:48 AM
To: gc at napali.hpl.hp.com
Subject: [Gc] Re: bug? or misunderstanding?
It appears to be fixed in 7.0alpha5 although I couldn't find
anything I recognized as this bug in the change log.
I'm still stuck, though, since I assume "alpha" probably
shouldn't be used for production.
On 2/16/06, Andrew McKinlay <mckinlay at axonsoft.com> wrote:
- same results with VC++ 6 (as MinGW GCC)
- my wild guess about a bytes/words mixup didn't pan out
- the 1 k offset limit seems independent of block size
- same results on versions 6.6, 6.5 , 6.4, and 6.0
This bug is a show stopper for me. I've started to look
at the marking code, but it's going to take me a while to make sense of
it, let alone find a bug. If anyone can help, I'd really appreciate it.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Gc