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

GLRecord with Steam: `GLIBCXX_3.4.20' not found #214

Open
Lucki opened this Issue Jul 5, 2014 · 15 comments

Comments

Projects
None yet
5 participants
@Lucki

Lucki commented Jul 5, 2014

I've tried to capture a game through steam with ssr-glinject %command%. Commit 2c71d72 already applied.
Steam gives me this error message: /bin/bash: /home/lucki/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version 'GLIBCXX_3.4.20' not found (required by /usr/lib/libssr-glinject.so).

@MaartenBaert

This comment has been minimized.

Show comment
Hide comment
@MaartenBaert

MaartenBaert Jul 6, 2014

Owner

Which distro are you using?

The problem is that the steam runtime includes an outdated version of libstdc++, and libssr-glinject was compiled against a newer version.

My preferred solution is to disable the Steam runtime (start steam as STEAM_RUNTIME=0 steam). This will avoid the compatibility problems, but you may have to install some extra libraries to make it work. There are some instructions for this here:
https://wiki.archlinux.org/index.php/Steam#Using_native_runtime
UPDATE: This method doesn't seem to work anymore.

An alternative solution is to download the SSR library packages from Ubuntu 12.04:
https://launchpad.net/~maarten-baert/+archive/simplescreenrecorder/+files/simplescreenrecorder-lib_0.3.3-1%7Eppa1%7Eprecise1_amd64.deb
https://launchpad.net/~maarten-baert/+archive/simplescreenrecorder/+files/simplescreenrecorder-lib_0.3.3-1%7Eppa1%7Eprecise1_i386.deb
You can extract these with most archive programs. Inside there's a file called libssr-glinject.so which you can copy to the Steam runtime directories. Since this version is compiled for Ubuntu 12.04, it should be 100% compatible with the Steam runtime.

The disadvantage of the second solution is that Steam will remove the library whenever the Steam runtime is updated, so you have to do it again whenever that happens. And you have to remember to download the right version of the Ubuntu package so it is in sync with SSR.

Owner

MaartenBaert commented Jul 6, 2014

Which distro are you using?

The problem is that the steam runtime includes an outdated version of libstdc++, and libssr-glinject was compiled against a newer version.

My preferred solution is to disable the Steam runtime (start steam as STEAM_RUNTIME=0 steam). This will avoid the compatibility problems, but you may have to install some extra libraries to make it work. There are some instructions for this here:
https://wiki.archlinux.org/index.php/Steam#Using_native_runtime
UPDATE: This method doesn't seem to work anymore.

An alternative solution is to download the SSR library packages from Ubuntu 12.04:
https://launchpad.net/~maarten-baert/+archive/simplescreenrecorder/+files/simplescreenrecorder-lib_0.3.3-1%7Eppa1%7Eprecise1_amd64.deb
https://launchpad.net/~maarten-baert/+archive/simplescreenrecorder/+files/simplescreenrecorder-lib_0.3.3-1%7Eppa1%7Eprecise1_i386.deb
You can extract these with most archive programs. Inside there's a file called libssr-glinject.so which you can copy to the Steam runtime directories. Since this version is compiled for Ubuntu 12.04, it should be 100% compatible with the Steam runtime.

The disadvantage of the second solution is that Steam will remove the library whenever the Steam runtime is updated, so you have to do it again whenever that happens. And you have to remember to download the right version of the Ubuntu package so it is in sync with SSR.

@Lucki

This comment has been minimized.

Show comment
Hide comment
@Lucki

Lucki Jul 6, 2014

I'm using Arch, where I can't find libnm-glib.so.4 and libnm-util.so.2 to use steam without it's runtime.
The second solution works.
But both of them are a bit fiddly :-/

Lucki commented Jul 6, 2014

I'm using Arch, where I can't find libnm-glib.so.4 and libnm-util.so.2 to use steam without it's runtime.
The second solution works.
But both of them are a bit fiddly :-/

@MaartenBaert

This comment has been minimized.

Show comment
Hide comment
@MaartenBaert

MaartenBaert Jul 6, 2014

Owner

I copied the 32-bit versions from the steam runtime to /usr/local/lib32, along with libgcrypt and libwrap I think. The other libraries are in the repository or AUR.

Owner

MaartenBaert commented Jul 6, 2014

I copied the 32-bit versions from the steam runtime to /usr/local/lib32, along with libgcrypt and libwrap I think. The other libraries are in the repository or AUR.

@Lucki

This comment has been minimized.

Show comment
Hide comment
@Lucki

Lucki Jul 6, 2014

Ha, that's an idea - just copy them…
So for now, it works with some effort.

Lucki commented Jul 6, 2014

Ha, that's an idea - just copy them…
So for now, it works with some effort.

@Brottweiler

This comment has been minimized.

Show comment
Hide comment
@Brottweiler

Brottweiler Jul 29, 2015

Where exactly did you copy libssr-glinject.so to?

I tried copying it to .local/share/Steam/ubuntu12_32/steam-runtime and .local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu but neither makes a difference.

Brottweiler commented Jul 29, 2015

Where exactly did you copy libssr-glinject.so to?

I tried copying it to .local/share/Steam/ubuntu12_32/steam-runtime and .local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu but neither makes a difference.

@Brottweiler

This comment has been minimized.

Show comment
Hide comment
@Brottweiler

Brottweiler Jul 29, 2015

Also I'd like to ask something on this topic.

I added Minecraft to Steam. I added the ssr-glinject %command% launch option. Started SSR, OpenGL settings is empty except channel-brott as Channel name (default, haven't messed with it).

I go to the recording screen, then launch minecraft. But I cannot record.

I am getting the usual message when you don't have an OpenGL even opened:

[PageRecord::StartOutput] Error: Could not get the size of the OpenGL application. Either the application wasn't started correctly, or the application hasn't created an OpenGL window yet. If you want to start recording before starting the application, you have to enable scaling and enter the video size manually.

Any idea how to make this work?

Edit: Solved it: I added a minecraft-steam binary in ~/.local/bin with this content:

#!/bin/sh

# fix for users of special IM modules
unset XMODIFIERS GTK_IM_MODULE QT_IM_MODULE

exec ssr-glinject java -jar /usr/share/minecraft/Minecraft.jar $@

It's the same content as the /usr/bin/minecraft has that comes from the minecraft AUR package, but I added ssr-glinject before the java. Then in Steam, I added "/home/brott/.local/bin/minecraft-steam" as target.

Brottweiler commented Jul 29, 2015

Also I'd like to ask something on this topic.

I added Minecraft to Steam. I added the ssr-glinject %command% launch option. Started SSR, OpenGL settings is empty except channel-brott as Channel name (default, haven't messed with it).

I go to the recording screen, then launch minecraft. But I cannot record.

I am getting the usual message when you don't have an OpenGL even opened:

[PageRecord::StartOutput] Error: Could not get the size of the OpenGL application. Either the application wasn't started correctly, or the application hasn't created an OpenGL window yet. If you want to start recording before starting the application, you have to enable scaling and enter the video size manually.

Any idea how to make this work?

Edit: Solved it: I added a minecraft-steam binary in ~/.local/bin with this content:

#!/bin/sh

# fix for users of special IM modules
unset XMODIFIERS GTK_IM_MODULE QT_IM_MODULE

exec ssr-glinject java -jar /usr/share/minecraft/Minecraft.jar $@

It's the same content as the /usr/bin/minecraft has that comes from the minecraft AUR package, but I added ssr-glinject before the java. Then in Steam, I added "/home/brott/.local/bin/minecraft-steam" as target.

@MaartenBaert

This comment has been minimized.

Show comment
Hide comment
@MaartenBaert

MaartenBaert Jul 29, 2015

Owner

@Brottweiler Start steam from a terminal so you can see the error messages from ssr-glinject. Also, the correct path is ~/.steam/steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu.

Owner

MaartenBaert commented Jul 29, 2015

@Brottweiler Start steam from a terminal so you can see the error messages from ssr-glinject. Also, the correct path is ~/.steam/steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu.

@Brottweiler

This comment has been minimized.

Show comment
Hide comment
@Brottweiler

Brottweiler Jul 29, 2015

I placed simplescreenrecorder-lib_0.3.3-1-ppa1-precise1_i386/data/usr/lib/i386-linux-gnu/libssr-glinject.so into .local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu but I still get the error OP gets:

Game update: AppID 300 "Day of Defeat: Source", ProcID 29328, IP 0.0.0.0:0
ERROR: ld.so: object '/home/brott/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/brott/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ssr-glinject: LD_PRELOAD = :/home/brott/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so:/home/brott/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so:libssr-glinject.so
ssr-glinject: command = /home/brott/.local/share/Steam/steamapps/common/Day of Defeat Source/hl2.sh -game dod -steam
ERROR: ld.so: object '/home/brott/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
/bin/bash: /home/brott/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /usr/lib/libssr-glinject.so)
Game removed: AppID 300 "Day of Defeat: Source", ProcID 29328 

Brottweiler commented Jul 29, 2015

I placed simplescreenrecorder-lib_0.3.3-1-ppa1-precise1_i386/data/usr/lib/i386-linux-gnu/libssr-glinject.so into .local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu but I still get the error OP gets:

Game update: AppID 300 "Day of Defeat: Source", ProcID 29328, IP 0.0.0.0:0
ERROR: ld.so: object '/home/brott/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/brott/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ssr-glinject: LD_PRELOAD = :/home/brott/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so:/home/brott/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so:libssr-glinject.so
ssr-glinject: command = /home/brott/.local/share/Steam/steamapps/common/Day of Defeat Source/hl2.sh -game dod -steam
ERROR: ld.so: object '/home/brott/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
/bin/bash: /home/brott/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /usr/lib/libssr-glinject.so)
Game removed: AppID 300 "Day of Defeat: Source", ProcID 29328 
@MaartenBaert

This comment has been minimized.

Show comment
Hide comment
@MaartenBaert

MaartenBaert Jul 30, 2015

Owner

Look at the last line: (required by /usr/lib/libssr-glinject.so)
The loader is still trying to use the system libssr-glinject and not the one for Ubuntu. Are you absolutely sure that you have placed the right version in the right folder?

To be clear, that means:

  • Put the 32-bit Ubuntu libssr-glinject.so in ~/.steam/steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu.
  • Put the 64-bit Ubuntu libssr-glinject.so in ~/.steam/steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu.

I suspect you missed the 64-bit one, or you put the 32-bit library in the 64-bit folder. In any case the loader hasn't found the 64-bit Ubuntu libssr-glinject, that's why it doesn't work.

Owner

MaartenBaert commented Jul 30, 2015

Look at the last line: (required by /usr/lib/libssr-glinject.so)
The loader is still trying to use the system libssr-glinject and not the one for Ubuntu. Are you absolutely sure that you have placed the right version in the right folder?

To be clear, that means:

  • Put the 32-bit Ubuntu libssr-glinject.so in ~/.steam/steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu.
  • Put the 64-bit Ubuntu libssr-glinject.so in ~/.steam/steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu.

I suspect you missed the 64-bit one, or you put the 32-bit library in the 64-bit folder. In any case the loader hasn't found the 64-bit Ubuntu libssr-glinject, that's why it doesn't work.

@Brottweiler

This comment has been minimized.

Show comment
Hide comment
@Brottweiler

Brottweiler Jul 30, 2015

You are correct. I only copied the i386 one, and not the amd64 one. Now when I copied over the 2nd one, it works! I think I misunderstood at first.

Brottweiler commented Jul 30, 2015

You are correct. I only copied the i386 one, and not the amd64 one. Now when I copied over the 2nd one, it works! I think I misunderstood at first.

@AngryPenguinPL

This comment has been minimized.

Show comment
Hide comment
@AngryPenguinPL

AngryPenguinPL Nov 14, 2015

HI.

I have still this issues:
I copy two libs like you and not working on my Ubuntu 15.15 x64 but work on Mageia 5 x64.
On Mageia5 i use ssr 0.3.3 (working fine) and on Ubuntu I use ssr 0.3.6 (not working).

In Ubuntu I have error:

Game update: AppID 219740 "Don't Starve", ProcID 6833, IP 0.0.0.0:0
ERROR: ld.so: object '/home/x/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/x/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ssr-glinject: LD_PRELOAD = :/home/x/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so:/home/x/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so:libssr-glinject.so
ssr-glinject: command = /media/x/ACER-DANE/steamapps/common/dont_starve/bin/dontstarve_steam
ERROR: ld.so: object '/home/x/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
Installing breakpad exception handler for appid(steam)/version(1447125378)
Installing breakpad exception handler for appid(steam)/version(1447125378)
/media/x/ACER-DANE/steamapps/common/dont_starve/bin/dontstarve_steam: /home/x/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6: version GLIBCXX_3.4.20' not found (required by /home/x/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/libssr-glinject.so) /media/x/ACER-DANE/steamapps/common/dont_starve/bin/dontstarve_steam: /home/x/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6: versionGLIBCXX_3.4.21' not found (required by /home/x/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/libssr-glinject.so)
Game removed: AppID 219740 "Don't Starve", ProcID 6833

So whats is going on? I copy this libs, so what?

Im trying copy this lib to two directory:
~/.steam/steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu
~/.steam/steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu.

and also
/home/x/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/
/home/x/.local/share/Steam/ubuntu12_32/steam-runtime/x86_64/lib/x86_64-linux-gnu/

AngryPenguinPL commented Nov 14, 2015

HI.

I have still this issues:
I copy two libs like you and not working on my Ubuntu 15.15 x64 but work on Mageia 5 x64.
On Mageia5 i use ssr 0.3.3 (working fine) and on Ubuntu I use ssr 0.3.6 (not working).

In Ubuntu I have error:

Game update: AppID 219740 "Don't Starve", ProcID 6833, IP 0.0.0.0:0
ERROR: ld.so: object '/home/x/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/x/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ssr-glinject: LD_PRELOAD = :/home/x/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so:/home/x/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so:libssr-glinject.so
ssr-glinject: command = /media/x/ACER-DANE/steamapps/common/dont_starve/bin/dontstarve_steam
ERROR: ld.so: object '/home/x/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
Installing breakpad exception handler for appid(steam)/version(1447125378)
Installing breakpad exception handler for appid(steam)/version(1447125378)
/media/x/ACER-DANE/steamapps/common/dont_starve/bin/dontstarve_steam: /home/x/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6: version GLIBCXX_3.4.20' not found (required by /home/x/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/libssr-glinject.so) /media/x/ACER-DANE/steamapps/common/dont_starve/bin/dontstarve_steam: /home/x/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6: versionGLIBCXX_3.4.21' not found (required by /home/x/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/libssr-glinject.so)
Game removed: AppID 219740 "Don't Starve", ProcID 6833

So whats is going on? I copy this libs, so what?

Im trying copy this lib to two directory:
~/.steam/steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu
~/.steam/steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu.

and also
/home/x/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/
/home/x/.local/share/Steam/ubuntu12_32/steam-runtime/x86_64/lib/x86_64-linux-gnu/

@MaartenBaert

This comment has been minimized.

Show comment
Hide comment
@MaartenBaert

MaartenBaert Nov 15, 2015

Owner

Make sure that you are using the libraries from the Ubuntu 12.04 (precise) package that match the version of SSR you are using. You should always use the 12.04 libraries for the Steam runtime since Steam is based on 12.04. You can get the latest packages here:
https://launchpad.net/~maarten-baert/+archive/ubuntu/simplescreenrecorder/+packages

Owner

MaartenBaert commented Nov 15, 2015

Make sure that you are using the libraries from the Ubuntu 12.04 (precise) package that match the version of SSR you are using. You should always use the 12.04 libraries for the Steam runtime since Steam is based on 12.04. You can get the latest packages here:
https://launchpad.net/~maarten-baert/+archive/ubuntu/simplescreenrecorder/+packages

@AngryPenguinPL

This comment has been minimized.

Show comment
Hide comment
@AngryPenguinPL

AngryPenguinPL Nov 28, 2015

You have right. I have libs from ssr 0.3.6 but from Ubuntu 15.10. Helped swaping to lib ssr 0.3.6 from Ubuntu 12.04.

Thanks.

BTW. can you tell me whats new in ssr 0.3.6? I can't find changelog from this version.

AngryPenguinPL commented Nov 28, 2015

You have right. I have libs from ssr 0.3.6 but from Ubuntu 15.10. Helped swaping to lib ssr 0.3.6 from Ubuntu 12.04.

Thanks.

BTW. can you tell me whats new in ssr 0.3.6? I can't find changelog from this version.

@MaartenBaert

This comment has been minimized.

Show comment
Hide comment
@MaartenBaert

MaartenBaert Nov 29, 2015

Owner

Just a bugfix. I will update the changelog.

Owner

MaartenBaert commented Nov 29, 2015

Just a bugfix. I will update the changelog.

@aramboi

This comment has been minimized.

Show comment
Hide comment
@aramboi

aramboi Dec 18, 2015

I created a simple shell script to automate this fix https://gist.github.com/aramboi/a4868861797d243778c0
You can run thin after the Steam runtime is updated and overrides the overrides. :)

aramboi commented Dec 18, 2015

I created a simple shell script to automate this fix https://gist.github.com/aramboi/a4868861797d243778c0
You can run thin after the Steam runtime is updated and overrides the overrides. :)

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