-
Notifications
You must be signed in to change notification settings - Fork 86
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Failed to Initialize Vulkan on Clear Linux #642
Comments
Hello @K1ngfish3r, Dota 2 is run inside the Steam Linux Runtime 3.0 (Sniper) container environment. Looking at your runtime diagnostics, the Vulkan render paths are generally healthy on the system (https://gist.github.com/K1ngfish3r/62ea913932bf0501bf3fe8efc331a57b#file-steamruntimediagnostics-txt-L2458-L2471), but once you get inside the container environment, Vulkan is broken for some reason (https://gist.github.com/K1ngfish3r/62ea913932bf0501bf3fe8efc331a57b#file-steamruntimediagnostics-txt-L5087-L5100). We'll need to ponder why that container/driver issue is happening before evaluating any additional issue with Dota 2, so I've transferred this issue report to the steam-runtime issue tracker for a runtime maintainer to ponder. Please give https://github.com/ValveSoftware/steam-runtime/blob/master/doc/reporting-steamlinuxruntime-bugs.md#essential-information a read and share the requested information. |
As Requested UPDATE: slr-latest.log this log was obtained using |
Not necessarily related to the problem with Vulkan you are reporting, but you should install both 32- and 64-bit versions of Mesa on the host system. I don't know how you would achieve that on Clear Linux: the steps to do so would be distro-specific. In Debian/Ubuntu, you would install both |
This looks like the problem:
|
Possibly related, possibly not:
|
Something is going wrong with the process of finding your graphics drivers' library dependencies. The messages I quoted indicate that this is affecting VA-API and VDPAU. I can't tell whether it's also affecting OpenGL and Vulkan, but it's very likely that the answer is yes. Please send the output of
and
as Gists or attachments, so we can see which libraries we ought to have been finding, and get an idea of why we couldn't. |
Also, it would be useful to know more about how Clear Linux is structured. We have had trouble in the past with Clear Linux doing unusual things. #345 was fixed about 3 years ago, so that particular issue shouldn't be the problem, but it's an example of needing to know specifics of how Clear Linux works. I see that your library search path is something like this:
Are any of those directories actually symbolic links? If yes, where do they point to? |
Clear Linux is trying to cut down on the 32 bit libs they provide clearlinux/distribution#2925 (comment) and I am unable to obtain the 32 bit version of
None of them are symbolic links, however,
|
Sorry, I think that is likely to make Clear Linux incompatible with Steam, either now or in the future. https://github.com/ValveSoftware/steam-for-linux/ documents it as requiring: "64-bit (x86-64, AMD64) and 32-bit (i386, IA32) graphics drivers and glibc", and Mesa is part of the 32-bit graphics driver stack. |
This seems strange to me. Is your
or
This is not directly related to your problem with Vulkan, but it might give us useful clues. |
Similarly, this should have been available in
(or |
I don't know whether this is relevant to the issue report or not, but this indicates that Clear Linux is providing a version of If Clear Linux wants to provide a legacy-free Or if Clear Linux wants to provide a backward-compatible The version provided here is not binary-compatible with either of those. |
Not relevant to the Vulkan initialization failure, but please consider generating an |
I have contacted the clear linux devs and they have told me they are not sure why 32 bit mesa isnt generating the 32 bit version of
I have forwarded this message to the devs, will update with their response
it had to be set manually, it is set now |
our libcrypt.so.1 actually comes from glibc (glibc 2.38 still provides libcrypt if you ask it nicely) but I will investigate if there's options we need to pass |
Hmm, I might have been misreading the diagnostic output: it might be saying that it expected to find libxcrypt, but didn't. The older If your But perhaps the fact that Clear Linux is using such a new version of glibc, but has not switched to libxcrypt, is confusing our detection of which one is newer? Most other distributions switched to libxcrypt before they updated to recent glibc versions. |
From the follow-up:
it seems that I don't use Clear Linux myself, but I would have expected that its
This means
which means that when a program loads The pressure-vessel (Steam Linux Runtime) container runtime framework relies on being able to traverse these dependency chains and find all the dependencies of a library, so that it can bring them into the container. It seems that isn't happening. Is Clear Linux doing something odd with ELF dependency handling (some sort of optimization perhaps?), that would result in Similarly, the list of dependencies of
is much shorter than I would have expected - I would have expected it to look more like this, which is what I get on Debian:
It's harder to tell what is going on with Vulkan drivers, because Vulkan-Loader doesn't helpfully show us the |
uhm, i've managed to launch and play the game i swapped out the libX11.so.6.4.0 inside both i feel like this is a very hacky solution though, no other fixes nor special options were used |
Yes, that's a hack: editing the contents of That probably does narrow down where the problem must be, though... |
Anything which I can provide to help? This hack is most certainly going to break in the next update. |
Is Clear Linux's libX11 the one that has packaging here? https://github.com/clearlinux-pkgs/libX11/blob/main/libX11.spec It looks as though that library is not actually libX11: instead, it's an amalgamation of libX11 and a lot of related libraries, all stuck together into one big library. This would explain my confusion regarding libXext.so.6 and libxcb-dri3.so.0, because Clear Linux's libX11 contains all of the functionality of libXext and libxcb-dri3 (and many more besides). Unfortunately, the packaging makes it claim to be an outdated version:
The version of libX11 in I think it might also be possible for this to lead to ABI conflicts inside the container environment: when a library inside the container (for example SDL) loads our version of one of the libraries that are amalgamated into Clear Linux's I think Clear Linux should not have done this. I understand that bundling together multiple tiny libraries into one large library can improve runtime linking performance, but changes to the ABI of a widespread library should happen upstream or not at all, so the place to do this would have been in the Xorg community. But it has happened, so the damage has been done: Clear Linux can no longer undo this without breaking backwards-compatibility. I'll have to think more about whether pressure-vessel can work around this without making matters worse. Making it compare libX11 versions by their list of public symbols rather than by their filename might help - but the reason we haven't done that in the past is that for historical reasons, it's very unclear which of the symbols exported by libX11 are public, and which are private symbols that must be ignored for comparison purposes. On the Clear Linux side, the first thing to do would be to make sure that the version number in the filename |
was just fixing that -- so yes we will do this -- the update should be out in a day or two with this in it |
I think perhaps the problem we're having with libcrypt (which is very much secondary here, the libX11 issue is the important one!) is that your glibc is new enough to have this change, and you're using glibc's libcrypt. With older glibc, we would recognise With libxcrypt on the host system, we can directly compare our But with new glibc providing a regular file The good news is that this only affects a relatively small number of games, and for those games, forcing use of the "Steam Linux Runtime 1.0 (scout)" compatibility tool should bypass the problem. |
libX11 has been updated and I can confirm that it is working properly after removing the modified files from the SLR |
Please could you get new Help -> Steam Runtime Diagnostics with an unmodified SLR 3.0 - sniper, to confirm that the underlying problems are fixed? You can verify integrity (but on the SLR 3.0 - sniper tool, rather than a game) to force Steam to re-download anything that has been modified. |
As requested find attached gist |
This seems to have been successful, and that's the most serious problem here (in particular it's what was breaking Vulkan), so I think this issue can be closed.
This part was still a problem as of 2024-01-19. One mitigation is that as I said, forcing use of the "Steam Linux Runtime 1.0 (scout)" compatibility tool should bypass the problem. Another mitigation is that this situation will only last until Clear Linux upgrades to glibc 2.39, which no longer ships a libcrypt implementation, meaning that the only reasonable implementation of |
I tried testing the following games
Both games failed to work with SLR 3.0 or SLR 1.0 |
Both Dirt Rally and Tomb Raider are known to be affected by #613, which is a game bug rather than an SLR bug. Unfortunately, these older games are no longer being updated by their developer or publisher. (I regularly use Tomb Raider as a test title while developing the runtime, so I contacted Crystal Dynamics regarding it; I got an automated response, but I have not heard anything since.) If combining SLR 1.0 with the workaround at the top of #613 (comment) is successful, then that's the best we can expect from these particular games. If that workaround is not successful, then please open a separate issue. |
Closing as fixed per #642 (comment). |
Today's Steam Linux Runtime 2.0 (soldier) and 3.0 (sniper) betas, versioned as 0.20240415.x, have a change that slightly improves compatibility with Clear Linux ( It would be useful if a Clear Linux user or developer could try these betas before they get re-released as stable, so that we can roll back the change if it causes a regression. @K1ngfish3r or @fenrus75, would you mind trying this? As a general principle, if you are interested in having the Steam Runtime work smoothly on your OS and you are technically proficient enough to swap between beta branches and send clear bug reports, it's actually better to use the betas than the stable releases. That way, if you encounter a new regression, you can report the bug, then drop back from beta to stable while waiting for it to be fixed, and less-technically-proficient users of your OS hopefully won't have to encounter the bug at all. |
I have opted into the steam client beta and enabled client_beta under SLR (sniper) |
That's a separate issue, unrelated to this one. I reported it separately as ValveSoftware/steam-for-linux#10789. |
Your system information
Steam
->Help
->System Information
) in a gist:Please describe your issue in as much detail as possible:
Describe what you expected should happen and what did happen. Please link any large pastes as a Github Gist.
Expected should happen:
Launch and play Dota 2
What happened:
I obtained steam from Steam under Linux and ran
sudo make install
. Client runs perfectly fine however Dota 2 brings up the errorUnable to start game: Failed to initialize Vulkan
(terminal log attached)I am able to run games (StarCraft 2) on Lutris, however I am unable to run games on steam. attached output from vulkaninfo
Related finds #345
However, I am unsure of how I am to implement this fix as soldier has now moved to sniper
Steps for reproducing this issue:
The text was updated successfully, but these errors were encountered: