-
Notifications
You must be signed in to change notification settings - Fork 406
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GC_mark_stack_bottom interpreted as heap pointer? #21
Comments
I can't find GC_mark_stack_bottom. Do you mean GC_mark_stack_top? Do you have any patch solving the problem? |
Apparently I got this mixed up, since I wrote "GC_mark_stack_top" in the CACAO bug entry. No, I don't have a patch. |
I've just tried to reproduce this using a more recent version – ca89b8c –, as I could not remember exactly what I did back then. I compile with
And what lives at
So I'm not sure which one of these |
I've applied a fix preventing GC_mark_stack* pointers from being scanned. Could you please check whether the CACAO problem disappeared. |
Stefan Ring reported n GC mailing list:
|
While investigating a bug report in CACAO, I translated the relevant bits of the test program to C, and now I can reproducibly make the GC run out of memory. The orphaned entries form a chain of entries, so holding on to just one of them ensures that nothing is ever reclaimed. Using GC_TRACE and GC_generate_random_backtrace, I can at least make a guess at what happens here. GC_mark_stack_bottom () is in the root set -- what for? -- and points to the lower heap bound (). Following it, ..0x30 gets marked for some reason, and it's game over from there. This happens with 7.2d (and with every 7+ release). Release 6.8 is the most recent one I could find which does not behave that way.
I'm aware that the test is probably the worst possible scenario for a conservative garbage collector, but I still wonder why the GC_mark_stack_bottom variable is treated as a heap pointer. It's also possible that my interpretation of the trace output is off. It's not easy for an outsider to find out what's really going on.
EDIT: Hmm, it doesn't seem to be possible to add an attachment here… – https://github.com/Ringdingcoder/dumpingground/blob/master/gc-chain.c
The text was updated successfully, but these errors were encountered: