BattleBlock Theater

BattleBlock Theater

kmoxville 30 Dec, 2015 @ 9:50am
Linux version not starting
I press start, nothing happens
Linux 3.16.0-57-generic #77~14.04.1-Ubuntu SMP Thu Dec 17 23:20:00 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
< >
Showing 31-45 of 102 comments
Ash 3 Feb, 2017 @ 2:01pm 
OK tried the edit. Still dosen't start.
Offset 0024F2B8 00 85 D2 8B 4D 10 90 90 90 90 90 90 8B 45 20 BB FF FF
novenary 3 Feb, 2017 @ 2:05pm 
Can you get me a crash log?
de.nagical[linux] 4 Feb, 2017 @ 12:20am 
Put in the game folder, make executable, execute :P
#!/usr/bin/env bash FILE=BattleBlockTheater MD5_PRE=436e91811d8a38de1918991969347b3d MD5_POST=71eb6519233b21d85c858b39f2b4871f OFFSET=0x24f2b9 PAYLOAD='\x90\x90' function getMD5() { echo $(md5sum "${1}" | cut -d ' ' -f 1) } if [[ ${MD5_PRE} != $(getMD5 ${FILE}) ]] then echo Input has wrong checksum. Already patched? exit 11 fi echo -ne ${PAYLOAD} | dd if=/dev/stdin of="${FILE}" bs=1 conv=notrunc seek=$((${OFFSET})) status=none if [[ $? != 0 ]] then echo Patching binary failed. exit 77 fi if [[ ${MD5_POST} != $(getMD5 ${FILE}) ]] then echo Output has wrong checksum. Expect trouble! exit 22 fi echo Yay... everything went well.
novenary 4 Feb, 2017 @ 2:43am 
This is slightly different from mine, his edit looks fine already.
Anyway I was asking for a crash log because I've needed `export MALLOC_CHECK_=0` in the launcher script for a while. Not really sure why but the game calls free on invalid memory during startup for me. ¯\_(ツ)_/¯
Last edited by novenary; 4 Feb, 2017 @ 2:43am
Ash 5 Feb, 2017 @ 12:21pm 
de.nagical[linux] - When I run the script on the original Exe. I receive "Yay... everything went well." result. I then ran it on the patched version and saw "Input has wrong checksum. Already patched?"

Streetwalrus, Sorry, I don't know where the crash log is.

If I try to execute from terminal I get: -

This is my LD_LIBRARY_PATH\n
/tools/linux/runtime/i386/lib/i386-linux-gnu:/tools/linux/runtime/i386/lib:/tools/linux/runtime/i386/usr/lib/i386-linux-gnu:/tools/linux/runtime/i386/usr/lib::.
End LD_LIBRARY_PATH\n
*******/.steam/steam/steamapps/common/BattleBlock Theater/BattleBlockTheater: error while loading shared libraries: libSDL2-2.0.so.0: cannot open shared object file: No such file or directory

I did some resarch and there is probably a link missing but so far I have been unable to figure it out.
novenary 5 Feb, 2017 @ 2:03pm 
By crash log I did indeed mean terminal output.
Install SDL 2 from your distro's repo.
Last edited by novenary; 5 Feb, 2017 @ 2:04pm
de.nagical[linux] 6 Feb, 2017 @ 11:29am 
Enable/don't disable the steam-runtime and launch from within steam, or do what Streetwalrus said
The Laughing Cow 9 Feb, 2017 @ 9:49am 
Hi, I just want to point out that as per https://www.gamingonlinux.com/wiki/Games_broken_on_Mesa , they have a beta to fix this issue. I had the same problem, and kindly asked the support to give me access to the beta, which fixed it.

I can't share the beta access code, since it looks like they generate a new branch for each ticket (which is a smart thing, to be honest). However, they didn't ask me not to share the fact that a beta was available, so there you go.

@de.nagical: I guess the compiler is statically allocating this string, so you could probably cache the pointer to speed up things for future assertions (provided the string is only stored once). I am also a bit curious: why the assembly? Isn't your compiler supposed to pop those values for you anyway?
de.nagical[linux] 9 Feb, 2017 @ 10:59am 
Originally posted by M@yeulC Fr:
Hi, I just want to point out that as per https://www.gamingonlinux.com/wiki/Games_broken_on_Mesa , they have a beta to fix this issue. I had the same problem, and kindly asked the support to give me access to the beta, which fixed it.

