#1029 closed defect (fixed)
SIMON1DOS: Fatal crashes with French version
Reported by: | SF/jamieson630 | Owned by: | Kirben |
---|---|---|---|
Priority: | normal | Component: | Engine: AGOS |
Version: | Keywords: | ||
Cc: | Game: | Simon the Sorcerer 1 |
Description
This is a reincarnation of Bug [750091], with additional information. The original bug report relates to a crash during the opening cutscene, when the goblins have Simon in a pot and one of them tries to push his head under the water.
Apparently there is a second crash point, during the opening credits, at the moment when the rabbit is going to hop away from Chippy the dog. Both these crashes seem to occur only with the French version (or at least, not with the English version), and only with simon1dos (or at least, not with simon1win). Both crashes seem to also be related to stack corruption that thus far has made a backtrace impossible Furthermore, both these crashes can be recreated in the original distro, i.e. they are not specific to ScummVM.
However, I feel that NO fatal crash should be tolerated in ScummVM, even if it is related to, say, a problematic script that is producing OOB values or such. Hence the new bug report. I think one way or another, we need to identify where bad values are causing stack corruption and add some checks to (1) ignore the script call, or (2) put the OOB value in bounds so that it can be used to complete the call.
If the fix causes the scripts to behave incorrectly, well, that's fine, as long as ScummVM itself isn't blowing up. But a page fault or segfault really makes ScummVM look bad, even if it's not really its fault.
Since stack corruption is making a backtrace at the point of crash impossible, I wonder if someone with valgrind can run through the simon1dos (French version) intro credits/cutscene and see if they can nab some OOB memory access?
Kirben, I'm assigning this to you just so you start getting the e-mails related to it. If you want to kick it back into my court, that's fine.
Ticket imported from: #770838. Ticket imported from: bugs/1029.
Change History (5)
comment:1 by , 21 years ago
Owner: | set to |
---|
comment:2 by , 21 years ago
comment:3 by , 21 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:4 by , 19 years ago
Component: | Engine: AGOS → Engine: AGI |
---|---|
Game: | Simon the Sorcerer 1 → Space Quest 1 |
comment:5 by , 18 years ago
Component: | Engine: AGI → Engine: AGOS |
---|---|
Game: | Space Quest 1 → Simon the Sorcerer 1 |
Thanks to khalek's valgrind efforts, the obscure source of the crashes has been located and fixed in latest CVS. It seems whitespace in the French subtitles is not always getting detected properly, and in some cases this caused seemingly non-breakable strings of text to exceed the maximum characters per line. We weren't checking for this, resulting in an underflow, a bad strncpy(), and general chaos.
With the fix, the French version of simon1dos will not crash, but the problematic subtitles may display with an extra blank line. Since the original distro couldn't handle them AT ALL, I'm not going to sweat that.