[Scummvm-tracker] [ScummVM :: Bugs] #15243: Segfault switching to OpenGL

ScummVM :: Bugs trac at scummvm.org
Wed Jul 3 04:06:37 UTC 2024


#15243: Segfault switching to OpenGL
------------------------+--------------------
Reporter:  scummvmuser  |      Owner:  (none)
    Type:  defect       |     Status:  new
Priority:  high         |  Component:  GUI
 Version:               |   Keywords:
    Game:               |
------------------------+--------------------
 In Global Options, my graphics mode is set to "SDL Surface". If I set that
 to "OpenGL" and click Apply or OK, ScummVM segfaults. (I guess
 `_aspectCheckbox` is nil when it should be something.)

 {{{
 Debian 12.6 amd64 with nvidia-driver 535.183.01-1~deb12u1
 ScummVM 2.9.0git5811-gc5948672ff2 (Jul  2 2024 22:04:47)
 Using SDL backend with SDL 2.26.5
 Features compiled in: Vorbis SEQ TiMidity RGB FreeType2 PNG SDL2 TinyGL
 OpenGL
 }}}

 {{{
 $ git checkout c3c9f43a047 # AGS: Fix build when SIZE_MAX is 64-bit sized
 $ git bisect good
 4875573f66ebb474cab3bd36600703a242cbb1ff is the first bad commit

     GUI: Disable shader controls instead of hiding them. Prvides better UX

  gui/options.cpp | 80
 ++++++++++++++++++++++++---------------------------------
  gui/options.h   |  3 +++
  2 files changed, 37 insertions(+), 46 deletions(-)
 }}}

 {{{
 AddressSanitizer:DEADLYSIGNAL
 =================================================================
 ==15550==ERROR: AddressSanitizer: SEGV on unknown address 0x0000000000f8
 (pc 0x55d156544fd8 bp 0x7ffd4b20d6a0 sp 0x7ffd4b20d690 T0)
 ==15550==The signal is caused by a READ memory access.
 ==15550==Hint: address points to the zero page.
     #0 0x55d156544fd8 in GUI::Widget::setEnabled(bool)
 (/home/user/scummvm/scummvm+0x6a7fd8)
     #1 0x55d1564970dd in GUI::OptionsDialog::setGraphicSettingsState(bool)
 (/home/user/scummvm/scummvm+0x5fa0dd)
     #2 0x55d1564b095a in GUI::OptionsDialog::setupGraphicsTab()
 (/home/user/scummvm/scummvm+0x61395a)
     #3 0x55d156495ea5 in
 GUI::OptionsDialog::handleCommand(GUI::CommandSender*, unsigned int,
 unsigned int) (/home/user/scummvm/scummvm+0x5f8ea5)
     #4 0x55d1564c783b in
 GUI::GlobalOptionsDialog::handleCommand(GUI::CommandSender*, unsigned int,
 unsigned int) (/home/user/scummvm/scummvm+0x62a83b)
     #5 0x55d156441aad in GUI::CommandSender::sendCommand(unsigned int,
 unsigned int) (/home/user/scummvm/scummvm+0x5a4aad)
     #6 0x55d15659b79e in GUI::ScrollContainerWidget::reflowLayout()
 (/home/user/scummvm/scummvm+0x6fe79e)
     #7 0x55d1565a04de in GUI::TabWidget::reflowLayout()
 (/home/user/scummvm/scummvm+0x7034de)
     #8 0x55d156433337 in GUI::Dialog::reflowLayout()
 (/home/user/scummvm/scummvm+0x596337)
     #9 0x55d1564b0569 in GUI::OptionsDialog::reflowLayout()
 (/home/user/scummvm/scummvm+0x613569)
     #10 0x55d1564c8dcb in GUI::GlobalOptionsDialog::reflowLayout()
 (/home/user/scummvm/scummvm+0x62bdcb)
     #11 0x55d15643ec03 in GUI::GuiManager::screenChange()
 (/home/user/scummvm/scummvm+0x5a1c03)
     #12 0x55d15643ea47 in GUI::GuiManager::checkScreenChange()
 (/home/user/scummvm/scummvm+0x5a1a47)
     #13 0x55d15648f53f in GUI::OptionsDialog::apply()
 (/home/user/scummvm/scummvm+0x5f253f)
     #14 0x55d1564c376d in GUI::GlobalOptionsDialog::apply()
 (/home/user/scummvm/scummvm+0x62676d)
     #15 0x55d156494dde in GUI::OptionsDialog::close()
 (/home/user/scummvm/scummvm+0x5f7dde)
     #16 0x55d1564c567b in GUI::GlobalOptionsDialog::close()
 (/home/user/scummvm/scummvm+0x62867b)
     #17 0x55d156496384 in
 GUI::OptionsDialog::handleCommand(GUI::CommandSender*, unsigned int,
 unsigned int) (/home/user/scummvm/scummvm+0x5f9384)
     #18 0x55d1564c783b in
 GUI::GlobalOptionsDialog::handleCommand(GUI::CommandSender*, unsigned int,
 unsigned int) (/home/user/scummvm/scummvm+0x62a83b)
     #19 0x55d156441aad in GUI::CommandSender::sendCommand(unsigned int,
 unsigned int) (/home/user/scummvm/scummvm+0x5a4aad)
     #20 0x55d1565477eb in GUI::ButtonWidget::handleMouseUp(int, int, int,
 int) (/home/user/scummvm/scummvm+0x6aa7eb)
     #21 0x55d156434161 in GUI::Dialog::handleMouseUp(int, int, int, int)
 (/home/user/scummvm/scummvm+0x597161)
     #22 0x55d15643fdbb in GUI::GuiManager::processEvent(Common::Event
 const&, GUI::Dialog*) (/home/user/scummvm/scummvm+0x5a2dbb)
     #23 0x55d15643c7fa in GUI::GuiManager::runLoop()
 (/home/user/scummvm/scummvm+0x59f7fa)
     #24 0x55d156432fc0 in GUI::Dialog::runModal()
 (/home/user/scummvm/scummvm+0x595fc0)
     #25 0x55d15644e997 in
 GUI::LauncherDialog::handleCommand(GUI::CommandSender*, unsigned int,
 unsigned int) (/home/user/scummvm/scummvm+0x5b1997)
     #26 0x55d156458ead in
 GUI::LauncherSimple::handleCommand(GUI::CommandSender*, unsigned int,
 unsigned int) (/home/user/scummvm/scummvm+0x5bbead)
     #27 0x55d156441aad in GUI::CommandSender::sendCommand(unsigned int,
 unsigned int) (/home/user/scummvm/scummvm+0x5a4aad)
     #28 0x55d1565477eb in GUI::ButtonWidget::handleMouseUp(int, int, int,
 int) (/home/user/scummvm/scummvm+0x6aa7eb)
     #29 0x55d156434161 in GUI::Dialog::handleMouseUp(int, int, int, int)
 (/home/user/scummvm/scummvm+0x597161)
     #30 0x55d15643fdbb in GUI::GuiManager::processEvent(Common::Event
 const&, GUI::Dialog*) (/home/user/scummvm/scummvm+0x5a2dbb)
     #31 0x55d15643c7fa in GUI::GuiManager::runLoop()
 (/home/user/scummvm/scummvm+0x59f7fa)
     #32 0x55d1564497b0 in GUI::LauncherDialog::run()
 (/home/user/scummvm/scummvm+0x5ac7b0)
     #33 0x55d1564529d5 in GUI::LauncherChooser::runModal()
 (/home/user/scummvm/scummvm+0x5b59d5)
     #34 0x55d15615b02d in launcherDialog()
 (/home/user/scummvm/scummvm+0x2be02d)
     #35 0x55d156162d69 in scummvm_main
 (/home/user/scummvm/scummvm+0x2c5d69)
     #36 0x55d156156edf in main (/home/user/scummvm/scummvm+0x2b9edf)
     #37 0x7f142fa46249 in __libc_start_call_main
 ../sysdeps/nptl/libc_start_call_main.h:58
     #38 0x7f142fa46304 in __libc_start_main_impl ../csu/libc-start.c:360
     #39 0x55d156145240 in _start (/home/user/scummvm/scummvm+0x2a8240)

 AddressSanitizer can not provide additional info.
 SUMMARY: AddressSanitizer: SEGV (/home/user/scummvm/scummvm+0x6a7fd8) in
 GUI::Widget::setEnabled(bool)
 ==15550==ABORTING
 }}}

 Please let me know how I might provide more helpful info. Sorry if my
 bisect misleads; I don't really know what I'm doing.

 As a workaround to set my graphics mode to OpenGL, I checked out the good
 commit mentioned above, adjusted the setting, then came back to present.
 (I should have checked docs for scummvm.ini and made the change there,
 though.)
-- 
Ticket URL: <https://bugs.scummvm.org/ticket/15243>
ScummVM :: Bugs <https://bugs.scummvm.org>
ScummVM


More information about the Scummvm-tracker mailing list