Opened 9 days ago

Last modified 5 days ago

#12057 new defect

TWINE: Crash near ferry

Reported by: vvs- Owned by:
Priority: normal Component: Engine: TwinE
Version: Keywords:
Cc: Game: Little Big Adventure

Description

Trying to speak with ferry captain produced a crash.

Attachments (1)

lba.000 (5.9 KB ) - added by vvs- 9 days ago.
save game before a crash

Download all attachments as: .zip

Change History (4)

by vvs-, 9 days ago

Attachment: lba.000 added

save game before a crash

comment:1 by vvs-, 8 days ago

Unfortunately, this is not easily reproducible from the saved game. Though, I was able to crash it again after many attempts. Alas, I don't have ScummVM compiled with debug information. But anyway, here is backtrace:

#5 0x09e76258 in SurfaceSdlGraphicsManager::copyRectToScreen(void const*, int, int, int, int, int) ()
#6 0x0993577b in TwinE::TwinEEngine::copyBlockPhys(int, int, int, int, bool) ()
#7 0x09935825 in TwinE::TwinEEngine::copyBlockPhys(Common::Rect const&, bool) ()
#8 0x09945ebc in TwinE::Redraw::drawBubble(int) ()
#9 0x0995bf20 in TwinE::lMESSAGE(TwinE::TwinEEngine*, TwinE::LifeScriptContext&) ()
#10 0x0995ecf6 in TwinE::ScriptLife::processLifeScript(int) ()
#11 0x09935b86 in TwinE::TwinEEngine::runGameEngine() ()
#12 0x09936901 in TwinE::TwinEEngine::gameEngineLoop() ()
#13 0x09938cd5 in TwinE::TwinEEngine::run() ()
#14 0x080923b7 in runGame(Plugin const*, OSystem&, Common::String const&) ()
#15 0x080940ff in scummvm_main ()
#16 0x08068f77 in main ()

comment:2 by mgerhardy, 6 days ago

It most likely depends on the location of the text bubble on the screen. Is this a release build? I'm asking because there should be an assert to catch a potential error in copyBlockPhys() already. This it looks like this isn't triggered.

It looks suspicious, that we are validating a different rect in Redraw::drawBubble than we sending over to the copyBlockPhys call.

Talking about:

if (_engine->_interface->textWindow.left <= _engine->_interface->textWindow.right && _engine->_interface->textWindow.top <= _engine->_interface->textWindow.bottom) {

_engine->copyBlockPhys(renderRect, true);

}

should maybe be

if (renderRect.left <= renderRect.right && renderRect.top <= renderRect.bottom) {

_engine->copyBlockPhys(renderRect, true);

}

comment:3 by vvs-, 5 days ago

Is this a release build?

It's configured with --enable-release. I could try a debug build instead, but I doubt this would help in this particular case.

Note: See TracTickets for help on using tickets.