Opened 14 years ago
Closed 14 years ago
#4538 closed defect (fixed)
DW: Crasher bug in act 2
|Reported by:||SF/directhex||Owned by:||dreammaster|
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.
Change History (22)
by , 14 years ago
comment:1 by , 14 years ago
|Summary:||Crasher bug in act 2 → DW: Crasher bug in act 2|
comment:2 by , 14 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 , 14 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 , 14 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 , 14 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.
comment:6 by , 14 years ago
|Status:||new → pending|
comment:7 by , 14 years ago
comment:8 by , 14 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 , 14 years ago
MD5 list of GRA version files
comment:9 by , 14 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 , 14 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 , 14 years ago
|Status:||pending → new|
comment:12 by , 14 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 , 14 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 , 14 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 , 14 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 , 14 years ago
HIgh debug level log until crash
comment:16 by , 14 years ago
There we go. It's about a meg uncompressed which is more than SF would have let me upload
comment:17 by , 14 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 , 14 years ago
That's done it, all fixed now!
comment:19 by , 14 years ago
|Status:||new → closed|
Save game near crasher