Opened 15 years ago

Closed 15 years ago

Last modified 15 years ago

#1454 closed defect (fixed)

COMI: crash during death sequence

Reported by: SF/khalek Owned by: aquadran
Priority: normal Component: Engine: SCUMM
Keywords: Cc:
Game: Monkey Island 3

Description

There is a reproduceable crash here during the sequence
after taking the spiked drink. This doesn't affect
Kirben on windows and has been reproduced by endy.

Boot param 620 is the easiest way to test it.

Currently its believed that the following change
http://cvs.sourceforge.net/viewcvs.py/scummvm/scummvm/scumm/imuse_digi/dimuse.cpp?r1=1.34&r2=1.35
may have been what introduced the problem. It was not
present with a CVS checkout from the 15th January.

Running via gdb and giving a SIGINT (^C) after the
crash resulted in the following backtrace:

#0 0x401e2236 in __lll_mutex_lock_wait () from
/lib/tls/libpthread.so.0
#1 0x401df71d in _L_mutex_lock_21 () from
/lib/tls/libpthread.so.0
#2 0x4182000c in ?? ()
#3 0x00000428 in ?? ()
#4 0x08363e40 in ?? ()
#5 0x00000004 in ?? ()
#6 0x4018eb18 in ?? () from /usr/lib/libSDL-1.2.so.0
#7 0x083824e8 in ?? ()
#8 0x40185d1c in SDL_mutexP () from
/usr/lib/libSDL-1.2.so.0
#9 0x0804d1bb in
OSystem_SDL_Common::lock_mutex(Mutex*) (this=0x8356090,
mutex=0xfffffffc)
at backends/sdl/sdl-common.cpp:1356
#10 0x081a493f in Common::StackLock::lock() (this=0x0) at
common/util.cpp:119
#11 0x081a48c8 in StackLock (this=0x0,
mutex=0xfffffffc, syst=0x401e5b90)
at common/util.cpp:110
#12 0x0806b4c6 in
Scumm::IMuseDigital::getCurVoiceLipSyncWidth()
(this=0x4) at
scumm/imuse_digi/dimuse.cpp:626

I'm running latest CVS, latest and greatesst from
Debian sid on x86 Linux. This doesn't affect Kirben on
windows and has been reproduced by Endy who is also
running Linux.

Ticket imported from: #896525. Ticket imported from: bugs/1454.

Change History (3)

comment:1 Changed 15 years ago by SF/ender

An update:

This is apparantly due to the do{..} while; in IMuseDigital::callback
getting into an infinite loop.

This loop is due to result (set by _sound->getDataFromRegion)
being set to 0 after result &= ~1 and similar.

comment:2 Changed 15 years ago by SF/ender

Fixed.

comment:3 Changed 15 years ago by SF/ender

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.