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                          na...@mips.inka.de

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

Reply via email to