https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106977

            Bug ID: 106977
           Summary: [13 regression] d21 dies with SIGBUS on 32-bit Darwin
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: d
          Assignee: ibuclaw at gdcproject dot org
          Reporter: ro at gcc dot gnu.org
                CC: iains at gcc dot gnu.org
  Target Milestone: ---
            Target: i386-apple-darwin11.4.2

Between 20220610 (5940b4e59f8e198dbf7e8b733561ef72a9ba2cbc) and 20220624
(3b8794302b52a819ca3ea78238e9b5025d1c56dd),
32-bit bootstrap started to fail on 32-bit Darwin (Mac OS X 10.7): when
configuring the stage 2 libphobos, d21 dies with

$ cat conftest.d
module object;

extern(C) int main() {
  return 0;
}
$ d21 conftest.d -I <path to>/libphobos/libdruntime -o conftest.s
conftest.d:3:15: internal compiler error: Bus error: 10
    3 | extern(C) int main() {
      |               ^

I had a hard time getting more information out of this crash:

* With gdb 9.1 I get

Program received signal SIGBUS, Bus error.
0x00055398 in _ZN11Declaration7visibleEv (this=0x7)
(gdb) bt
#0  0x00055398 in _ZN11Declaration7visibleEv (this=warning: (Internal error: pc
0x7 in read in psymtab, but not in symtab.)

0x7)
#1  0x001ed871 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)

  which is Declaration::visible()

* With /usr/bin/gdb:

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x0000004b
_ZN11Declaration7visibleEv (this=0x7) at
/vol/gcc/src/hg/master/darwin/gcc/d/dmd/declaration.d:547
547             return visibility;
(gdb) bt
#0  _ZN11Declaration7visibleEv (this=0x7) at
/vol/gcc/src/hg/master/darwin/gcc/d/dmd/declaration.d:547
#1  0x001ed871 in get_symbol_decl () at parsetimevisitor.d:26

* With /usr/bin/lldb:

Process 133 stopped
* thread #1: tid = 0x1f03, 0x00055398 d21`Declaration::visible(this=0x00000007)
+ 8 at declaration.d:547, stop reason = EXC_BAD_ACCESS (code=2, address=0x4b)
    frame #0: 0x00055398 d21`Declaration::visible(this=0x00000007) + 8 at
declaration.d:547
   544  
   545      override final Visibility visible() pure nothrow @nogc @safe
   546      {
-> 547          return visibility;
   548      }
   549  
   550      override final inout(Declaration) isDeclaration() inout pure
nothrow @nogc @safe
(lldb) bt
* thread #1: tid = 0x1f03, 0x00055398 d21`Declaration::visible(this=0x00000007)
+ 8 at declaration.d:547, stop reason = EXC_BAD_ACCESS (code=2, address=0x4b)
    frame #0: 0x00055398 d21`Declaration::visible(this=0x00000007) + 8 at
declaration.d:547
    frame #1: 0x001ed871 d21`get_symbol_decl(Declaration*) (.part.0) + 833

I haven't tried reghunting yet.

Reply via email to