I can't share the beta access code, since it looks like they generate a new branch for each ticket (which is a smart thing, to be honest). However, they didn't ask me not to share the fact that a beta was available, so there you go.

@de.nagical: I guess the compiler is statically allocating this string, so you could probably cache the pointer to speed up things for future assertions (provided the string is only stored once). I am also a bit curious: why the assembly? Isn't your compiler supposed to pop those values for you anyway?

Oh, nice to hear there's fixing and development going on :)

Well, asserting is a bit special. Since failed assertions are marked noreturn, thus the stack setup is a bit different and returning not actually supported, hence the asm hackage. It's basically just to not have to fiddle with the binary itself ;)
Ash 11 Feb, 2017 @ 6:01am 
Quick update:

I tried to install libsdl2-2.0-0. However apt-get says I have latest version.

I then tried ldd ./BattleBlockTheater

I have these missing libs
linux-gate.so.1 => (0xf778d000)
libsteam_api.so => not found
libSDL2-2.0.so.0 => not found
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf774d000)
libGL.so.1 => /usr/lib/i386-linux-gnu/mesa/libGL.so.1 (0xf76e5000)
libopenal.so.1 => not found
libstdc++.so.6 => /usr/lib/i386-linux-gnu/li...


I installed locate with sudo apt-get install locate

linked the missing libs following this post
http://steamcommunity.com/app/20920/discussions/0/522728181039691774/#c522728268702458584

Then ran the exe and had this come back

