Opened 16 years ago

Closed 16 years ago

Last modified 13 years ago

#1029 closed defect (fixed)

SIMON1DOS: Fatal crashes with French version

Reported by: SF/jamieson630 Owned by: Kirben
Priority: normal Component: Engine: AGOS
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 SF/jamieson630, 16 years ago

Owner: set to Kirben

comment:2 by SF/jamieson630, 16 years ago

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.

comment:3 by SF/jamieson630, 16 years ago

Resolution: fixed
Status: newclosed

comment:4 by fingolfin, 15 years ago

Component: Engine: AGOSEngine: AGI
Game: Simon the Sorcerer 1Space Quest 1

comment:5 by Kirben, 13 years ago

Component: Engine: AGIEngine: AGOS
Game: Space Quest 1Simon the Sorcerer 1
Note: See TracTickets for help on using tickets.