Opened 12 years ago

Closed 12 years ago

#3978 closed defect (fixed)

COMI: Crash after video (SAN) play

Reported by: SF/noizje Owned by: eriktorbjorn
Priority: normal Component: Engine: SCUMM
Keywords: Cc:
Game: Monkey Island 3

Description

After playing a video in COMI, like intro, or in game ScummVM crashes with following message:

(9:131:0x133): Unknown Chunk found at 46b78c: 0, 0!

Using latest svn build.

Ticket imported from: #2123258. Ticket imported from: bugs/3978.

Change History (9)

comment:1 by fingolfin, 12 years ago

Component: Engine: SCUMM
Game: Monkey Island 3
Summary: SCUMM: Crash after video (SAN) playCOMI: Crash after video (SAN) play

comment:2 by fingolfin, 12 years ago

To process your bug report appropriately, we need you to provide the following additional information:

* ScummVM version (PLEASE test the latest CVS/Daily build) * Bug details, including instructions on reproducing it * Language of game (English, German, ...) * Version of game (talkie, floppy, ...) * Platform and Compiler (Win32, Linux, MacOS, ...) * Attach a save game if possible * If this bug only occurred recently, please note the last version without the bug, and the first version including the bug. That way we can fix it quicker by looking at the changes made.

This should only take you a little time but will make it much easier for us to process your bug report in a way that satisfies both you and us.

Thank you for your support!

comment:3 by SF/noizje, 12 years ago

English version of COMI. Running on Win32, latest build (24 spetember) No need for a savegame. It happens with all video's. Just before finishing the video, ScummVM crashes with the error. I tried 0.12.0, and the error doesn't show.

comment:4 by SF/noizje, 12 years ago

English version of COMI. Running on Win32, latest build (24 spetember) No need for a savegame. It happens with all video's. Just before finishing the video, ScummVM crashes with the error. I tried 0.12.0, and the error doesn't show.

comment:5 by eriktorbjorn, 12 years ago

I guess it's because of the recent stream changes. Right now, parseNextFrame() looks roughly like this:

void SmushPlayer::parseNextFrame() { if (_seekPos >= 0) { ... go to a different part of the movie }

if (_base->eos()) { ... end the movie return; }

... read and parse the next frame }

I.e. it seems to assume that eos() returns true as soon as the last byte of the stream has been read. But according to the documentation, eos() returns true only after you've tried reading *past* the end of the stream.

So maybe simply move that check until after reading subType, subSize and subOffset? That seems to work, but it's way past my bed time, so I'm not going to commit it now.

comment:6 by wjp, 12 years ago

eriktorbjorn: yes, that sounds correct.

comment:7 by eriktorbjorn, 12 years ago

Since no one has suggested any better ideas, I'm committing that change now.

comment:8 by eriktorbjorn, 12 years ago

Owner: set to eriktorbjorn
Resolution: fixed

comment:9 by eriktorbjorn, 12 years ago

Status: newclosed
Note: See TracTickets for help on using tickets.