Originally posted by author:
./BattleBlockTheater.sh
This is my LD_LIBRARY_PATH\n
/tools/linux/runtime/i386/lib/i386-linux-gnu:/tools/linux/runtime/i386/lib:/tools/linux/runtime/i386/usr/lib/i386-linux-gnu:/tools/linux/runtime/i386/usr/lib::.
End LD_LIBRARY_PATH\n
Setting breakpad minidump AppID = 238460
Steam_SetMinidumpSteamID: Caching Steam ID: 76561197964069990 [API loaded no]
DEBUG: Steam checks done
DEBUG: Built Dec 17 2014 17:44:59
DEBUG: InitGame started
*** Error in `/home/htpc/.steam/steam/steamapps/common/BattleBlock Theater/BattleBlockTheater': free(): invalid pointer: 0xeec90a20 ***
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(+0x67377)[0xf7214377]
/lib/i386-linux-gnu/libc.so.6(+0x6d2f7)[0xf721a2f7]
/lib/i386-linux-gnu/libc.so.6(+0x6dbb1)[0xf721abb1]
/usr/lib/i386-linux-gnu/libLLVM-3.9.so.1(_ZN4llvm12PassRegistry12registerPassERKNS_8PassInfoEb+0x5c3)[0xeab2b2f3]
/usr/lib/i386-linux-gnu/libLLVM-3.9.so.1(+0xd44148)[0xeb2d9148]
/usr/lib/i386-linux-gnu/libLLVM-3.9.so.1(_ZSt16__once_call_implISt12_Bind_simpleIFPFPvRN4llvm12PassRegistryEESt17reference_wrapperIS3_EEEEvv+0x25)[0xeaab2645]
/usr/lib/i386-linux-gnu/libstdc++.so.6(__once_proxy+0x1d)[0xf747927d]
/lib/i386-linux-gnu/libpthread.so.0(+0xd115)[0xf761a115]
/usr/lib/i386-linux-gnu/libLLVM-3.9.so.1(_ZN4llvm28initializeLegacyLICMPassPassERNS_12PassRegistryE+0x72)[0xeb2dcfd2]
/usr/lib/i386-linux-gnu/libLLVM-3.9.so.1(_ZN4llvm14createLICMPassEv+0x61)[0xeb2dd0e1]
/usr/lib/i386-linux-gnu/libLLVM-3.9.so.1(LLVMAddLICMPass+0x1c)[0xeb3b318c]
/usr/lib/i386-linux-gnu/dri/radeonsi_dri.so(+0x6f8b24)[0xedc1db24]
/usr/lib/i386-linux-gnu/dri/radeonsi_dri.so(+0x6f29cc)[0xedc179cc]
/usr/lib/i386-linux-gnu/dri/radeonsi_dri.so(+0x705933)[0xedc2a933]
/usr/lib/i386-linux-gnu/dri/radeonsi_dri.so(+0x3da9d4)[0xed8ff9d4]
/usr/lib/i386-linux-gnu/dri/radeonsi_dri.so(+0x3da787)[0xed8ff787]
/lib/i386-linux-gnu/libpthread.so.0(+0x6295)[0xf7613295]
/lib/i386-linux-gnu/libc.so.6(clone+0x6e)[0xf7293eee]
======= Memory map: ========
....


It then printed out the applications memory map..

novenary 11 Feb, 2017 @ 6:03am 
export MALLOC_CHECK_=0 before running the game and try again. If that works, add it to your launcher script.
Ash 11 Feb, 2017 @ 6:14am 
Ok that works. Thanks for your time.

I can't launch it from steam, but it does run if I execute the shell script. However a new issue, there is no audio!

Originally posted by author:
./BattleBlockTheater.sh
This is my LD_LIBRARY_PATH\n
/tools/linux/runtime/i386/lib/i386-linux-gnu:/tools/linux/runtime/i386/lib:/tools/linux/runtime/i386/usr/lib/i386-linux-gnu:/tools/linux/runtime/i386/usr/lib::.
End LD_LIBRARY_PATH\n
Setting breakpad minidump AppID = 238460
Steam_SetMinidumpSteamID: Caching Steam ID: ------------------- [API loaded no]
DEBUG: Steam checks done
DEBUG: Built Dec 17 2014 17:44:59
DEBUG: InitGame started
AL lib: oss.c:169: Could not open /dev/dsp: No such file or directory
DEBUG: maxVoices on this machine is 255 (247 for regular 8 for async
DEBUG: SFX Loading completed: 0.259728 seconds
DEBUG: Menu Assets loaded at 1.688577 secs
DEBUG: All Assets loaded at 4.462713 secs
Shutdown complete
AL lib: ALc.c:2325: exit(): closing 1 Device
AL lib: ALc.c:2247: alcCloseDevice(): destroying 1 Context(s)
AL lib: ALc.c:1848: alcDestroyContext(): deleting 255 Source(s)
AL lib: ALc.c:2257: alcCloseDevice(): deleting 324 Buffer(s)


Joy!!!
Ash 11 Feb, 2017 @ 6:19am 
And the xbox 360 wireless controllers no longer work. I suspect I have things missing.
de.nagical[linux] 11 Feb, 2017 @ 6:20am 
Originally posted by Boltar:
Quick update:

I tried to install libsdl2-2.0-0. However apt-get says I have latest version.

I then tried ldd ./BattleBlockTheater

I have these missing libs
linux-gate.so.1 => (0xf778d000)
libsteam_api.so => not found
libSDL2-2.0.so.0 => not found
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf774d000)
libGL.so.1 => /usr/lib/i386-linux-gnu/mesa/libGL.so.1 (0xf76e5000)
libopenal.so.1 => not found
libstdc++.so.6 => /usr/lib/i386-linux-gnu/li...


I installed locate with sudo apt-get install locate

linked the missing libs following this post
http://steamcommunity.com/app/20920/discussions/0/522728181039691774/#c522728268702458584

Then ran the exe and had this come back

Originally posted by author:
./BattleBlockTheater.sh
This is my LD_LIBRARY_PATH\n
/tools/linux/runtime/i386/lib/i386-linux-gnu:/tools/linux/runtime/i386/lib:/tools/linux/runtime/i386/usr/lib/i386-linux-gnu:/tools/linux/runtime/i386/usr/lib::.
End LD_LIBRARY_PATH\n
Setting breakpad minidump AppID = 238460
Steam_SetMinidumpSteamID: Caching Steam ID: 76561197964069990 [API loaded no]
DEBUG: Steam checks done
DEBUG: Built Dec 17 2014 17:44:59
DEBUG: InitGame started
*** Error in `/home/htpc/.steam/steam/steamapps/common/BattleBlock Theater/BattleBlockTheater': free(): invalid pointer: 0xeec90a20 ***
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(+0x67377)[0xf7214377]
/lib/i386-linux-gnu/libc.so.6(+0x6d2f7)[0xf721a2f7]
/lib/i386-linux-gnu/libc.so.6(+0x6dbb1)[0xf721abb1]
/usr/lib/i386-linux-gnu/libLLVM-3.9.so.1(_ZN4llvm12PassRegistry12registerPassERKNS_8PassInfoEb+0x5c3)[0xeab2b2f3]
/usr/lib/i386-linux-gnu/libLLVM-3.9.so.1(+0xd44148)[0xeb2d9148]
/usr/lib/i386-linux-gnu/libLLVM-3.9.so.1(_ZSt16__once_call_implISt12_Bind_simpleIFPFPvRN4llvm12PassRegistryEESt17reference_wrapperIS3_EEEEvv+0x25)[0xeaab2645]
/usr/lib/i386-linux-gnu/libstdc++.so.6(__once_proxy+0x1d)[0xf747927d]
/lib/i386-linux-gnu/libpthread.so.0(+0xd115)[0xf761a115]
/usr/lib/i386-linux-gnu/libLLVM-3.9.so.1(_ZN4llvm28initializeLegacyLICMPassPassERNS_12PassRegistryE+0x72)[0xeb2dcfd2]
/usr/lib/i386-linux-gnu/libLLVM-3.9.so.1(_ZN4llvm14createLICMPassEv+0x61)[0xeb2dd0e1]
/usr/lib/i386-linux-gnu/libLLVM-3.9.so.1(LLVMAddLICMPass+0x1c)[0xeb3b318c]
/usr/lib/i386-linux-gnu/dri/radeonsi_dri.so(+0x6f8b24)[0xedc1db24]
/usr/lib/i386-linux-gnu/dri/radeonsi_dri.so(+0x6f29cc)[0xedc179cc]
/usr/lib/i386-linux-gnu/dri/radeonsi_dri.so(+0x705933)[0xedc2a933]
/usr/lib/i386-linux-gnu/dri/radeonsi_dri.so(+0x3da9d4)[0xed8ff9d4]
/usr/lib/i386-linux-gnu/dri/radeonsi_dri.so(+0x3da787)[0xed8ff787]
/lib/i386-linux-gnu/libpthread.so.0(+0x6295)[0xf7613295]
/lib/i386-linux-gnu/libc.so.6(clone+0x6e)[0xf7293eee]
======= Memory map: ========
....


