Page MenuHomeSolus

Black Mesa Not Displaying
Closed, ResolvedPublic

Description

The game launches but does not display. bms.sh and bms_linux continue to run until killed.

Running Steam on solus 2017.01.01.0 64-bit
STEAM_RUNTIME is disabled by the user
Generating new string page texture 84: 128x256, total string texture memory is 1.72 MB
Generating new string page texture 86: 128x256, total string texture memory is 1.85 MB
ExecCommandLine: "/home/xx/.local/share/Steam/ubuntu12_32/steam steam://open/driverhelperready"
ExecSteamURL: "steam://open/driverhelperready"
Generating new string page texture 109: 24x256, total string texture memory is 1.88 MB
Game update: AppID 362890 "Black Mesa", ProcID 3362, IP 0.0.0.0:0
ERROR: ld.so: object '/home/xx/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
>>> Adding process 3362 for game ID 362890
ERROR: ld.so: object '/home/xx/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
pid 3364 != 3363, skipping destruction (fork without exec?)
ERROR: ld.so: object '/home/xx/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/xx/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
>>> Adding process 3363 for game ID 362890
>>> Adding process 3365 for game ID 362890
>>> Adding process 3366 for game ID 362890
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast
Generating new string page texture 116: 384x256, total string texture memory is 2.27 MB
libgmp.so.10Setting breakpad minidump AppID = 769
Steam_SetMinidumpSteamID:  Caching Steam ID:  76561198256919217 [API loaded no]
[0203/214929:ERROR:web_plugin_impl.cc(38)] Widevine registration is not supported after context initialization

I do have i965_dri.so and swrast_dri.so in both lib32/ and lib64/

Th startup script, bms.sh, modifies LD_LIBRARY_PATH and LD_PRELOAD. I don't know if that's the problem. I can upload the file if it would help.

Event Timeline

RDR8 created this task.Feb 4 2017, 3:57 AM
RDR8 updated the task description. (Show Details)Feb 4 2017, 4:00 AM
RDR8 updated the task description. (Show Details)Feb 4 2017, 6:09 PM
RDR8 updated the task description. (Show Details)Feb 4 2017, 6:14 PM

Please paste contents of the .sh so I can have a looky :)

RDR8 updated the task description. (Show Details)Feb 4 2017, 7:29 PM
RDR8 updated the task description. (Show Details)Feb 23 2017, 4:34 PM

bms.sh

#!/bin/bash

# figure out the absolute path to the script being run a bit
# non-obvious, the ${0%/*} pulls the path out of $0, cd's into the
# specified directory, then uses $PWD to figure out where that
# directory lives - and all this in a subshell, so we don't affect
# $PWD

GAMEROOT=$(cd "${0%/*}" && echo $PWD)

#determine platform
UNAME=`uname`
if [ "$UNAME" == "Darwin" ]; then
   # prepend our lib path to LD_LIBRARY_PATH
   export DYLD_LIBRARY_PATH="${GAMEROOT}"/bin:$DYLD_LIBRARY_PATH
elif [ "$UNAME" == "Linux" ]; then
   # prepend our lib path to LD_LIBRARY_PATH
   export LD_LIBRARY_PATH="${GAMEROOT}"/bin:$LD_LIBRARY_PATH
fi

if [ -z $GAMEEXE ]; then
	if [ "$UNAME" == "Darwin" ]; then
		GAMEEXE=bms_osx
	elif [ "$UNAME" == "Linux" ]; then
		GAMEEXE=bms_linux
	fi
fi

ulimit -n 2048

# enable nVidia threaded optimizations
export __GL_THREADED_OPTIMIZATIONS=1

# and launch the game
cd "$GAMEROOT"

# Enable path match if we are running with loose files
if [ -f pathmatch.inf ]; then
	export ENABLE_PATHMATCH=1
fi

# Do the following for strace:
# 	GAME_DEBUGGER="strace -f -o strace.log"
# Do the following for tcmalloc
#   LD_PRELOAD=../src/thirdparty/gperftools-2.0/.libs/libtcmalloc_debug.so:$LD_PRELOAD

