Skip to content
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

BUG: "winegstreamer: failed to create decodebin, are 64-bit GStreamer "base" plugins installed?" Seeing this error with Bottles when running a game #311004

Open
saikatdas0790 opened this issue May 12, 2024 · 18 comments

Comments

@saikatdas0790
Copy link
Contributor

Describe the bug

When running a game with Bottles, I am seeing this error.

image

The effect of this is that no videos ingame are playing. From reading the error, I feel that there's some configuration that I'm missing or some base package that I need to add from the Nixpkgs repo. Please help

Steps To Reproduce

Steps to reproduce the behavior:

  1. Open game "Disintegration"
  2. Notice no videos playing
  3. Check bottles logs and see this
    image

Expected behavior

Videos work in game

Notify maintainers

@SuperSamus I saw that you also spotted and fixed this here
#207641

Any help is appreciated 🙂

Metadata

Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.

[user@system:~]$ nix-shell -p nix-info --run "nix-info -m"
output here
  • system: "x86_64-linux"
  • host os: Linux 6.6.30, NixOS, 24.05 (Uakari), 24.05pre623656.f1010e0469db
  • multi-user?: yes
  • sandbox: yes
  • version: nix-env (Nix) 2.18.2
  • channels(root): "nixos"
  • nixpkgs: /nix/var/nix/profiles/per-user/root/channels/nixos

@SuperSamus
Copy link
Contributor

SuperSamus commented May 12, 2024

What Wine version are you using? (And is it from the system?)
Is there any change if you set the environment variable BOTTLES_USE_SYSTEM_GSTREAMER?
Could I have more logs?

@saikatdas0790
Copy link
Contributor Author

saikatdas0790 commented May 12, 2024

What Wine version are you using? (And is it from the system?)

When you say Wine version, you mean the Runner, right? Because I don't specifically choose Wine, it's whatever is the default being used by Bottles as part of this Runner that I'm using. It's soda-9.0.1, the latest.
image

Is there any change if you set the environment variable BOTTLES_USE_SYSTEM_GSTREAMER?
Could I have more logs?

I set it by running the bottles app from a terminal and that is how I've been looking at logs data. Attaching screenshots of the entire log.
image
image
image
image

  • You'll notice at the top that I started the bottles program with the variable set.
  • And at the very bottom the same error logs
  • And no videos in game

@SuperSamus
Let me know if there's any additional information I can provide. Thank you for the help 🙂

@SuperSamus
Copy link
Contributor

SuperSamus commented May 12, 2024

I can reproduce the issue with Oblivion.
Going back in time (3f25b9d), the issue isn't there.
I'll do a bisection.

@SuperSamus
Copy link
Contributor

Found the bad commit: 4c214a7.
Why it causes the problem, I have no idea.

@saikatdas0790
Copy link
Contributor Author

Should we be reporting this somewhere upstream? Or is this specific to Nix?

Happy to report and ask for help elsewhere if you think that makes sense 🙂

@SuperSamus
Copy link
Contributor

SuperSamus commented May 13, 2024

I have an idea.
In the changelog, I see a lot of mentions of Rust, so I was wondering if adding gst-plugins-rs would do something.
Unfortunately, the 32 bit version of it isn't cached, and it takes hours to compile, so because you are using a 64 bit game, I ask you to test this (where I disabled 32 bit support):

nix run github:SuperSamus/nixpkgs/bottles-gstreamer-test#bottles

@saikatdas0790
Copy link
Contributor Author

@SuperSamus Hi Samus 👋🏼

I ran this to get the output logs

nix run github:SuperSamus/nixpkgs/bottles-gstreamer-test#bottles --verbose --log-format raw

image

Still seeing the same message and no videos in game

image

@SuperSamus
Copy link
Contributor

Well, I hoped for an easy solution...
I guess the next best idea is bisecting gstreamer itself.

@SuperSamus
Copy link
Contributor

SuperSamus commented May 13, 2024

After a boring bisect, I finally found the faulty commit: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/bd97973ce0f2c5495bcda5cccd4f7ef7dcb7febc.

Reverting it fixes the issue, even on the current version.
EDIT: Do note that this commit was created to fix https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2877 upstream

I'll leave the choice of what to do to someone with more authority with me.

@keenanweaver
Copy link
Member

I'll leave the choice of whether to revert it upstream or only on nixpkgs to someone with more authority with me.

I believe this is the domain of @lilyinstarlight.

@lilyinstarlight
Copy link
Member

lilyinstarlight commented May 14, 2024

Can someone grab a log with G_MESSAGES_DEBUG=all environment variable set and upload as file?

Something weird is probably going on in winegstreamer if that commit caused this behavior

@SuperSamus
Copy link
Contributor

SuperSamus commented May 14, 2024

Working:

Broken: bottles-present.log

EDIT: Unredacted the logs (sorry for doing that...).
I should also have said that they don't say much.
Added more logs (see below).

Do note that I'm running a 32 bit game, that's why bottles-present-libenv.log (and similarly, bottles-present-usrlibenv.log) says:

(wine:82478): GStreamer-WARNING **: 10:31:18.727: Failed to load plugin '/lib64/gstreamer-1.0/libgstqsv.so': /lib64/gstreamer-1.0/libgstqsv.so: wrong ELF class: ELFCLASS64

@lilyinstarlight
Copy link
Member

@SuperSamus Hmm that does not seem to include the debug messages around the code which that commit changes. Were these manually redacted?

@SuperSamus
Copy link
Contributor

No, I only removed stuff like fsync: up and running.

@lilyinstarlight
Copy link
Member

That counts as manually redacted... but I'm just going to assume the logs I'm looking for don't exist then

How were you adding that env var/running stuff?

@SuperSamus
Copy link
Contributor

SuperSamus commented May 15, 2024

How were you adding that env var/running stuff?

I simply ran from the terminal

G_MESSAGES_DEBUG=all /path/to/bottles &> filename.log

(With /path/to/bottles being the path returned by nix-build, plus /bin/bottles)

By the way, I remembered one thing.
GStreamer didn't always work out of the box on Bottles: it required that buildFHSEnv had the following:

  # `/usr` is optional
  profile = ''
    export GST_PLUGIN_PATH=/usr/lib32/gstreamer-1.0:/usr/lib64/gstreamer-1.0
  '';

This workaround was later not needed (I'm not going to bisect when).

Trying this today, it still solves the problem. (I've added logs)
However, it is a workaround (and I assume that packages like Lutris or Heroic would also need it, if using system libs).

@lilyinstarlight
Copy link
Member

lilyinstarlight commented May 15, 2024

I couldn't get bottles to work for me (it seems any bottle I make just stays grayed out?), but I think this is enough information for me to figure out the issue

Reverting that upstream commit is itself also a workaround (rather than strict fix) from what I can tell, but I'll get to the bottom of it today or tomorrow

@ezKEa
Copy link

ezKEa commented May 16, 2024

Might or might not be a proper fix, but my game launcher repo was seeing the same problem on unstable branch, fixed by adding GStreamer and it's plugins to buildInputs, where wrapGAppsHook4 will see them and set the appropriate env vars correctly (as documented here). The lutris package seems to have incidentally already been doing this, which is what led me to try it as a solution.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants