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, 14 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.