Opened 10 years ago

Closed 10 years ago

Last modified 10 years ago

#6671 closed defect (fixed)

RINGWORLD2: Crash during final (?) confrontation

Reported by: eriktorbjorn Owned by: dreammaster
Priority: normal Component: Engine: TsAGE
Version: Keywords:
Cc: Game: Return to Ringworld

Description

During the final (?) confrontation, when Seeker defiantly states that he will not give up the cube, the game may crash with the following assertion:

scummvm: engines/tsage/converse.cpp:251: virtual void TsAGE::SequenceManager::signal(): Assertion `_sceneObject' failed. Aborted

It seems to depend on who is the active character when I enter the room. I couldn't reproduce it as Quinn, but so far it happens every time as Seeker. (I haven't tried as Miranda.)

Ticket imported from: bugs/6671.

Attachments (4)

ringworld2-cd.044 (16.5 KB ) - added by eriktorbjorn 10 years ago.
tsage-debug.patch (2.0 KB ) - added by digitall 10 years ago.
ringworld2-badcase.log (5.6 KB ) - added by digitall 10 years ago.
ringworld2-goodcase.log (7.4 KB ) - added by digitall 10 years ago.

Download all attachments as: .zip

Change History (12)

by eriktorbjorn, 10 years ago

Attachment: ringworld2-cd.044 added

comment:1 by digitall, 10 years ago

Owner: set to dreammaster

comment:2 by digitall, 10 years ago

Reliably replicated as described with attached savegame on latest git master using Linux x86_64.

Checked with valgrind. No issues seen.

This assertion is occurring as the _sceneObject being assigned is NULL and thus when it is dereferenced later in the script, it will fail, hence the non-null assertion.

I have added some debug output to the converse class to track the SequenceManager object's _objectList[] member state. Attaching this patch and two traces from the bad case (with Seeker) and the good case (with Quinn, but have also tested with Miranda and the output is identical).

The main point of difference / deviation seems to be that in the bad case: SequenceManager::remove(_resNum:3402) SequenceManager::attached(_resNum:3400)

slightly before the point of failure, whereas in the good case, this is: SequenceManager::remove(_resNum:3402) SequenceManager::attached(_resNum:3408)

by digitall, 10 years ago

Attachment: tsage-debug.patch added

comment:3 by digitall, 10 years ago

Patch and logs follow:

by digitall, 10 years ago

Attachment: ringworld2-badcase.log added

comment:4 by digitall, 10 years ago

Bad log:

by digitall, 10 years ago

Attachment: ringworld2-goodcase.log added

comment:5 by digitall, 10 years ago

Good log:

comment:6 by digitall, 10 years ago

Sorry about the multiple comments... Allura seems to not allow multiple attachments per comment despite saying "Add attachments" i.e. plural. SIGH.

comment:7 by dreammaster, 10 years ago

Resolution: fixed
Status: newclosed

comment:8 by dreammaster, 10 years ago

Thanks for the assistance with the analysis. It made figuring out the problem much easier.

Note: See TracTickets for help on using tickets.