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.

Reply via email to