MaartenBaert / ssr

SimpleScreenRecorder, a screen recorder for Linux
http://www.maartenbaert.be/simplescreenrecorder/
GNU General Public License v3.0
2.56k stars 288 forks source link

Segfault on OGL + Steam #95

Open Conzar opened 10 years ago

Conzar commented 10 years ago

I am unable to launch steam games with the OpenGL option.

System Specs

Ubuntu 12.04 Nvidia Driver: 304.108 (Geforce 560 GTX) Home directory symlinked (not sure if this is relevant)

Using SSR with Steam was tested with 2 methods.

Method 1 (Steam First --> SSR)

Steam was started first and then SSR.

Steam Log

Generating new string page texture 128: 256x256, total string texture memory is 2.67 MB saving roaming config store to 'sharedconfig.vdf' roaming config store 2 saved successfully Installing breakpad exception handler for appid(steam)/version(1388185498_client) Game update: AppID 204300 "Awesomenauts", ProcID 28344, IP 0.0.0.0:0 ERROR: ld.so: object '/storage/home/mspeth/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded: ignored. CGameStreamThread: Added instance ID 28344 for appid 204300 CGameStreamThread: Set render instance ID 28344 for appid 204300 Generating new string page texture 139: 48x256, total string texture memory is 2.72 MB [SSR-GLInject] Library loaded (64-bit). [SSR-GLInject] Library successfully initialized. [SSR-GLInject] Library loaded (32-bit). [SSR-GLInject] Library successfully initialized. CGameStreamThread: Added instance ID 28345 for appid 204300 Segmentation fault (core dumped) Game removed: AppID 204300 "Awesomenauts", ProcID 28344

Method 2 (SSR --> Steam)

SSR was started first than Steam.

Steam Log

Game update: AppID 204300 "Awesomenauts", ProcID 28625, IP 0.0.0.0:0 CGameStreamThread: Added instance ID 28625 for appid 204300 CGameStreamThread: Set render instance ID 28625 for appid 204300 ERROR: ld.so: object '/storage/home/mspeth/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded: ignored. [SSR-GLInject] Library loaded (64-bit). [SSR-GLInject] Library successfully initialized. [SSR-GLInject] Library loaded (32-bit). [SSR-GLInject] Library successfully initialized. CGameStreamThread: Added instance ID 28626 for appid 204300 Segmentation fault (core dumped) Game removed: AppID 204300 "Awesomenauts", ProcID 28625

MaartenBaert commented 10 years ago

Did you follow these steps? http://www.maartenbaert.be/simplescreenrecorder/recording-steam-games/

If that fails, try replacing the command with this:

LD_PRELOAD="libssr-glinject.so $LD_PRELOAD" SSR_GLINJECT_SHM=2129944 %command%

If that also fails, disable 'Steam community integration' in the Steam settings, and try again.

Conzar commented 10 years ago

Thanks for the response. I have followed the installation steps. Please see the following for details:

Verify that ssr is installed

sudo apt-get install simplescreenrecorder Reading package lists... Done Building dependency tree Reading state information... Done simplescreenrecorder is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 6 not upgraded. mspeth@xwing:~$ sudo apt-get install simplescreenrecorder-lib:i386 Reading package lists... Done Building dependency tree Reading state information... Done simplescreenrecorder-lib:i386 is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 6 not upgraded.

Steam with Default COMMAND

Game update: AppID 204300 "Awesomenauts", ProcID 18402, IP 0.0.0.0:0 ERROR: ld.so: object '/storage/home/mspeth/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded: ignored. CGameStreamThread: Added instance ID 18402 for appid 204300 CGameStreamThread: Set render instance ID 18402 for appid 204300 [SSR-GLInject] Library loaded (64-bit). [SSR-GLInject] Library successfully initialized. [SSR-GLInject] Library loaded (32-bit). [SSR-GLInject] Library successfully initialized. CGameStreamThread: Added instance ID 18403 for appid 204300 Segmentation fault (core dumped) Game removed: AppID 204300 "Awesomenauts", ProcID 18402 Focused window is now 0, 0

