Opened 4 years ago

Closed 3 years ago

#11236 closed defect (fixed)

ILLUSIONS: Endianness issue in text handling

Reported by: bgK Owned by: dwatteau
Priority: normal Component: Engine: Illusions
Version: Keywords:
Cc: Game:

Description

Duckman Demo, ScummVM 5d0206b9c297837fddb038601bdfb42b0fcb8016 on the PlayStation 3.

This ticket is the result of investigating the user report from here: https://forums.scummvm.org/viewtopic.php?f=4&p=87890

The game enters an infinite loop in TextDrawer::wrapText. This appears to be because TalkThread_Duckman::insertText casts _currEntryText from byte * to uint16 *. The resulting array has different values on little endian and big endian systems.

Attachments (2)

Crashlog_scummvm_2020-07-30_17-33-02.txt (40.5 KB ) - added by raziel- 4 years ago.
Crashlog_scummvm_2020-09-03_08-59-03.txt (41.4 KB ) - added by raziel- 4 years ago.

Download all attachments as: .zip

Change History (10)

comment:1 by raziel-, 4 years ago

ScummVM 2.2.0git (Jul 15 2020 10:24:49)
Features compiled in: Vorbis FLAC MP3 RGB zLib MPEG2 Theora AAC A/52 FreeType2 FriBiDi JPEG PNG cloud (servers, local)

Confirmed with demo on below platform.

I get this on start and running the demo:
User picked target 'duckman-demo' (engine ID 'illusions', game ID 'duckman')...

Looking for a plugin supporting this target... Illusions

WARNING: Unsupported Text stream detected!
_midiMusicCount: 18; midiMusicOffs: 00000010
WARNING: makeWAVStream: Trying to play a WAVE file with an incomplete PCM packet!
WARNING: makeWAVStream: Trying to play a WAVE file with an incomplete PCM packet!
WARNING: makeWAVStream: Trying to play a WAVE file with an incomplete PCM packet!
MidiPlayer::play(000B0011)

Duckman (Demo/Windows/English)

AmigaOS4 - PPC - BE - SDL
gcc (adtools build 8.3.0) 8.3.0

comment:2 by sev-, 4 years ago

Actually, there is the following piece which normalizes endianness:

https://github.com/scummvm/scummvm/blob/master/engines/illusions/resources/talkresource.cpp#L54

comment:3 by sev-, 4 years ago

This was committed recently, in bc85ff1868f13e119b1bb1659f71b9a2fa64bc2d. Does it still hang?

comment:4 by raziel-, 4 years ago

Not at the position OP is metnioning (the rocket exploding).

The screen text is displayed (far too fast to actually be usable) and the guy in his hole finished his "normally working behind a desk" sentence, and THEN it crashes.

See attached crashlog.

This seems to be the same crash as in https://bugs.scummvm.org/ticket/11528
and i think it's related to the OP crash

comment:5 by raziel-, 4 years ago

I left the warning in place from #11528 and it also shows an incredible high number just before crashing.

WARNING: C: 20992!

This happens when the jacuzzi scene ends (i think)

comment:6 by raziel-, 3 years ago

Fixed by the patch from #11528

comment:7 by dwatteau, 3 years ago

I can confirm that PR 3125 does fix the problem on PS3 as well, here.

This ticket can probably be closed, then. Thanks.

comment:8 by raziel-, 3 years ago

Owner: set to dwatteau
Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.