Opened 5 years ago

Closed 5 years ago

Last modified 5 years ago

#6671 closed defect (fixed)

RINGWORLD2: Crash during final (?) confrontation

Reported by: eriktorbjorn Owned by: dreammaster
Priority: normal Component: Engine: TsAGE
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 5 years ago.
tsage-debug.patch (2.0 KB) - added by digitall 5 years ago.
ringworld2-badcase.log (5.6 KB) - added by digitall 5 years ago.
ringworld2-goodcase.log (7.4 KB) - added by digitall 5 years ago.

Download all attachments as: .zip

Change History (12)

Changed 5 years ago by eriktorbjorn

Attachment: ringworld2-cd.044 added

comment:1 Changed 5 years ago by digitall

Owner: set to dreammaster

comment:2 Changed 5 years ago by digitall

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)

Changed 5 years ago by digitall

Attachment: tsage-debug.patch added

comment:3 Changed 5 years ago by digitall

Patch and logs follow:

Changed 5 years ago by digitall

Attachment: ringworld2-badcase.log added

comment:4 Changed 5 years ago by digitall

Bad log:

Changed 5 years ago by digitall

Attachment: ringworld2-goodcase.log added

comment:5 Changed 5 years ago by digitall

Good log:

comment:6 Changed 5 years ago by digitall

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

comment:7 Changed 5 years ago by dreammaster

Resolution: fixed
Status: newclosed

comment:8 Changed 5 years ago by dreammaster

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

Note: See TracTickets for help on using tickets.