Opened 13 years ago

Closed 13 years ago

#2887 closed defect (fixed)

FT: Crash when going on the road

Reported by: (none) Owned by: fingolfin
Priority: normal Component: Engine: SCUMM
Keywords: Cc:
Game: Full Throttle

Description

ScummVM 0.10.0svn (Oct 29 2006 17:06:54)
Features compiled in: Vorbis FLAC MP3 zLib MPEG2

When Ben goes riding on the road (highway)
the game crashes with an
assertion "_dataSize > 0" failed: file "engines/scumm/smush/saud_channel.cpp", line 175

English (Version A) Talkie-CD

AmigaOS4
gcc version 4.0.2 (AmigaOS build 20051012)

This bug must have been introduced lately
it wasn't there in the pre0.9.1 SVN's

Ticket imported from: #1586894. Ticket imported from: bugs/2887.

Attachments (2)

FT.log (7.6 KB ) - added by SF/*anonymous 13 years ago.
Debug log (-d3)
ft.s07 (24.5 KB ) - added by SF/*anonymous 13 years ago.
Hit the road

Download all attachments as: .zip

Change History (10)

by SF/*anonymous, 13 years ago

Attachment: FT.log added

Debug log (-d3)

by SF/*anonymous, 13 years ago

Attachment: ft.s07 added

Hit the road

comment:1 by fingolfin, 13 years ago

Likely caused by my recent SMUSH cleanup. Haven't had time to look into this yet, though.

comment:2 by eriktorbjorn, 13 years ago

Works for me with revision 24541, but not 24542. The commit
message was "SCUMM: Further SMUSH audio channel cleanup;
this time unified some code, and got rid of one set of
memory buffers".

comment:3 by eriktorbjorn, 13 years ago

Simply removing the assert() allowed me to get across the
gorge. The only thing I noticed was that the music kept
playing in a scene where I'm not sure it should have.

But I don't understand the SMUSH player anywhere near enough
to commit a change like that, because I assume the assertion
was added for a reason...

comment:4 by fingolfin, 13 years ago

That assert wasn't added, it was there before (just in the form of an if(...) error(...); statement).

If it triggers, then that means that the channel believes it has run out of data. Normally, if you remove the assert I'd expect lots of static ?!? but
maybe I messed up some part of the internal logic during my rewrite.

comment:5 by fingolfin, 13 years ago

Oh wait, I missed that the error is in SaudChannel, were the assert wasn't there before, and which I switched from 16 bit stereo to 8bit mono. So it
might well be that something went wrong while doing that conversion.

comment:6 by eriktorbjorn, 13 years ago

For me, the error only happens when going towards the mink
farm, not the gorge. The _dataSize variable is initialized
to -1 by the SaudChannel constructor, and then to -2 by
SaudChannel::setParameters(). After that, getSoundData() is
called repeatedly, but _dataSize remains unchanged.

(I'm using compressed files, if that makes any difference.)

comment:7 by fingolfin, 13 years ago

You are right. I changed it to only assert when _keepSize is set to false. Alas, that code still is in need of further cleanup, I'd say :)

comment:8 by fingolfin, 13 years ago

Owner: set to fingolfin
Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.