Hi Johannes, >> I suspect the two testsuite regressions (compared to a build with >> dlpi_tls_modid present) I mentioned are exactly of the kind you mention: >> >> e.g. the gdc.test/runnable/testaa.d failures are like this >> >> core.exception.rangeer...@gdc.test/runnable/testaa.d(410): Range violation >> ---------------- >> /vol/gcc/src/hg/trunk/local/libphobos/libdruntime/core/exception.d:496 >> onRangeError [0x80f0d2c] >> /vol/gcc/src/hg/trunk/local/libphobos/libdruntime/core/exception.d:672 >> _d_arraybounds [0x80f132f] >> ??:? void testaa.test15() [0x80d7ae4] >> ??:? _Dmain [0x80dd3fc] >> before test 1 >> >> and gdc.test/runnable/xtest55.d fails like so: >> >> core.exception.asserter...@gdc.test/runnable/xtest55.d(19): Assertion failure >> ---------------- >> /vol/gcc/src/hg/trunk/local/libphobos/libdruntime/core/exception.d:441 >> onAssertError [0x7fff55dd3b56] >> ??:? _Dmain [0x418959] >> 7FFFBEB00000 7FFFBEB00000 > > If you want to verify whether it's really a GC problem, you can add this in > the main function to disable GC collections: > > import core.memory; > GC.disable();
thanks for the hint. With that change, the xtest55.d failure vanishes, while the testaa.d one remains unchanged. > This should be fine for the test suite. If you want to do this for the unit > tests it's slightly more complicated as the main functions is executed > _after_ all unit tests. IIRC adding it in a shared static this() module > constructor would work there. The unittest failures also occur when dlpi_tls_modid is present. The libphobos testsuite regressions are like this: +FAIL: libphobos.shared/link.d -I/vol/gcc/src/hg/trunk/local/libphobos/testsuite/libphobos.shared lib.so -shared-libphobos execution test 64-bit only Thread 2 received signal SIGSEGV, Segmentation fault. [Switching to Thread 1 (LWP 1)] 0x00000000005064f0 in ?? () (gdb) where #0 0x00000000005064f0 in ?? () #1 0x00007fff38903c84 in lib.tls_access() () at /vol/gcc/src/hg/trunk/solaris/libphobos/testsuite/libphobos.shared/lib.d:26 #2 0x000000000040298d in link.testGC() () at /vol/gcc/src/hg/trunk/solaris/libphobos/testsuite/libphobos.shared/link.d:24 #3 0x0000000000402e36 in D main () at /vol/gcc/src/hg/trunk/solaris/libphobos/testsuite/libphobos.shared/link.d:62 The rest occurs for both 32 and 64-bit: +FAIL: libphobos.shared/link_linkdep.d -I/vol/gcc/src/hg/trunk/local/libphobos/testsuite/libphobos.shared liblinkdep.so lib.so -shared-libphobos execution test Thread 2 received signal SIGSEGV, Segmentation fault. [Switching to Thread 1 (LWP 1)] 0x080620ad in ?? () (gdb) where #0 0x080620ad in ?? () #1 0xfe652f2e in lib.stack!(lib.tls_access()).stack() () at /vol/gcc/src/hg/trunk/solaris/libphobos/testsuite/libphobos.shared/lib.d:33 #2 0xfe6528fd in lib.testGC() () at /vol/gcc/src/hg/trunk/solaris/libphobos/testsuite/libphobos.shared/lib.d:45 #3 0xfe652af1 in lib.runTestsImpl() () at /vol/gcc/src/hg/trunk/solaris/libphobos/testsuite/libphobos.shared/lib.d:80 #4 0xfe652a1e in runTests () at /vol/gcc/src/hg/trunk/solaris/libphobos/testsuite/libphobos.shared/lib.d:62 #5 0xfe670be4 in runDepTests () at /vol/gcc/src/hg/trunk/solaris/libphobos/testsuite/libphobos.shared/liblinkdep.d:5 #6 0x08050efa in D main () at /vol/gcc/src/hg/trunk/solaris/libphobos/testsuite/libphobos.shared/link_linkdep.d:5 Except for the last one, the rest is similar: +FAIL: libphobos.shared/load_linkdep.d -shared-libphobos -ldl execution test +FAIL: libphobos.shared/load_loaddep.d -shared-libphobos -ldl execution test +FAIL: libphobos.shared/linkDR.c -shared-libphobos -ldl -pthread execution test +FAIL: libphobos.shared/host.c -ldl -pthread execution test +FAIL: libphobos.shared/loadDR.c -ldl -pthread -g execution test This one is a bit of the odd man out: Thread 2 received signal SIGILL, Illegal instruction. [Switching to Thread 1 (LWP 1)] 0x08061f85 in ?? () (gdb) where #0 0x08061f85 in ?? () #1 0xfe4b2f2e in lib.stack!(lib.tls_access()).stack() () at /vol/gcc/src/hg/trunk/solaris/libphobos/testsuite/libphobos.shared/lib.d:33 #2 0xe8fe4b28 in ?? () [...] #63 0x00fe6ec9 in ?? () #64 0x00000000 in ?? () Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University