It then printed out the applications memory map..

You'd need to install the 32bit libraries, i.e. libSDL2:i386 or something that way... Or just use the steam runtime, that is, don't run from terminal or set proper environment, e.g. env LD_LIBRARY_PATH="$HOME/.steam/bin32/" ./BattleBlockTheater.sh
September_HX 13 Feb, 2017 @ 3:30am 
Originally posted by de.nagicallinux:
Put in the game folder, make executable, execute :P
#!/usr/bin/env bash FILE=BattleBlockTheater MD5_PRE=436e91811d8a38de1918991969347b3d MD5_POST=71eb6519233b21d85c858b39f2b4871f OFFSET=0x24f2b9 PAYLOAD='\x90\x90' function getMD5() { echo $(md5sum "${1}" | cut -d ' ' -f 1) } if [[ ${MD5_PRE} != $(getMD5 ${FILE}) ]] then echo Input has wrong checksum. Already patched? exit 11 fi echo -ne ${PAYLOAD} | dd if=/dev/stdin of="${FILE}" bs=1 conv=notrunc seek=$((${OFFSET})) status=none if [[ $? != 0 ]] then echo Patching binary failed. exit 77 fi if [[ ${MD5_POST} != $(getMD5 ${FILE}) ]] then echo Output has wrong checksum. Expect trouble! exit 22 fi echo Yay... everything went well.


This really works !!!

Thanks !
< >
Showing 31-45 of 102 comments
Per page: 1530 50