Opened 12 years ago

Closed 12 years ago

Last modified 12 years ago

#3569 closed defect (fixed)

QUEEN: Lockup on quit

Reported by: raziel- Owned by: fingolfin
Priority: normal Component: Engine: Queen
Keywords: Cc:
Game: Flight of the Amazon Queen


ScummVM 0.12.0svn (Jan 18 2008 09:58:42) Features compiled in: Vorbis FLAC MP3 zLib MPEG2

When i start FotAQ and go directly to the notebook (via skipping the intro sequences with ESC) and choose "Give up" followed by "Yes" i get two lines from the console

pure virtual method called terminate called without an active exception

followed by a lockup of ScummVM.

Flight of the Amazon Queen (Talkie/DOS/English) (NOT crunched, this is the unpacked version queen.1)

AmigaOS4 gcc version 4.0.2 (AmigaOS build 20051012)

Ticket imported from: #1874516. Ticket imported from: bugs/3569.

Change History (14)

comment:1 by SF/clemty, 12 years ago

this seems to be similar to bug 1858080 :

but I thought that was fixed?

comment:2 by raziel-, 12 years ago

This only occurs when quitting from the journal by either pressing F5 and/or going there through the journal icon and using "Give Up"

comment:3 by spookypeanut, 12 years ago

I see this on 32 bit Linux: seg fault when exiting queen through the journal. Backtrace:

#0 0xb7ced159 in ?? () from /lib/tls/i686/cmov/ #1 0x084551e6 in Queen::MidiMusic::send (this=0x8973b38, b=31664) at engines/queen/music.cpp:156 #2 0x0812c9ce in MidiDriver::send (this=0x8973b38, status=176 '�', firstOp=123 '{', secondOp=0 '\0') at ./sound/mididrv.h:190 #3 0x085c518d in MidiParser::allNotesOff (this=0x8977828) at sound/midiparser.cpp:276 #4 0x08130b0f in ~MidiParser (this=0x8977828) at ./sound/midiparser.h:356 #5 0x085c73ef in ~MidiParser_SMF (this=0x8977828) at sound/midiparser_smf.cpp:57 #6 0x08455d86 in ~MidiMusic (this=0x8973b38) at engines/queen/music.cpp:95 #7 0x0843575e in ~PCSound (this=0x8973b10) at engines/queen/sound.cpp:164 #8 0x08437147 in ~MP3Sound (this=0x8973b10) at engines/queen/sound.cpp:65 #9 0x084333cd in ~QueenEngine (this=0x88ec540) at engines/queen/queen.cpp:128 #10 0x0805323b in runGame (plugin=0x88651f0, system=@0x88342e0, edebuglevels=@0xbfe1a424) at base/main.cpp:224 #11 0x080539cb in scummvm_main (argc=1, argv=0xbfe1a7f4) at base/main.cpp:310 #12 0x080509e6 in main (argc=1, argv=0xbfe1a7f4) at backends/platform/sdl/main.cpp:108

When music is turned off, the game exits normally.

comment:4 by raziel-, 12 years ago

Heres my stack backtrace (AmigaOS4 PPC):

Crash log for task "scummvm" Generated by GrimReaper 52.3 Crash occured in module at address 0x00000000 Type of crash: ISI (Instruction Storage Interrupt) exception

Register dump: GPR (General Purpose Registers): 0: 5F660024 5F5E3100 22000001 5F660024 00007BB0 0000007B 00000000 5F660018 8: 00000000 5F65FF68 5FD246D0 00000000 5F660018 5DEF8C18 00000000 00000000 16: 7CCF80D0 7CCF8020 7CCFFD18 00000003 00000000 5E6CE9D0 00000000 00000001 24: 02250000 02250000 5FBE0000 5DD7A020 48012F48 5F2A710C 5F2A1C00 5F5E3100

FPR (Floating Point Registers, NaN = Not a Number): 0: nan -0.0122715 3.83476e-17 1.35004e-08 4: 4.01381e-05 -7.45058e-08 0.00826446 0.584962 8: -10 -3.3335e-19 -0.0122715 -3.08017e-07 12: 63 0.0234375 nan nan 16: nan nan nan -1.05656e+270 20: nan nan nan nan 24: -8.98847e+307 nan -1.94906e+289 nan 28: -8.98847e+307 nan 0 1.1

FPSCR (Floating Point Status and Control Register): 0x82004000

SPRs (Special Purpose Registers): Machine State (msr) : 0x1000F030 Condition (cr) : 0x28012F24 Instruction Pointer (ip) : 0x00000000 Xtended Exception (xer) : 0x00000014 Count (ctr) : 0x00000000 Link (lr) : 0x7D1B7CAC DSI Status (dsisr) : 0x00017C00 Data Address (dar) : 0x80001AE0

