Opened 16 years ago

Closed 16 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
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 Changed 16 years ago by SF/ender

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 Changed 16 years ago by SF/quietust

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 Changed 16 years ago by SF/quietust

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

comment:4 Changed 16 years ago by fingolfin

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

comment:5 Changed 16 years ago by Kirben

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 Changed 16 years ago by SF/jamieson630

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

comment:7 Changed 16 years ago by SF/jamieson630

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.