Opened 2 years ago

Closed 2 years ago

#13642 closed defect (fixed)

MADS: Rex Nebular crashes if autosave triggers during the intro

Reported by: dwatteau Owned by: dwatteau
Priority: normal Component: Engine: MADS
Version: Keywords: autosave
Cc: Game: Rex Nebular

Description

This is on macOS 12.4 (arm64) with ScummVM 2.7.0git-2f15828d5ac.

After adding the game with its default settings and playing the (long!) intro, this crash systematically happens nearly exactly at 5 min 00 (which is my autosave setting in ScummVM).

This is when the guy in red is done saying "You don't have a problem taking a check, do you?" to Rex.

Looking at the timing and the backtrace, I think it's related to the autosave feature causing a problem in this case.

User picked target 'nebular' (engine ID 'mads', game ID 'nebular')...
   Looking for a plugin supporting this target... MADS
Running Rex Nebular and the Cosmic Gender Bender (DOS/English)
section1.hag: 6f725eb38660de8af31ec7cdd628d615, 927222 bytes.
WARNING: Read beyond end of loaded sound data!
WARNING: Read beyond end of loaded sound data!
Process 12297 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
    frame #0: 0x000000010012083c scummvm`MADS::Game::synchronize(this=0x000000010211f800, s=0x000000016fdfcd50, phase1=false) at game.cpp:476:23
   473 			_screenObjects.synchronize(s);
   474 		} else {
   475 			// Load scene specific data for the loaded scene
-> 476 			_scene._sceneLogic->synchronize(s);
   477 		}
   478 	}
   479 	
Target 0: (scummvm) stopped.

(lldb) p s
(Common::Serializer) $0 = (_loadStream = 0x0000000000000000, _saveStream = 0x00006000000203c0, _bytesSynced = 3966, _version = 0)

(lldb) p _scene._sceneLogic
(MADS::SceneLogic *) $2 = nullptr

(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
  * frame #0: 0x000000010012083c scummvm`MADS::Game::synchronize(this=0x000000010211f800, s=0x000000016fdfcd50, phase1=false) at game.cpp:476:23
    frame #1: 0x0000000100033448 scummvm`MADS::Nebular::GameNebular::synchronize(this=0x000000010211f800, s=0x000000016fdfcd50, phase1=false) at game_nebular.cpp:898:8
    frame #2: 0x0000000100120f68 scummvm`MADS::Game::saveGame(this=0x000000010211f800, slotNumber=0, saveName=0x000000016fdfd000) at game.cpp:519:2
    frame #3: 0x0000000100126c14 scummvm`MADS::MADSEngine::saveGameState(this=0x000000010143d770, slot=0, desc=0x000000016fdfd000, isAutosave=true) at mads.cpp:206:9
    frame #4: 0x0000000100166468 scummvm`Engine::saveAutosaveIfEnabled(this=0x000000010143d770) at engine.cpp:616:18
    frame #5: 0x000000010016631c scummvm`Engine::handleAutoSave(this=0x000000010143d770) at engine.cpp:563:3
    frame #6: 0x0000000100202700 scummvm`DefaultEventManager::pollEvent(this=0x00006000030126d0, event=0x000000016fdfd808) at default-events.cpp:87:13
    frame #7: 0x000000010011bff0 scummvm`MADS::EventsManager::pollEvents(this=0x0000600002639320) at events.cpp:139:38
    frame #8: 0x000000010011c42c scummvm`MADS::EventsManager::delay(this=0x0000600002639320, cycles=1) at events.cpp:225:3
    frame #9: 0x000000010011c4c0 scummvm`MADS::EventsManager::waitForNextFrame(this=0x0000600002639320) at events.cpp:240:3
    frame #10: 0x0000000100126db4 scummvm`MADS::MenuView::show(this=0x0000000132804a20) at menu_views.cpp:57:17
    frame #11: 0x000000010002a2b8 scummvm`MADS::Nebular::DialogsNebular::showDialog(this=0x0000600002124550) at dialogs_nebular.cpp:336:9
    frame #12: 0x000000010002f044 scummvm`MADS::Nebular::GameNebular::startGame(this=0x000000010211f800) at game_nebular.cpp:109:18
    frame #13: 0x000000010011f0bc scummvm`MADS::Game::run(this=0x000000010211f800) at game.cpp:121:4
    frame #14: 0x000000010012694c scummvm`MADS::MADSEngine::run(this=0x000000010143d770) at mads.cpp:165:9
    frame #15: 0x0000000100011694 scummvm`runGame(plugin=0x000060000021d8c0, enginePlugin=0x000060000021d4c0, system=0x0000000101405270, debugLevels=0x000000016fdff6a0) at main.cpp:318:33
    frame #16: 0x000000010000fe44 scummvm`::scummvm_main(argc=1, argv=0x000000016fdff8a8) at main.cpp:619:27
    frame #17: 0x000000010000c534 scummvm`main(argc=1, argv=0x000000016fdff8a8) at macosx-main.cpp:44:12
    frame #18: 0x00000001008b108c dyld`start + 520

Change History (1)

comment:1 by dwatteau, 2 years ago

Owner: set to dwatteau
Resolution: fixed
Status: newclosed

Fixed by Filippos in commit e51766c768b9709dbf2d3b11171f42888ba547eb.

Thanks!

Note: See TracTickets for help on using tickets.