STATUS=42
while [ $STATUS -eq 42 ]; do
	if [ "${GAME_DEBUGGER}" == "gdb" ] || [ "${GAME_DEBUGGER}" == "cgdb" ]; then
		ARGSFILE=$(mktemp $USER.bms.gdb.XXXX)
		echo b main > "$ARGSFILE"

		# Set the LD_PRELOAD varname in the debugger, and unset the global version. This makes it so that
		#   gameoverlayrenderer.so and the other preload objects aren't loaded in our debugger's process.
		echo set env LD_PRELOAD=$LD_PRELOAD >> "$ARGSFILE"
		echo show env LD_PRELOAD >> "$ARGSFILE"
		unset LD_PRELOAD

		echo run $@ >> "$ARGSFILE"
		echo show args >> "$ARGSFILE"
		${GAME_DEBUGGER} "${GAMEROOT}"/${GAMEEXE} -x "$ARGSFILE"
		rm "$ARGSFILE"
	else
		${GAME_DEBUGGER} "${GAMEROOT}"/${GAMEEXE} "$@"
	fi
	STATUS=$?
done
exit $STATUS
dim added a subscriber: dim.May 6 2017, 3:05 PM

I had a similar issue with Torchlight II (GOG linux version). The game started, the process ran but no splash menu visible. Just outlined shadows around that invisible splash menu. In order to get it work I installed libglu. As TL2 uses a texture compression, I installed libtxc_dxtn too.

Note these are automatic deps for Steam on Solus right now @dim

siru added a subscriber: siru.Jun 12 2017, 9:57 AM

Would be interested to see if this persists on the MATE desktop (possibly libmutter is the issue for torchlight 2 failing to load and to see if this is the same issue). Unfortunately I don't own this game to try it.

dim added a comment.Jun 23 2017, 12:18 PM

Would be interested to see if this persists on the MATE desktop (possibly libmutter is the issue for torchlight 2 failing to load and to see if this is the same issue). Unfortunately I don't own this game to try it.

First off, excuse my English since am not a native English speaker. Consider it. Thank you.

Well, I've done a lot of test and wish to share them.

Case number one:

I have done a fresh install of Solus MATE as of 2017.04.18. Updated it up to June, 22.

I have both GOG and Steam offers of Torchlight II. MATE has 3 window managers, they are marco, metacity and compiz. The first two have two modes - non-composite and software composite. So, I have tested all possible use cases with GOG/Steam, and 3 WMs. Everything just works.

Next, according to Solus HOWTO, I addes budgie.desktop, which brought mutter WM on the stage. Under MATE nothing changed - every combination of above just works under mutter. So far, so good. I logged out and logged in to Budgie desktop, which in turn is GNOME. BANG!!! Everything works EXCEPT FOR just one special cast: Native libs ON. If I turned native (Solus') libs off, Steam's Torchlight II works. If I turned it ON, it doesn't. GOG's one just works despite of it.

Case number two:

OK, I have installed a fresh new Solus GNOME 2017.04.18. Updated it up to June, 22, 2017. Just "mutter" WM only. GOG variant just works. Steam's one do not work if I keep Native (Solus') libraries ON. If I allow Steam to use its native, which comes with steam bundle, it works. I turn ON native os - same fkng stalled flash screen.

If you have anything to ask, ask.

I was able to get the game to run by disabling the Solus steam runtime. So one of the libs it includes is build against the old runtime and not compatible with Solus libs.

RDR8 added a comment.Jul 29 2017, 6:10 AM

Yep, reading back over this, maybe I should have mentioned that the game plays well using the Valve runtime.

It's amazing you guys are still working on this. Thanks!

Installing Black Mesa here.

Created a new tag to make these issues easier to track

It's working here for me on the NVIDIA driver. Gonna need someone on the open drivers to test too on unstable.

^ New LSI update makes BLM work for open source drivers (thanks @sunnyflunk for testing!)

0.5 release: https://github.com/solus-project/linux-steam-integration/releases/tag/v0.5

RDR8 added a comment.Oct 12 2017, 7:53 AM

Thanks guys! I have no idea what you fixed but I'm stoked to try it out. You continue to impress. Thanks again

RDR8 awarded a token.Oct 12 2017, 7:54 AM

Short answer, I found out Black Mesa bundles its own libstdc++, which was built with an old ABI making it impossible to load the 32bit mesa drivers (and confirmed it would run when overriding it). Hence it impacted only on the open source drivers using it.

Then @ikey did some magicks (and fixed the intercept method which this confirmed wasn't quite working right) which said
stop right now, take a hike gobshite and voila

dim awarded a token.Oct 18 2017, 7:55 AM
dim added a comment.EditedOct 18 2017, 8:01 AM

Today I have installed a fresh new Solus Budgie 3, updated it up to the date, installed Steam and Torchlight II. I confirm that TL2 just works as intended. There is no a ghost window upon the game launch anymore!