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

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 SF/clemty, 12 years ago

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?

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/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 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.