680x0 emulated registers: DATA: 01A02288 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ADDR: 5F5E3F58 008F2AD7 01A02288 00000000 00000000 00000000 6FF951AC 5F5E3D98 FPU0: 0 0 0 0 FPU4: 0 0 0 0

Symbol info: Instruction pointer 0x00000000 belongs to module "" (HUNK/Kickstart)

Stack trace:

scummvm:_ZN10MidiDriver4sendEhhh()+0x78 (section 1 @ 0x129f74) scummvm:_ZN10MidiParser11allNotesOffEv()+0x1EC (section 1 @ 0x6ea648) scummvm:_ZN10MidiParserD2Ev()+0x30 (section 1 @ 0x12fbd8) scummvm:_ZN14MidiParser_SMFD0Ev()+0x54 (section 1 @ 0x6ec5f4) scummvm:_ZN5Queen9MidiMusicD0Ev()+0x118 (section 1 @ 0x4bf8ac) scummvm:_ZN5Queen7PCSoundD2Ev()+0x60 (section 1 @ 0x492d98) scummvm:_ZN5Queen7SBSoundD0Ev()+0x34 (section 1 @ 0x495bb8) scummvm:_ZN5Queen11QueenEngineD0Ev()+0x1E0 (section 1 @ 0x48e5d0) scummvm:_Z7runGamePK6PluginR7OSystemRKN6Common6StringE()+0x94C (section 1 @ 0xb104) scummvm:scummvm_main()+0x578 (section 1 @ 0xb850) scummvm:main()+0x94 (section 1 @ 0x7d8c) native kernel module newlib.library.kmod+0x00000de4 native kernel module newlib.library.kmod+0x00002348 native kernel module newlib.library.kmod+0x000026f4 scummvm:__newlib_exit.14901()+0x18 (section 1 @ 0x11c) native kernel module kernel+0x0003b468 native kernel module kernel+0x0003c528 native kernel module kernel+0x0004ef8c

PPC disassembly: fffffff8: XXXXXXXX illegal address fffffffc: XXXXXXXX illegal address 00000000: XXXXXXXX illegal address 00000004: XXXXXXXX illegal address 00000008: XXXXXXXX illegal address

System information:

CPU Model: IBM PowerPC 750 GX V1.1 CPU speed: 800 MHz FSB speed: 133 MHz Extensions: performancemonitor

Machine Machine name: AmigaOne Memory: 1048576 KB Extensions: bus.pci bus.agp

comment:5 by fingolfin, 12 years ago

While I can't reproduce the issue myself, I just commited a potential fix to the trunk. Please try it and tell me whether it helps.

comment:6 by raziel-, 12 years ago

Fixed in latest revision (AmigaOS4), thanks a lot fingolfin

comment:7 by sev-, 12 years ago

Owner: set to fingolfin
Resolution: fixed
Status: newclosed

comment:8 by fingolfin, 12 years ago

Status: closednew

comment:9 by fingolfin, 12 years ago

Actually, I didn't close this yet on purpose since I did not yet had a chance to backport the fix to the 0.11.x branch.

comment:10 by fingolfin, 12 years ago

Status: newclosed

comment:11 by SF/uweryssel, 12 years ago

I had the same problem, while compiling and testing for AmigaOS3. Quitting results in "pure virtual method called".

I have found the bug before I read this report. And I have found the same solution. :-)

Because fingolfin says that he can't reproduce the bug, here is the cause of the crash:

In MidiMusic's destructor (queen/music.cpp):

delete _driver; // driver deleted delete _parser; calls ~MidiParser() calls MidiParser::allNotesOff() calls _driver->send(a,b,c) // _driver is the MidiMusic object this is MidiDriver::send(a,b,c) // in sound/mididrv.h calls MidiMusic::send(a) calls _driver->send(a); // here _driver is the deleted _driver -->pure virtual method called

So the _parser destructor calls a method of the deleted _driver object, which results in the specified error.

comment:12 by fingolfin, 12 years ago

As this bug has been fixed some time ago: Any particular reason for your report? Are you saying there is yet another one we didn't fix yet?

comment:13 by SF/uweryssel, 12 years ago

There is no new bug. You have written that you can't reproduce the bug, but you think you have fixed it. The only reason that I've written the comment is to reproduce the bug in the source code and to say that the bug is fixed really.

comment:14 by fingolfin, 12 years ago

Ah OK... But how did you think did I come up with the fix and the conclusion that it fixed the issue? I analyzed the code and came up with the fix that way... So you just replicated my work ;-). But last time, there was a second bug after the first one. Hence it would really be more helpful if somebody could actually verify (by trying it out) that the bug is fixed. ;-)

Note: See TracTickets for help on using tickets.