#3569 closed defect (fixed)
QUEEN: Lockup on quit
Reported by: | raziel- | Owned by: | fingolfin |
---|---|---|---|
Priority: | normal | Component: | Engine: Queen |
Version: | Keywords: | ||
Cc: | Game: | Flight of the Amazon Queen |
Description
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 , 17 years ago
comment:2 by , 17 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 , 17 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/libc.so.6 #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 , 17 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 , 17 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:7 by , 17 years ago
Owner: | set to |
---|---|
Resolution: | → fixed |
Status: | new → closed |
comment:8 by , 17 years ago
Status: | closed → new |
---|
comment:9 by , 17 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 , 17 years ago
Status: | new → closed |
---|
comment:11 by , 17 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 , 17 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 , 17 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 , 17 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. ;-)
this seems to be similar to bug 1858080 : http://sourceforge.net/tracker/index.php?func=detail&aid=1858080&group_id=37116&atid=418820
but I thought that was fixed?