Steam with new COMMAND

Game update: AppID 204300 "Awesomenauts", ProcID 18420, IP 0.0.0.0:0 ERROR: ld.so: object '/storage/home/mspeth/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded: ignored. ERROR: ld.so: object '/storage/home/mspeth/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded: ignored. CGameStreamThread: Added instance ID 18420 for appid 204300 CGameStreamThread: Set render instance ID 18420 for appid 204300 CGameStreamThread: Added instance ID 18421 for appid 204300 Segmentation fault (core dumped) Game removed: AppID 204300 "Awesomenauts", ProcID 18420

Steam with new and community integration settings turned off

Game update: AppID 204300 "Awesomenauts", ProcID 18425, IP 0.0.0.0:0 [SSR-GLInject] Library loaded (64-bit). [SSR-GLInject] Library successfully initialized. CGameStreamThread: Added instance ID 18425 for appid 204300 CGameStreamThread: Set render instance ID 18425 for appid 204300 [SSR-GLInject] Library loaded (32-bit). [SSR-GLInject] Library successfully initialized. Segmentation fault (core dumped) Game removed: AppID 204300 "Awesomenauts", ProcID 18425 Installing breakpad exception handler for appid(steam)/version(1388790359_client)

SSR

==================== Starting SSR ==================== SimpleScreenRecorder: 0.1.2 Qt: header 4.8.1, lib 4.8.1 libavformat: header 53.21.1, lib 53.21.1 libavcodec: header 53.35.0, lib 53.35.0 libavutil: header 51.22.1, lib 51.22.1 libswscale: header 2.1.0, lib 2.1.0 Got bus address: "unix:abstract=/tmp/dbus-ISad1VpIMi,guid=9df83b79007699ee30754dbe00030acc" Connected to accessibility bus at: "unix:abstract=/tmp/dbus-ISad1VpIMi,guid=9df83b79007699ee30754dbe00030acc" Registered DEC: true [DetectCPUFeatures] CPU features: mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 [FastScaler::FastScaler] BGRA to YUV420 converter: SSSE3 Registered event listener change listener: true FIXME: handle dialog start. FIXME: handle dialog end. [PageRecord::PageStart] Starting page ... [GLInjectLauncher::Init] Full command: LD_PRELOAD=libssr-glinject.so SSR_GLINJECT_SHM=404848657 %command% [PageRecord::PageStart] Started page.

MaartenBaert commented 10 years ago

Looks like it's a GLInject bug. I've rewritten GLInject for the next version of SSR, it is likely that this will fix the issue you're seeing now. Please wait until then.

Conzar commented 10 years ago

Do you have a release date?

MaartenBaert commented 10 years ago

No, there's still a lot of work to be done and I don't have much time at the moment. It will probably take 1-2 months or more.

Conzar commented 10 years ago

I pulled from the git repo and compiled the glinject-next branch. It seems the interface for OpenGL has changed a bit. Do you have any documentation on how to use the new OpenGL menu?

MaartenBaert commented 10 years ago

Not yet, but it's simpler than before. You just use 'ssr-glinject %command%' as the launch command in Steam, and SSR doesn't even need to be active. You can leave the command like that forever, it shouldn't interfere.

Steam is problematic because it's doing some weird things with libraries. I've found that almost all crashes are fixed by doing two things:

If you are playing a Humble Bundle game, you can usually launch it outside of Steam as well (they are DRM-free), this often makes it easier to record the game.

Edit: Oops, pressed the wrong button ...

Conzar commented 10 years ago

What should the "Launch Command" be set to? %command%? Settings ssr-glinject %command% still doesn't launch the game. I haven't tried to disable steam community integration yet because Awesomenauts requires it I think to join games.

MaartenBaert commented 10 years ago

@Conzar The launch command in SSR can be anything, it won't be used unless you check the 'automatic launch' checkbox. The launch command in Steam should be 'ssr-glinject %command%'.

AFAIK It will never work with community integration. But I've found that even with community integration disabled, games can still communicate with Steam for things like achievements. I think the 'community integration' setting is really just a workaround for games that have no real Steam integration.