D - BUG: 2nd GC Run Segfaults
- Russ Lewis (27/27) Jul 16 2003 DMD 0.68, on RedHat 9
DMD 0.68, on RedHat 9 When the GC runs twice, the second run segfaults. It turns out that it segfaults when the code attempts to use the Thread reference. For some reason, the Thread object was cleaned up on the first run of the GC! The following code generates an error: import gc; import c.stdio; int main(char[][] args) { printf("Starting test!\n"); fflush(null); gc.fullCollect(); gc.fullCollect(); return 0; }; The output, after I added some trace statements into phobos, looks like this: fullcollect: START fullcollect: END Starting test! fullcollect: START threads:0/1 t=0x401b9fc0 *(long*)t=0x804e129Thread.~this(): this=0x401b9fc0 fullcollect: END fullcollect: START threads:0/1 t=0x401b9fc0 *(long*)t=(nil)Segmentation fault The key thing to note is that Thread.~this() gets called during fullcollect().
Jul 16 2003