On Sun, Sep 10, 2023 at 01:43:58PM +0200, Christian Weisgerber wrote:
> Lucas Raab:
>
> > > It would be interesting to figure out where that crash is coming
> > > from. Is this a problem in devilutionx proper? Or library code
> > > it links against?
> >
> > I'm assuming there's no Easy Button(tm) to identify those and that'll
> > require
> > stepping through each dependent library to determine? :)
>
> I would assume a backtrace from a core dump would allow identifying
> the library, as a first step. Once we know that a library has a
> BTI problem, somebody can dig there.
>
> --
> Christian "naddy" Weisgerber [email protected]
Thanks, naddy. bentley@ also helped get me going with debug builds.
Which leads to my next question...I've built devilutionx with DEBUG_PACKAGES
and that initially gets me to:
Process 41444 stopped
* thread #1, stop reason = signal SIGILL
frame #0: 0x0000000e2abf7000
-> 0xe2abf7000: stp d15, d14, [sp, #-0xa0]!
0xe2abf7004: sub x9, sp, #0x40 ; =0x40
0xe2abf7008: stp d13, d12, [sp, #0x10]
0xe2abf700c: stp d11, d10, [sp, #0x20]
(lldb) bt
* thread #1, stop reason = signal SIGILL
* frame #0: 0x0000000e2abf7000
frame #1: 0x0000000ebecbab34
frame #2: 0x0000000ebecd7e7c
frame #3: 0x0000000ebecb8ea0
frame #4: 0x0000000ebecb8a50
frame #5: 0x0000000ebecb89c0
frame #6: 0x0000000ebf15ac08
frame #7: 0x0000000ebe9fbb3c
frame #8: 0x0000000e7c612cc4 libSDL2.so.0.14`GL_RunCommandQueue at
SDL_render_gl.c:1372:17
frame #9: 0x0000000e7c60ccb4 libSDL2.so.0.14`SDL_RenderPresent_REAL at
SDL_render.c:249:14
frame #10: 0x0000000a0fc1e5b4 devilutionx`devilution::RenderPresent() at
dx.cpp:247:3
frame #11: 0x0000000a0fbf3554
devilutionx`devilution::LoadBackgroundArt(pszFile=<unavailable>, frames=1) at
diabloui.cpp:714:2
frame #12: 0x0000000a0fbfbb20 devilutionx`devilution::UiMainMenuDialog(char
const*, devilution::_mainmenu_selections*, int) [inlined]
devilution::(anonymous namespace)::MainmenuLoad(name="DevilutionX vDebug") at
unique_ptr.h:0:5
frame #13: 0x0000000a0fbfb614
devilutionx`devilution::UiMainMenuDialog(name="DevilutionX vDebug",
pdwResult=0x0000007e6c3a15cc, attractTimeOut=30) at mainmenu.cpp:99:3
frame #14: 0x0000000a0fb511b4 devilutionx`devilution::mainmenu_loop() at
menu.cpp:155:13
frame #15: 0x0000000a0fafb770
devilutionx`devilution::DiabloMain(argc=<unavailable>, argv=<unavailable>) at
diablo.cpp:2435:2
frame #16: 0x0000000a0fad46f8 devilutionx`_start + 284
bentley@'s thought was to rebuild mesa with debug info to proceed, but I can't
seem to get any symbols to show up and I actually get four additional frames.
Example:
Process 92689 stopped
* thread #1, stop reason = signal SIGILL
frame #0: 0x0000001840b33000
-> 0x1840b33000: stp d15, d14, [sp, #-0xa0]!
0x1840b33004: sub x9, sp, #0x40 ; =0x40
0x1840b33008: stp d13, d12, [sp, #0x10]
0x1840b3300c: stp d11, d10, [sp, #0x20]
(lldb) bt
* thread #1, stop reason = signal SIGILL
* frame #0: 0x0000001840b33000
frame #1: 0x00000017c8286b4c
frame #2: 0x00000017c82b1bac
frame #3: 0x00000017c82b0808
frame #4: 0x00000017c8284404
frame #5: 0x00000017c8283f24
frame #6: 0x00000017c8283cb8
frame #7: 0x00000017c890cc9c
frame #8: 0x00000017c82c3800
frame #9: 0x00000017c7e5bbb4
frame #10: 0x00000017c7e50f90
frame #11: 0x00000017c7e50d64
frame #12: 0x000000182072b9a8
frame #13: 0x000000182808b8a8 libSDL2.so.0.14`GL_RunCommandQueue + 1168
frame #14: 0x0000001828085898 libSDL2.so.0.14`SDL_RenderPresent_REAL + 128
frame #15: 0x00000013b20ee5b4 devilutionx`devilution::RenderPresent() at
dx.cpp:247:3
frame #16: 0x00000013b20c3554
devilutionx`devilution::LoadBackgroundArt(pszFile=<unavailable>, frames=1) at
diabloui.cpp:714:2
frame #17: 0x00000013b20cbb20 devilutionx`devilution::UiMainMenuDialog(char
const*, devilution::_mainmenu_selections*, int) [inlined]
devilution::(anonymous namespace)::MainmenuLoad(name="DevilutionX vDebug") at
unique_ptr.h:0:5
frame #18: 0x00000013b20cb614
devilutionx`devilution::UiMainMenuDialog(name="DevilutionX vDebug",
pdwResult=0x00000064ae8e2cdc, attractTimeOut=30) at mainmenu.cpp:99:3
frame #19: 0x00000013b20211b4 devilutionx`devilution::mainmenu_loop() at
menu.cpp:155:13
frame #20: 0x00000013b1fcb770
devilutionx`devilution::DiabloMain(argc=<unavailable>, argv=<unavailable>) at
diablo.cpp:2435:2
frame #21: 0x00000013b1fa46f8 devilutionx`_start + 284
I can see xorg-config.cache.arm64 has ac_cv_env_CFLAGS_value=-g set so I
believe the I've rebuilt with debug info. I don't understand how/why the extra
four frames would appear though and why there's no additional information.
Is there something I've missed?
Thanks,
Lucas