Opened 18 years ago

Closed 18 years ago

Last modified 21 months ago

#249 closed defect (fixed)

INDY3: crash when fighting boxer

Reported by: SF/matt_hargett Owned by: fingolfin
Priority: normal Component: Engine: SCUMM
Keywords: Cc:
Game: Indiana Jones 3

Description

In indy3-256 ("Detected game 'Indiana Jones and the Last Crusade (256)', version 3.0.22"):

1. start the game 2. let the intro finish 3. once in the gym, walk into the locker room 4. walk in to the locker room again (another bug) 5. after entering the boxing ring, choose "I'm out of shape, go easy on me!"

result: first, I see this message in the output window: "WARNING: getResourceAddress Illegal Glob type String (7) num 16385!"

then, a crash.

investigation in the debugger shows:

Scumm::addMessageToStack(unsigned char * 0xda1aff30) line 570 + 17 bytes Scumm::unkAddMsgToStack5(int 0x00004001) line 706 + 30 bytes Scumm::addMessageToStack(unsigned char * 0x02c4b4c8) line 611 + 78 bytes Scumm::drawString(int 0x00000001) line 451 + 55 bytes Scumm::decodeParseString() line 2729 + 28 bytes Scumm::o5_print() line 1741 + 14 bytes Scumm::executeScript() line 280 + 14 bytes Scumm::runScriptNested(int 0x00000004) line 195 + 14 bytes Scumm::runScript(int 0x00000029, int 0x00000000, int 0x00000000, short * 0x0013fd58) line 66 + 30 bytes Scumm::o5_startScript() line 2261 + 78 bytes Scumm::executeScript() line 280 + 14 bytes Scumm::runScriptNested(int 0x00000002) line 195 + 14 bytes Scumm::runScript(int 0x00000023, int 0x00000000, int 0x00000000, short * 0x0013fdf4) line 66 + 30 bytes Scumm::o5_startScript() line 2261 + 78 bytes Scumm::executeScript() line 280 + 14 bytes Scumm::runAllScripts() line 583 + 14 bytes

The pointer passed into addMessageToStack is bogus. It comes from string.cpp, line 704. where getStringAddress is called on variable 16385. The resulting pointer is the bogus one.

Because the pointer is reading from a bogus pointer, there is a possibility this won't cause a crash on some machines/platforms and instead just behave oddly.

Ticket imported from: #555317. Ticket imported from: bugs/249.

Change History (6)

comment:1 by SF/khalek_, 18 years ago

although this is a decent bug report you shouldn't be filing it against a game that isn't supported :)

quoting from readme.txt: "The following games should load, but are not yet fully playable. Play these at your own risk, and please do not file bug reports about them. If you want the latest updates on game compatibility, visit our web site and view the compatibility chart.

Monkey Island 1 (VGA floppy)
[Game: monkeyvga] Indiana Jones and the Last Crusade (256 color) [Game: indy3] Full Throttle
[Game: ft] The Dig
[Game: dig]"

comment:2 by fingolfin, 18 years ago

Just FYI: The address 16385 = 0x2000 +1 - we use 0x2000 as a flag, so using this var ID is legal.

comment:3 by fingolfin, 18 years ago

Summary: indy3: crash when fighting boxerINDY3: crash when fighting boxer

comment:4 by fingolfin, 18 years ago

Owner: set to fingolfin
Resolution: fixed
Status: newclosed

comment:5 by fingolfin, 18 years ago

Fixed in CVS.

comment:6 by digitall, 21 months ago

Component: Engine: SCUMM
Game: Indiana Jones 3
Note: See TracTickets for help on using tickets.