Opened 21 years ago

Closed 21 years ago

#1010 closed defect (fixed)

MI2: Amiga - Segfault when entering bar

Reported by: SF/quietust Owned by: SF/jamieson630
Priority: normal Component: Engine: SCUMM
Version: Keywords:
Cc: Game: Monkey Island 2

Description

When trying to enter the "Bloody Lip Bar and Grill" in the Amiga version of Monkey Island 2, ScummVM crashes.

Fatal signal: Segmentation Fault (SDL Parachute Deployed)

Ticket imported from: #770364. Ticket imported from: bugs/1010.

Change History (7)

comment:1 by SF/ender, 21 years ago

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

* ScummVM version (scummvm -v) * Bug details, including instructions on reproducing it * Language of game (English, German, etc) * Version of game (Talkie, Floppy...) * Platform and Compiler (Win32, Linux, MacOS, etc) * 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:2 by SF/quietust, 21 years ago

ScummVM Version: ScummVM 0.5.0pre-cvs, Built on Jul 13 2003 02:36:02 Also tested with ScummVM 0.5.0pre-cvs Built on Jul 13 2003 20:50:42 Game version: English, floppy (11 disks!) Platform: Win32 (daily snapshot, so I don't know which compiler) Last known working version: Uncertain, as I haven't played the game in a while. I don't recall having problems with the 0.41 release.

Bug details: Start a new game, get past Largo, then go down the hatch into the Bloody Lip Bar and Grill. The program segfaults.

No savegame is necessary, as the crash can be reached from the very beginning of the game within a minute.

In the latest CVS (2nd version tested), I tested it three times; the second time, it worked fine, but the other two times it segfaulted.

comment:3 by SF/quietust, 21 years ago

Internal monkey2 version (checked from the Amiga executable) is "Monkey 2 (v 1.0 4/8/92) 16,44 Regular Mode"

comment:4 by fingolfin, 21 years ago

Summary: MONKEY2: Amiga - Segfault when entering barMI2: Amiga - Segfault when entering bar

comment:5 by Kirben, 21 years ago

Monkey Island 2 Amiga seems to crash at random, seems like resources aren't been read correctly at times. Two examples crashes with back traces:

Program received signal SIGSEGV, Segmentation fault. 0x0041bf75 in CostumeRenderer::proc3_ami() (this=0x312e458) at scumm/costume.cpp:498 498 *dst = _palette[color]; (gdb) bt #0 0x0041bf75 in CostumeRenderer::proc3_ami() (this=0x312e458) at scumm/costume.cpp:498 #1 0x0041b53d in CostumeRenderer::mainRoutine(int, int) (this=0x312e458, xmoveCur=-11, ymoveCur=-46) at scumm/costume.cpp:275 #2 0x0041c2b6 in CostumeRenderer::drawLimb(CostumeData const&, int) ( this=0x312e458, cost=@0x317f176, limb=0) at scumm/costume.cpp:635 #3 0x004726f3 in BaseCostumeRenderer::drawCostume (CostumeData const&) ( this=0x312e458, cost=@0x317f176) at scumm/base- costume.cpp:41 #4 0x004144f8 in Actor::drawActorCostume() (this=0x317f118) at scumm/actor.cpp:970 #5 0x00414232 in Scumm::processActors() (this=0x3119748) at scumm/actor.cpp:873 #6 0x0040e2db in Scumm::scummLoop(int) (this=0x3119748, delta=6) at scumm/scummvm.cpp:1214 #7 0x00411e2b in Scumm::mainRun() (this=0x3119748) at scumm/scummvm.cpp:2486 #8 0x0041212c in Scumm::go() (this=0x3119748) at scumm/scummvm.cpp:2583 #9 0x004c37db in main (argc=2, argv=0x1012510) at common/main.cpp:230

Program received signal SIGTRAP, Trace/breakpoint trap. 0x77f75a59 in _libwinmm_a_iname () (gdb) warning: HEAP[scummvm.exe]: warning: HEAP: Free Heap block 36cab20 modified at 36cab64 after it was freed

bt #0 0x77f75a59 in _libwinmm_a_iname () #1 0x77f9cb5e in _libwinmm_a_iname () #2 0x77f9d959 in _libwinmm_a_iname () #3 0x77f83eb1 in _libwinmm_a_iname () #4 0x77f589f2 in _libwinmm_a_iname () #5 0x77c2aa33 in _libwinmm_a_iname () #6 0x0042ab30 in Scumm::createResource(int, int, unsigned) (this=0x3119748, type=14, idx=1, size=828) at scumm/resource.cpp:1346 #7 0x0040f7b5 in Scumm::initRoomSubBlocks() (this=0x3119748) at scumm/scummvm.cpp:1609 #8 0x0040eb4c in Scumm::startScene(int, Actor*, int) (this=0x3119748, room=2, a=0x317efd8, objectNr=21) at scumm/scummvm.cpp:1353 #9 0x004386da in Scumm_v5::o5_loadRoomWithEgo() (this=0x3119748) at scumm/script_v5.cpp:1325 #10 0x00436443 in Scumm_v5::executeOpcode(unsigned char) (this=0x3119748, i=36) at scumm/script_v5.cpp:362 #11 0x0042f0f7 in Scumm::executeScript() (this=0x3119748) at scumm/script.cpp:424 #12 0x0042eb61 in Scumm::runScriptNested(int) (this=0x3119748, script=7) at scumm/script.cpp:316 #13 0x0042e668 in Scumm::runObjectScript(int, int, bool, bool, int*) ( this=0x3119748, object=202, entry=11, freezeResistant=false, recursive=false, vars=0x22f600) at scumm/script.cpp:116 #14 0x0043a92e in Scumm_v5::o5_startObject() (this=0x3119748) at scumm/script_v5.cpp:2106 #15 0x00436443 in Scumm_v5::executeOpcode(unsigned char) (this=0x3119748, i=247) at scumm/script_v5.cpp:362 #16 0x0042f0f7 in Scumm::executeScript() (this=0x3119748) at scumm/script.cpp:424 #17 0x0042ff3f in Scumm::runAllScripts() (this=0x3119748) at scumm/script.cpp:737 #18 0x0040e0a2 in Scumm::scummLoop(int) (this=0x3119748, delta=6) at scumm/scummvm.cpp:1169 #19 0x00411e2b in Scumm::mainRun() (this=0x3119748) at scumm/scummvm.cpp:2486 #20 0x0041212c in Scumm::go() (this=0x3119748) at scumm/scummvm.cpp:2583 #21 0x004c37db in main (argc=2, argv=0x1012510) at common/main.cpp:230

comment:6 by SF/jamieson630, 21 years ago

Owner: set to SF/jamieson630
Resolution: fixed
Status: newclosed

comment:7 by SF/jamieson630, 21 years ago

Fixed in latest CVS. proc3_ami() wasn't properly masking GFX write operations for negative Y values (off the top of the screen, e.g. where characters enter and exit the Woodtick bar). OOB writes caused it to crash.

I've seen a couple references to a crash in createResource(). If that crash still manifests itself after this fix, it should be reported in a separate bug post.

Note: See TracTickets for help on using tickets.