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.