Opened 10 years ago

Closed 10 years ago

#4538 closed defect (fixed)

DW: Crasher bug in act 2

Reported by: SF/directhex Owned by: dreammaster
Priority: normal Component: Engine: Tinsel
Keywords: Cc:
Game: Discworld

Description

Version: ScummVM 1.1.0svn43418 (Aug 16 2009 03:41:08)

Bug details: There seems to be a crasher in Discworld, easily found via the attached save game. It's appeared right after entering act 2, then going to the palace. Speak to the guard on the left, pick the jack-in-the-box option (where some of the text strings are shown as !!HIGH_STRING!!), then pick the storm cloud option - the game will crash.

Language: UK English

Version: CD Talkie

Platform: Linux x86-64

Ticket imported from: #2838524. Ticket imported from: bugs/4538.

Attachments (3)

dw.002 (2.9 KB ) - added by SF/directhex 10 years ago.
Save game near crasher
dw1_gra.txt (7.0 KB ) - added by dreammaster 10 years ago.
MD5 list of GRA version files
debuglog.txt.bz2 (6.7 KB ) - added by SF/directhex 10 years ago.
HIgh debug level log until crash

Download all attachments as: .zip

Change History (22)

by SF/directhex, 10 years ago

Attachment: dw.002 added

Save game near crasher

comment:1 by SF/mthreepwood, 10 years ago

Summary: Crasher bug in act 2DW: Crasher bug in act 2

comment:2 by bluegr, 10 years ago

Looks like you got a corrupted game file here. What extensions do your game files have? *.gra or *.scn?

Try recopying english.idx and english.txt from your original game CD

comment:3 by dreammaster, 10 years ago

From the savegame, it looks like it's the GRA version. I tried replicating this bug - I could at least replicate the !!HIGH STRING!! messages - I've already previously applied a bugfix to fix some other !!HIGH STRING!! messages for one of the guard's other conversations, so I'll see about fixing these as well.

I couldn't, however, replicate any crash. If it still occurs if you recopy your data files, maybe you could tell us whether any specific error message is generated in the console when ScummVM exits?

comment:4 by dreammaster, 10 years ago

Directhex - you haven't yet confirmed whether recopying your data files fixed the crash bug or not. Could you please let us know, so I can close this bug report?

comment:5 by dreammaster, 10 years ago

This tracker item is pending response by the submitter; we
cannot continue processing it before that happens. As a
consequence, its status has been set to "Pending". It will
automatically revert to "Open" once a new comment is made to
this item. If no response is made within 14 days, it will
automatically be closed.

Thank you.

comment:6 by dreammaster, 10 years ago

Status: newpending

comment:7 by dreammaster, 10 years ago

Owner: set to dreammaster

comment:8 by SF/directhex, 10 years ago

Re-copying the files doesn't help. That's no guarantee that my disc isn't just scratched, of course.

Are there "known good" MD5sums I should be comparing to?

by dreammaster, 10 years ago

Attachment: dw1_gra.txt added

MD5 list of GRA version files

comment:9 by dreammaster, 10 years ago

I've attached a copy an MD5 list of the files in my GRA version of the game. Since I haven't been able to replicate the crash, I guess you could consider it a 'known good' version. :)

I used md5deep, a freeware md5 tool, to generate the list. See if your files match up.

comment:10 by SF/directhex, 10 years ago

Okay, the md5sums all match up, including what I suspect to be the relevant files (palent.gra and english.idx)

Which suggests it's not a corrupt file issue

comment:11 by dreammaster, 10 years ago

Status: pendingnew

comment:12 by dreammaster, 10 years ago

Pity - I was hoping it would be something simple like that. The next thing to do is if I can get you to ensure the bug occurs on the latest SVN build (this should at least take care of the !!HIGH STRING!!'s being displayed), and let me know what the command console displays when the game crashes. I don't personally have a Linux x86-64 installation to test with, but it may give me some clues as to what's causing the crash.

comment:13 by SF/directhex, 10 years ago

Even worse now - segfaults where it would have shown the HIGH_STRING before.

There's nothing beyond "Segmentation fault"

And, annoyingly, whomever is providing your Ubuntu amd64 daily SVN builds didn't think it was a good idea to leave the executable unstripped for debugging purposes

I'll try compiling myself, whereupon I'm sure it'll work fine

comment:14 by SF/directhex, 10 years ago

I'm shocked - breaks when I compile myself too.

(gdb) bt
#0 0x0000000000b4681b in GetBytes (
scriptCode=0x7fb8a2ffef08 "P\001N\037'\002\024\222\020",
wkEntry=@0x7fffb6c9ae18, ip=@0x7fffb6c9ae20, numBytes=0)
at engines/tinsel/pcode.cpp:476
#1 0x0000000000b4785f in Tinsel::Interpret (coroParam=@0x1ed98c8,
ic=0x1ecdb10) at engines/tinsel/pcode.cpp:542
#2 0x0000000000b37d74 in Tinsel::PolyTinselProcess (coroParam=@0x1e40240,
param=0x1e40258) at engines/tinsel/events.cpp:588
#3 0x0000000000b02372 in Tinsel::Scheduler::schedule (this=0x1bab100)
at engines/tinsel/sched.cpp:185
#4 0x0000000000b187db in Tinsel::TinselEngine::NextGameCycle (this=0x1df3180)
at engines/tinsel/tinsel.cpp:1058
#5 0x0000000000b18b5a in Tinsel::TinselEngine::run (this=0x1df3180)
at engines/tinsel/tinsel.cpp:1009
#6 0x00000000004101c7 in runGame (plugin=0x1a98830, system=@0x1a8b6d0,
edebuglevels=@0x7fffb6c9bf20) at base/main.cpp:216
#7 0x0000000000410a52 in scummvm_main (argc=1, argv=0x7fffb6c9c078)
at base/main.cpp:389
#8 0x000000000040cddf in main (argc=1, argv=0x7fffb6c9c078)
at backends/platform/sdl/main.cpp:108

comment:15 by dreammaster, 10 years ago

Okay, now we're getting closer. It seems likely that the cause of the problem is some code I recently added to allow for script fragments to dynamically be executed in the middle of any given script. It's possible it has some issue with 64-bit systems.

In the case of the !!HIGH STRING!! messages, each workaround consists of two instructions - one to load the correct value, and then a jump that will jump over the original 'incorrect' instruction that would have loaded the incorrect talk message Id.

If you run the game directly with something similar to:
scummvm --debuglevel=9 dw1 > output.txt

This should give you a dump of all script activity - it should give me a better idea of what exactly is happening, and where the error might be.

by SF/directhex, 10 years ago

Attachment: debuglog.txt.bz2 added

HIgh debug level log until crash

comment:16 by SF/directhex, 10 years ago

There we go. It's about a meg uncompressed which is more than SF would have let me upload

comment:17 by dreammaster, 10 years ago

Thanks for that. I think I've identified and corrected the error you experiencing. If you could try updating your codebase and give it a test.

comment:18 by SF/directhex, 10 years ago

That's done it, all fixed now!

comment:19 by dreammaster, 10 years ago

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