https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90063
Bug ID: 90063 Summary: druntime DSO first assertion fails on Solaris/SPARC Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: d Assignee: ibuclaw at gdcproject dot org Reporter: ro at gcc dot gnu.org Target Milestone: --- Target: sparc*-sun-solaris2.11 The next issue with Solaris 11/SPARC execution tests is FAIL: libphobos.druntime_shared/core/internal/hash.d execution test Thread 2 received signal SIGSEGV, Segmentation fault. [Switching to Thread 1 (LWP 1)] 0xffffffff5e858a5c in gc_malloc (sz=80, ba=0, ti=0xffffffff5e988de0 <ClassInfo for core.exception.AssertError>) at /vol/gcc/src/hg/trunk/solaris/libphobos/libdruntime/gc/proxy.d:117 117 return instance.malloc(sz, ba, ti); (gdb) where #0 0xffffffff5e858a5c in gc_malloc (sz=80, ba=0, ti=0xffffffff5e988de0 <ClassInfo for core.exception.AssertError>) at /vol/gcc/src/hg/trunk/solaris/libphobos/libdruntime/gc/proxy.d:117 #1 0xffffffff5e7cc74c in core.memory.GC.malloc(ulong, uint, const(TypeInfo)) ( sz=80, ba=0, ti=0xffffffff5e988de0 <ClassInfo for core.exception.AssertError>) at /vol/gcc/src/hg/trunk/solaris/libphobos/libdruntime/core/memory.d:380 #2 0xffffffff5e803b60 in _d_newclass ( ci=0xffffffff5e988de0 <ClassInfo for core.exception.AssertError>) at /vol/gcc/src/hg/trunk/solaris/libphobos/libdruntime/rt/lifetime.d:96 #3 0xffffffff5e7c9df8 in onAssertError (file=..., line=398) at /vol/gcc/src/hg/trunk/solaris/libphobos/libdruntime/core/exception.d:441 #4 0xffffffff5e7ca444 in _d_assert (file=..., line=398) at /vol/gcc/src/hg/trunk/solaris/libphobos/libdruntime/core/exception.d:641 #5 0xffffffff5e815684 in _d_dso_registry (data=0xffffffff7fffcfa0) at /vol/gcc/src/hg/trunk/solaris/libphobos/libdruntime/rt/sections_elf_shared.d:398 #6 0x00000001000037cc in gdc.dso_ctor () at <no_file>:1 #7 0x0000000100002db8 in global constructors keyed to 4core8internal4hash () at /vol/gcc/src/hg/trunk/solaris/libphobos/testsuite/../libdruntime/core/internal/hash.d:1 #8 0xffffffff7f3253f0 in call_array () from /usr/lib/sparcv9/ld.so.1 #9 0xffffffff7f325590 in call_init () from /usr/lib/sparcv9/ld.so.1 #10 0xffffffff7f335524 in elf_bndr () from /usr/lib/sparcv9/ld.so.1 #11 0xffffffff7f316488 in elf_rtbndr () from /usr/lib/sparcv9/ld.so.1 Backtrace stopped: previous frame identical to this frame (corrupt stack?) #5 0xffffffff5e815684 in _d_dso_registry (data=0xffffffff7fffcfa0) at /vol/gcc/src/hg/trunk/solaris/libphobos/libdruntime/rt/sections_elf_shared.d:398 398 assert(handleForAddr(data._slot) == handleForAddr(&rt_get_bss_start)); (gdb) p data $2 = (rt.sections_elf_shared.CompilerDSOData *) 0xffffffff7fffcfa0 (gdb) p *data $3 = {_version = 1, _slot = 0x1001043d8 <gdc.dso_slot>, _minfo_beg = 0x1001043b0 <__start_minfo>, _minfo_end = 0x1001043c8} I haven't dug further yet why this fails on Solaris/SPARC, but not on Solaris/x86. For the moment, I've just disabled the assert.