Opened 9 months ago

Last modified 8 months ago

#13221 new defect

SCUMM: Monkey Island 2 Segfault (Midi related)

Reported by: mgerhardy Owned by:
Priority: normal Component: Engine: SCUMM
Version: Keywords:
Cc: Game: Monkey Island 2

Description

ScummVM version 2.5.0 (debian testing)

Thread 1 "scummvm" received signal SIGSEGV, Segmentation fault.
0x00005555558deb3a in Scumm::IMuseInternal::reallocateMidiChannels (this=0x0, midi=0x0) at engines/scumm/imuse/imuse.cpp:1713
1713				if (part->_player && part->_player->getMidiDriver() == midi &&
(gdb) bt
#0  0x00005555558deb3a in Scumm::IMuseInternal::reallocateMidiChannels (this=0x0, midi=0x0) at engines/scumm/imuse/imuse.cpp:1713
#1  0x00005555558e053f in Scumm::Part::clearToTransmit (this=0x555557351888) at engines/scumm/imuse/imuse_part.cpp:334
#2  0x00005555558e0562 in Scumm::Part::sendAll (this=0x555557351888) at engines/scumm/imuse/imuse_part.cpp:339
#3  0x00005555558dfe17 in Scumm::Part::fix_after_load (this=0x555557351888) at engines/scumm/imuse/imuse_part.cpp:189
#4  0x00005555558dea2c in Scumm::IMuseInternal::fix_parts_after_load (this=0x555557350ac0) at engines/scumm/imuse/imuse.cpp:1674
#5  0x00005555558dae56 in Scumm::IMuseInternal::saveLoadIMuse (this=0x555557350ac0, s=..., scumm=0x5555572e4000, fixAfterLoad=true) at engines/scumm/imuse/imuse.cpp:445
#6  0x000055555585b815 in Scumm::ScummEngine::saveLoadWithSerializer (this=0x5555572e4000, s=...) at engines/scumm/saveload.cpp:1500
#7  0x000055555585bbea in Scumm::ScummEngine_v5::saveLoadWithSerializer (this=0x5555572e4000, s=...) at engines/scumm/saveload.cpp:1563
#8  0x000055555585687c in Scumm::ScummEngine::loadState (this=0x5555572e4000, slot=1, compat=false, filename=...) at engines/scumm/saveload.cpp:450
#9  0x00005555558562d2 in Scumm::ScummEngine::loadState (this=0x5555572e4000, slot=1, compat=false) at engines/scumm/saveload.cpp:321
#10 0x000055555586e32f in Scumm::ScummEngine::go (this=0x5555572e4000) at engines/scumm/scumm.cpp:2384
#11 0x0000555555871a3e in Scumm::ScummEngine::run (this=0x5555572e4000) at ./engines/scumm/scumm.h:335
#12 0x0000555555832683 in runGame (plugin=0x555556a067d0, enginePlugin=0x555556593da0, system=..., debugLevels=...) at base/main.cpp:318
#13 0x0000555555833f33 in scummvm_main (argc=1, argv=0x7fffffffe1f8) at base/main.cpp:626
#14 0x000055555582fb83 in main (argc=1, argv=0x7fffffffe1f8) at backends/platform/sdl/posix/posix-main.cpp:44

Attachments (1)

monkey2-de.s01 (33.6 KB ) - added by mgerhardy 9 months ago.

Download all attachments as: .zip

Change History (3)

by mgerhardy, 9 months ago

Attachment: monkey2-de.s01 added

comment:1 by mgerhardy, 9 months ago

Connected to Alsa sequencer client [14:0]
ALSA client initialized [128:0]

comment:2 by athrxx, 8 months ago

I can't reproduce that with your savegame on Windows, neither with hardware MT-32 nor with the emulator. So, maybe it only happens with ALSA.

Since at least the direct cause of the segfault is kind of obvious from your post (still no idea why _player->_sewould ever be null): Could you please try to change line 333 in imuse_parts.cpp from

if (_instrument.isValid())

to

if (_player && _player->_se && _player->getMidiDriver() && _instrument.isValid())

and see if that solves the issue?

Last edited 8 months ago by athrxx (previous) (diff)
Note: See TracTickets for help on using tickets.