#12900 closed defect (fixed)

BURIED: My CD version (v1.00 24BPP/Windows/English) crashes on startup

Reported by: eriktorbjorn Owned by: eriktorbjorn
Priority: normal Component: Engine: Buried
Version: Keywords:
Cc: Game: Journeyman Project 2: Buried in Time

Description

I have two different versions of Journeyman Project 2: Buried in Time. One is on DVD and is identified as either "v1.1 8BPP/Windows/English" or "v1.1 24BPP/Windows/English". These appear to work fine, from what little I've tried them.

I also have a CD version, which is identified as either "v1.00 8BPP/Windows/English" or "v1.00 24BPP/Windows/English". The 8BPP version starts and seems to run fine. But the 24BPP version crashes on startup.

Running it with Valgrind produced the following error log:

==967777== Invalid write of size 1
==967777==    at 0x3ED15D1: Common::WinResources::loadFromCompressedEXE(Common::String const&) (winexe.cpp:151)
==967777==    by 0x112A819: Buried::BuriedEngine::run() (buried.cpp:109)
==967777==    by 0x9183D6: runGame(Plugin const*, Plugin const*, OSystem&, Common::String const&) (main.cpp:311)
==967777==    by 0x919CBF: scummvm_main (main.cpp:618)
==967777==    by 0x9158E6: main (posix-main.cpp:45)
==967777==  Address 0x26cf2b30 is 0 bytes after a block of size 1,162,752 alloc'd
==967777==    at 0x6CCB7B5: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==967777==    by 0x3ED1483: Common::WinResources::loadFromCompressedEXE(Common::String const&) (winexe.cpp:130)
==967777==    by 0x112A819: Buried::BuriedEngine::run() (buried.cpp:109)
==967777==    by 0x9183D6: runGame(Plugin const*, Plugin const*, OSystem&, Common::String const&) (main.cpp:311)
==967777==    by 0x919CBF: scummvm_main (main.cpp:618)
==967777==    by 0x9158E6: main (posix-main.cpp:45)
==967777== 
==967777== Invalid write of size 1
==967777==    at 0x3ED15D1: Common::WinResources::loadFromCompressedEXE(Common::String const&) (winexe.cpp:151)
==967777==    by 0x112A8DB: Buried::BuriedEngine::run() (buried.cpp:112)
==967777==    by 0x9183D6: runGame(Plugin const*, Plugin const*, OSystem&, Common::String const&) (main.cpp:311)
==967777==    by 0x919CBF: scummvm_main (main.cpp:618)
==967777==    by 0x9158E6: main (posix-main.cpp:45)
==967777==  Address 0x28b47640 is 0 bytes after a block of size 5,211,648 alloc'd
==967777==    at 0x6CCB7B5: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==967777==    by 0x3ED1483: Common::WinResources::loadFromCompressedEXE(Common::String const&) (winexe.cpp:130)
==967777==    by 0x112A8DB: Buried::BuriedEngine::run() (buried.cpp:112)
==967777==    by 0x9183D6: runGame(Plugin const*, Plugin const*, OSystem&, Common::String const&) (main.cpp:311)
==967777==    by 0x919CBF: scummvm_main (main.cpp:618)
==967777==    by 0x9158E6: main (posix-main.cpp:45)
==967777== 

I assume that the .ex_ and/or .dl_ files are compressed, and that there is something not quite working about the decompresser.

When running in Valgrind, ScummVM no longer crashes for me, so I was able to tell that there are errors both when reading BIT2416.EX_ and BIT24LIB.DL_.

Change History (5)

comment:1 by eriktorbjorn, 10 months ago

Interestingly, if I install the game (with Wine), the resulting BIT2416.EXE and BIT24LIB.DLL files are 1,162,752 and 5,211,648 bytes respectively. This is exactly the values the unpackedLength variable are set to during decompression.

comment:2 by eriktorbjorn, 10 months ago

The files, as unpacked by ScummVM, are 1,162,770 and 5,211,666 bytes respectively, i.e. 18 bytes longer. Other than these 18 extra bytes, the files unpacked by ScummVM are identical to the files unpacked by the original installer.

comment:3 by eriktorbjorn, 10 months ago

comment:4 by eriktorbjorn, 10 months ago

The pull request was accepted, and the game no longer crashes for me.

comment:5 by eriktorbjorn, 10 months ago

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