ValveSoftware / steam-runtime

A runtime environment for Steam applications
Other
1.18k stars 86 forks source link

steam picks up system installed steam-runtime-tools #376

Open darix opened 3 years ago

darix commented 3 years ago

Your system information

Please describe your issue in as much detail as possible:

While checking my coredumpctl list i noticed a sigabort x86_64-linux-gnu-check-va-api

i saw it for ~/.local/share/Steam/ubuntu12_32/steam-runtime/usr/libexec/steam-runtime-tools-0/x86_64-linux-gnu-check-va-api

which is the path which i would expect. but a few days ago it also started to call it via

/usr/libexec/steam-runtime-tools-0/x86_64-linux-gnu-check-va-api

Is it really intentional that you pick up system wide installed copies of the tool?

FWIW:

the sigabort is listed below but that might be a bug in our system libraries.

libva info: VA-API version 1.10.0
libva info: User environment variable requested driver 'vdpau'
libva info: Trying to open /usr/lib64/dri/vdpau_drv_video.so
libva info: Found init function __vaDriverInit_1_10
libva info: va_openDriver() returns 0
Splitted-Desktop Systems VDPAU backend for VA-API - 0.7.4
vaCreateSurfaces (va_display, VA_RT_FORMAT_YUV420, width, height, surfaces, surfaces_count, &attr, 1) failed: attribute not supported (10)
x86_64-linux-gnu-check-va-api: vdpau_video.c:325: vdpau_DestroySurfaces: Assertion `obj_surface' failed.
[1]    8885 IOT instruction (core dumped)  /usr/libexec/steam-runtime-tools-0/x86_64-linux-gnu-check-va-api --verbose

Why do i have the tools installed system wide?

because I wanted to play with them and see how to run my games run via system wine in pressure vessel. i didnt have time for trying this yet.

smcv commented 3 years ago

Is it really intentional that you pick up system wide installed copies of the tool?

Not exactly... but automatically using a version of the "helpers" from the LD_LIBRARY_PATH Steam Runtime is not necessarily the right thing either, because part of the purpose of steam-runtime-system-info is to detect an incorrectly set up Steam Runtime, so we can't necessarily rely on the STEAM_RUNTIME environment variable being set to something sensible. We'll have to think about what the right thing would be to do in this situation.

When the same tool gets run inside a container, it's correct for it to look in /usr/libexec, because the container's /usr comes from the container runtime. It's literally the same tool - if you happen to have matching versions of the LD_LIBRARY_PATH Steam Runtime that Steam itself runs in, and the SteamLinuxRuntime container runtime, then you will have identical steam-runtime-system-info binaries.

We have to use external helper subprocesses so that we can check both x86_64 and i386, and also so that a crash in the "helper" doesn't bring down the entire steam-runtime-system-info process. The original idea was that Steam would be linked to libsteam-runtime-tools as a library, rather than running it as an executable, and we certainly don't want a failed check to crash the entire Steam process :-)

I wanted to play with them and see how to run my games run via system wine in pressure vessel

It's great that you're experimenting with this, but pressure-vessel is not really designed for use-cases other than Steam games. We can't really provide support for it as a general-purpose containerization tool, and it's possible that there will be incompatible changes to its command-line interface or the way it works internally.

I'd recommend Flatpak as a more general-purpose container tool. A lot of the code in pressure-vessel is reused from Flatpak.

smcv commented 3 years ago
vaCreateSurfaces (va_display, VA_RT_FORMAT_YUV420, width, height, surfaces, surfaces_count, &attr, 1) failed: attribute not supported (10)
x86_64-linux-gnu-check-va-api: vdpau_video.c:325: vdpau_DestroySurfaces: Assertion `obj_surface' failed.

This does look like a bug in your system libraries. We don't have a file called vdpau_video.c.