Opened 3 months ago

Last modified 3 months ago

#15305 new defect

GLK: Crash when saving a game

Reported by: neuromancer Owned by: dreammaster
Priority: normal Component: Engine: GLK: Glulxe
Version: Keywords:
Cc: Game: GLK GLULXE Game

Description

To reproduce (I'm using 78ee37a1e305fa516d88089f7165271ff0cdb9a6):

  1. Download Toby's Nose: https://ifdb.org/viewgame?id=xf5y04yekcrqtnc
  2. Add it and start the game
  3. Press Ctrl + F5 and save the game.

It crashes:

Thread 1 "scummvm" received signal SIGSEGV, Segmentation fault.
0x00005555647dbf1c in Glk::Glulx::Glulx::write_stackstate (this=0x51e000207c80, dest=0x7fffeed484d0, portable=1) at engines/glk/glulx/serial.cpp:687
687			        frm != 0 && (frm2 = Stk4(frm - 4)) != lastframe;
(gdb) bt
#0  0x00005555647dbf1c in Glk::Glulx::Glulx::write_stackstate (this=0x51e000207c80, dest=0x7fffeed484d0, portable=1) at engines/glk/glulx/serial.cpp:687
#1  0x00005555647d5a56 in Glk::Glulx::Glulx::saveGameChunks (this=0x51e000207c80, quetzal=...) at engines/glk/glulx/serial.cpp:331
#2  0x0000555564b2ed4a in Glk::GlkEngine::saveGameState (this=0x51e000207c80, slot=3, desc=..., isAutosave=false) at engines/glk/glk.cpp:218
#3  0x0000555565a13d74 in MainMenuDialog::save (this=0x5100000d9040) at engines/dialogs.cpp:219
#4  0x0000555565a0c9a3 in MainMenuDialog::handleCommand (this=0x5100000d9040, sender=0x5160008eb518, cmd=1396790853, data=0) at engines/dialogs.cpp:113
#5  0x0000555565b32549 in GUI::CommandSender::sendCommand (this=0x5160008eb518, cmd=1396790853, data=0) at ./gui/object.h:54
#6  0x0000555565ea0571 in GUI::ButtonWidget::handleMouseUp (this=0x5160008eb380, x=259, y=26, button=1, clickCount=1) at gui/widget.cpp:408
#7  0x0000555565af69c9 in GUI::Dialog::handleMouseUp (this=0x5100000d9040, x=397, y=476, button=1, clickCount=1) at gui/dialog.cpp:233
#8  0x0000555565b2bb90 in GUI::GuiManager::processEvent (this=0x51d0000bcc80, event=..., activeDialog=0x5100000d9040) at gui/gui-manager.cpp:892
#9  0x0000555565b194f4 in GUI::GuiManager::runLoop (this=0x51d0000bcc80) at gui/gui-manager.cpp:594
#10 0x0000555565aef506 in GUI::Dialog::runModal (this=0x5100000d9040) at gui/dialog.cpp:78
#11 0x0000555565a469e4 in Engine::runDialog (this=0x51e000207c80, dialog=...) at engines/engine.cpp:811
#12 0x0000555565a41a7d in Engine::openMainMenuDialog (this=0x51e000207c80) at engines/engine.cpp:724
#13 0x00005555661b1cc4 in DefaultEventManager::pollEvent (this=0x50d000007540, event=...) at backends/events/default/default-events.cpp:149
#14 0x0000555564b1b634 in Glk::Events::pollEvents (this=0x511000081000) at engines/glk/events.cpp:183
#15 0x0000555564b19a15 in Glk::Events::getEvent (this=0x511000081000, event=0x7fffeee8a900, polled=false) at engines/glk/events.cpp:126
#16 0x0000555564b420f0 in Glk::GlkAPI::glk_select (this=0x51e000207c80, event=0x7fffeee8a900) at engines/glk/glk_api.cpp:689
#17 0x00005555652a2f06 in Glk::GlkAPI::gidispatch_call (this=0x51e000207c80, funcnum=192, numargs=5, arglist=0x50e000222900) at engines/glk/glk_dispa.cpp:815
#18 0x0000555564e38b28 in Glk::Glulx::Glulx::perform_glk (this=0x51e000207c80, funcnum=192, numargs=1, 
    arglist=0x55557cb94640 <Glk::Glulx::Glulx::pop_arguments(unsigned int, unsigned int)::statarray>) at engines/glk/glulx/glkop.cpp:215
#19 0x0000555564e1ee7f in Glk::Glulx::Glulx::execute_loop (this=0x51e000207c80) at engines/glk/glulx/exec.cpp:638
#20 0x00005555647ca0bb in Glk::Glulx::Glulx::runGame (this=0x51e000207c80) at engines/glk/glulx/glulx.cpp:68
#21 0x0000555564b2c69d in Glk::GlkEngine::run (this=0x51e000207c80) at engines/glk/glk.cpp:148
#22 0x0000555562c84416 in runGame (enginePlugin=0x50300000ca90, system=..., game=..., meDescriptor=0x50d000031c80) at base/main.cpp:311
#23 0x0000555562c91a71 in scummvm_main (argc=4, argv=0x7fffffffe7b8) at base/main.cpp:796
#24 0x0000555562c73c97 in main (argc=4, argv=0x7fffffffe7b8) at backends/platform/sdl/posix/posix-main.cpp:44

The same will happen if the autosave is triggered.

Change History (2)

comment:1 by tag2015, 3 months ago

Also check #14859 which contains useful info

comment:2 by neuromancer, 3 months ago

Actually, it is a duplicated of #14859, so it makes sense to close this one. I will let dreammaster to handle this since the ticket is assigned to him.

Note: See TracTickets for help on using tickets.