You are not logged in.

#1 2024-01-10 08:30:37

2001herne
Member
Registered: 2020-09-27
Posts: 9

[SOLVED] Certain games crash with pipewire but not pulseaudio

I am unable to run Zachtronics TIS-100 and Infinifactory when using pipewire. They work fine when using pulseaudio.
The error appears to be in libmono, though this may be a false positive (see https://github.com/mono/mono/issues/19131).
Obviously I can't keep switching between pulseaudio and pipewire just for a couple of games. Is there anything I'm missing that might let me run this with pipewire? Or failing that, is there any way for pipewire and pulse to coexist? I'm happy to provide more info as its needed.

I'm not sure if it's needed, but if it is I'm running nvidia with proprietary drivers  (nvidia-dkms on linux)

Output log of game:

Running TIS-100
Set current directory to /home/<username>/Games/Heroic/TIS-100/game
Found path: /home/<username>/Games/Heroic/TIS-100/game/tis100.x86_64
Mono path[0] = '/home/<username>/Games/Heroic/TIS-100/game/tis100_Data/Managed'
Mono path[1] = '/home/<username>/Games/Heroic/TIS-100/game/tis100_Data/Mono'
Mono config path = '/home/<username>/Games/Heroic/TIS-100/game/tis100_Data/Mono/etc'
displaymanager : xrandr version warning. 1.6
client has 8 screens
displaymanager screen (0)(DP-1): 1920 x 1080
displaymanager screen (1)(eDP1): 1920 x 1080
displaymanager screen (2)(HDMI1): 1920 x 1080
Using libudev for joystick management


Importing game controller configs
./start.sh: line 16: 76078 Aborted                 (core dumped) ./"tis100.x86_64"

Contents of /home/<username>/.config/unity3d/Zachtronics/TIS-100/Player.log:

munmap_chunk(): invalid pointer
Stacktrace:


Native stacktrace:

	/home/benjaminherne/Games/Heroic/TIS-100/game/tis100_Data/Mono/x86_64/libmono.so(+0x915e6) [0x7f7db40915e6]
	/usr/lib/libc.so.6(+0x3e710) [0x7f7db4b6f710]
	/usr/lib/libc.so.6(+0x8e83c) [0x7f7db4bbf83c]
	/usr/lib/libc.so.6(raise+0x18) [0x7f7db4b6f668]
	/usr/lib/libc.so.6(abort+0xd7) [0x7f7db4b574b8]
	/usr/lib/libc.so.6(+0x27390) [0x7f7db4b58390]
	/usr/lib/libc.so.6(+0x987b7) [0x7f7db4bc97b7]
	/usr/lib/libc.so.6(+0x98a5c) [0x7f7db4bc9a5c]
	/usr/lib/libc.so.6(free+0xba) [0x7f7db4bce39a]
	./tis100.x86_64() [0xaf508a]
	./tis100.x86_64() [0x12e9b80]
	./tis100.x86_64() [0x1310d5f]
	./tis100.x86_64() [0x12ffbb8]
	./tis100.x86_64() [0x130400a]
	./tis100.x86_64() [0x12f60c9]
	./tis100.x86_64() [0xaf6938]
	./tis100.x86_64() [0xaf6bbb]
	./tis100.x86_64() [0xafab5d]
	./tis100.x86_64() [0x7ec12f]
	./tis100.x86_64() [0x7eefb4]
	./tis100.x86_64() [0x7f3bf0]
	./tis100.x86_64() [0x7f3cdb]
	./tis100.x86_64() [0x48321f]
	./tis100.x86_64() [0x710c4b]
	./tis100.x86_64() [0x45ed79]
	/usr/lib/libc.so.6(+0x27cd0) [0x7f7db4b58cd0]
	/usr/lib/libc.so.6(__libc_start_main+0x8a) [0x7f7db4b58d8a]
	./tis100.x86_64() [0x46813d]

Debug info from gdb:

I refuse to debug myself!
No threads.

=================================================================
Got a SIGABRT while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries 
used by your application.
=================================================================

<Lots of openGL extensions>

Setting maxVSyncInterval to 4
GL: Detected 4096 MB VRAM
Initialize engine version: 5.1.2f1 (afd2369b692a)

Relevant lines from journalctl:

Jan 10 19:25:10 archGaming systemd-coredump[92850]: Process 92759 (tis100.x86_64) of user 1000 dumped core.
                                                    
                                                    Stack trace of thread 92759:
                                                    #0  0x00007f8e67fbf83c n/a (libc.so.6 + 0x8e83c)
                                                    #1  0x00007f8e67f6f668 raise (libc.so.6 + 0x3e668)
                                                    #2  0x00007f8e67f574b8 abort (libc.so.6 + 0x264b8)
                                                    #3  0x00007f8e674917ea n/a (/home/<username>/Games/Heroic/TIS-100/game/tis100_Data/Mono/x86_64/libmono.so + 0x917ea)
                                                    ELF object binary architecture: AMD x86-64

Last edited by 2001herne (2024-01-10 21:25:40)

Offline

#2 2024-01-10 08:38:04

V1del
Forum Moderator
Registered: 2012-10-16
Posts: 21,771

Re: [SOLVED] Certain games crash with pipewire but not pulseaudio

is lib32-libpipewire installed?

Also while running into the "problematic" situation

sudo fuser -v /dev/snd/*
systemctl --user status pipewire{,-pulse} wireplumber pipewire-media-session pulseaudio
pacman -Qs 'pulse|pipewire'

Last edited by V1del (2024-01-10 08:40:30)

Offline

#3 2024-01-10 08:40:00

2001herne
Member
Registered: 2020-09-27
Posts: 9

Re: [SOLVED] Certain games crash with pipewire but not pulseaudio

V1del wrote:

is lib32-libpipewire installed?

Yes, it is installed.

Offline

#4 2024-01-10 08:41:27

V1del
Forum Moderator
Registered: 2012-10-16
Posts: 21,771

Re: [SOLVED] Certain games crash with pipewire but not pulseaudio

See my edit for some more information

But FWIW this doesn't read like a crash in pipewire relevant code and potentially some incompatibility with old libc versions the games might be linked against... The easiest would likely be to run these via wine/proton or so.

Last edited by V1del (2024-01-10 08:43:14)

Offline

#5 2024-01-10 08:57:23

2001herne
Member
Registered: 2020-09-27
Posts: 9

Re: [SOLVED] Certain games crash with pipewire but not pulseaudio

Yeah, I was worried that it's be something like that. I don't like using proton/wine except as a last resort. With that said though:

sudo fuser -v /dev/snd/*

                     USER        PID ACCESS COMMAND
/dev/snd/controlC0:  <username>    856 F.... wireplumber
/dev/snd/controlC1:  <username>    856 F.... wireplumber
/dev/snd/controlC2:  <username>    854 F.... pipewire
                     <username>    856 F.... wireplumber
/dev/snd/pcmC2D3p:   <username>    854 F...m pipewire
/dev/snd/seq:        <username>    854 F.... pipewire
systemctl --user status pipewire{,-pulse} wireplumber pipewire-media-session pulseaudio

● pipewire.service - PipeWire Multimedia Service
     Loaded: loaded (/usr/lib/systemd/user/pipewire.service; enabled; preset: enabled)
     Active: active (running) since Wed 2024-01-10 18:58:19 AEDT; 54min ago
TriggeredBy: ● pipewire.socket
   Main PID: 854 (pipewire)
      Tasks: 3 (limit: 19030)
     Memory: 24.6M (peak: 26.1M)
        CPU: 1min 5.504s
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire.service
             └─854 /usr/bin/pipewire

Jan 10 18:58:19 archGaming systemd[846]: Started PipeWire Multimedia Service.
Jan 10 18:58:21 archGaming pipewire[854]: [0:00:22.945232755] [854] ERROR IPAModule ipa_module.cpp:172 Symbol ipaModuleInfo not found
Jan 10 18:58:21 archGaming pipewire[854]: [0:00:22.945269740] [854] ERROR IPAModule ipa_module.cpp:292 v4l2-compat.so: IPA module has no valid info
Jan 10 18:58:21 archGaming pipewire[854]: [0:00:22.945332755] [854]  INFO Camera camera_manager.cpp:284 libcamera v0.1.0
Jan 10 19:41:16 archGaming pipewire[854]: [0:43:18.746665260] [854] ERROR IPAModule ipa_module.cpp:172 Symbol ipaModuleInfo not found
Jan 10 19:41:16 archGaming pipewire[854]: [0:43:18.746678927] [854] ERROR IPAModule ipa_module.cpp:292 v4l2-compat.so: IPA module has no valid info
Jan 10 19:41:16 archGaming pipewire[854]: [0:43:18.746710669] [854]  INFO Camera camera_manager.cpp:284 libcamera v0.1.0

● pipewire-pulse.service - PipeWire PulseAudio
     Loaded: loaded (/usr/lib/systemd/user/pipewire-pulse.service; enabled; preset: enabled)
     Active: active (running) since Wed 2024-01-10 18:58:19 AEDT; 54min ago
TriggeredBy: ● pipewire-pulse.socket
   Main PID: 857 (pipewire-pulse)
      Tasks: 2 (limit: 19030)
     Memory: 24.4M (peak: 25.1M)
        CPU: 2min 24.630s
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire-pulse.service
             └─857 /usr/bin/pipewire-pulse

Jan 10 18:58:19 archGaming systemd[846]: Started PipeWire PulseAudio.

● wireplumber.service - Multimedia Service Session Manager
     Loaded: loaded (/usr/lib/systemd/user/wireplumber.service; enabled; preset: enabled)
     Active: active (running) since Wed 2024-01-10 18:58:19 AEDT; 54min ago
   Main PID: 856 (wireplumber)
      Tasks: 6 (limit: 19030)
     Memory: 66.1M (peak: 76.4M)
        CPU: 9.590s
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/wireplumber.service
             └─856 /usr/bin/wireplumber

Jan 10 18:58:19 archGaming wireplumber[856]: [0:00:21.223218679] [856] ERROR IPAModule ipa_module.cpp:292 v4l2-compat.so: IPA module has no valid info
Jan 10 18:58:19 archGaming wireplumber[856]: [0:00:21.223369796] [856]  INFO Camera camera_manager.cpp:284 libcamera v0.1.0
Jan 10 18:58:21 archGaming wireplumber[856]: <WpSiAudioAdapter:0x560a198f5b00> Object activation aborted: proxy destroyed
Jan 10 18:58:21 archGaming wireplumber[856]: <WpSiAudioAdapter:0x560a198f5b00> failed to activate item: Object activation aborted: proxy destroyed
Jan 10 18:58:21 archGaming wireplumber[856]: <WpPortalPermissionStorePlugin:0x560a196ce210> Failed to call Lookup: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for camera
Jan 10 18:58:21 archGaming wireplumber[856]: <WpPortalPermissionStorePlugin:0x560a196ce210> Failed to call Lookup: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for camera
Jan 10 18:58:21 archGaming wireplumber[856]: <WpPortalPermissionStorePlugin:0x560a196ce210> Failed to call Lookup: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for camera
Jan 10 18:58:21 archGaming wireplumber[856]: <WpPortalPermissionStorePlugin:0x560a196ce210> Failed to call Lookup: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for camera
Jan 10 19:41:16 archGaming wireplumber[856]: <WpPortalPermissionStorePlugin:0x560a196ce210> Failed to call Lookup: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for camera
Jan 10 19:41:16 archGaming wireplumber[856]: <WpPortalPermissionStorePlugin:0x560a196ce210> Failed to call Lookup: GDBus.Error:org.freedesktop.portal.Error.NotFound: NoUnit pipewire-media-session.service could not be found.
Unit pulseaudio.service could not be found.
 entry for camera
pacman -Qs 'pulse|pipewire'

local/easyeffects 7.1.3-1
    Audio Effects for Pipewire applications
local/gtk-vnc 1.3.1-1
    VNC viewer widget for GTK
local/helvum 0.5.1-1
    GTK patchbay for PipeWire
local/lib32-libcanberra 1:0.30+r2+gc0620e4-2
    A small and lightweight implementation of the XDG Sound Theme Specification (32-bit)
local/lib32-libpipewire 1:1.0.0-1
    Low-latency audio/video router and processor - 32-bit - client library
local/lib32-libpulse 16.1-6
    A featureful, general-purpose sound server (32-bit client libraries)
local/lib32-pipewire 1:1.0.0-1
    Low-latency audio/video router and processor - 32-bit
local/libcanberra 1:0.30+r2+gc0620e4-3
    A small and lightweight implementation of the XDG Sound Theme Specification
local/libpipewire 1:1.0.0-2
    Low-latency audio/video router and processor - client library
local/libpulse 16.1-7
    A featureful, general-purpose sound server (client library)
local/libwireplumber 0.4.17-1
    Session / policy manager implementation for PipeWire - client library
local/pamixer 1.6-2
    Pulseaudio command-line mixer like amixer
local/pavucontrol 1:5.0+r64+geba9ca6-1
    PulseAudio Volume Control
local/pipewire 1:1.0.0-2
    Low-latency audio/video router and processor
local/pipewire-alsa 1:1.0.0-2
    Low-latency audio/video router and processor - ALSA configuration
local/pipewire-audio 1:1.0.0-2
    Low-latency audio/video router and processor - Audio support
local/pipewire-jack 1:1.0.0-2
    Low-latency audio/video router and processor - JACK replacement
local/pipewire-pulse 1:1.0.0-2
    Low-latency audio/video router and processor - PulseAudio replacement
local/pipewire-v4l2 1:1.0.0-2
    Low-latency audio/video router and processor - V4L2 interceptor
local/pipewire-zeroconf 1:1.0.0-2
    Low-latency audio/video router and processor - Zeroconf support
local/pulseaudio-qt 1.4.0-1
    Qt bindings for libpulse
local/qemu-audio-pa 8.2.0-2
    QEMU PulseAudio audio driver
local/qemu-audio-pipewire 8.2.0-2
    QEMU PipeWire audio driver
local/wireplumber 0.4.17-1
    Session / policy manager implementation for PipeWire
local/xfce4-pulseaudio-plugin 0.4.8-1 (xfce4-goodies)
    Pulseaudio plugin for the Xfce4 panel

Offline

#6 2024-01-10 09:15:07

seth
Member
Registered: 2012-09-03
Posts: 51,671

Re: [SOLVED] Certain games crash with pipewire but not pulseaudio

Offline

#7 2024-01-10 09:55:21

2001herne
Member
Registered: 2020-09-27
Posts: 9

Re: [SOLVED] Certain games crash with pipewire but not pulseaudio

seth wrote:

commenting out v4l2_monitor.enable() and libcamera_monitor.enable() had no effect after a reboot.

Offline

#8 2024-01-10 15:10:49

seth
Member
Registered: 2012-09-03
Posts: 51,671

Re: [SOLVED] Certain games crash with pipewire but not pulseaudio

Are the ipa_module errors gone w/ that?
https://wiki.archlinux.org/title/PipeWi … r_PipeWire ?

And going by the OP, do you have a gamepad/joystick?
(There used to be serial ports on soundcards for that purpose …)

Offline

#9 2024-01-10 21:23:06

2001herne
Member
Registered: 2020-09-27
Posts: 9

Re: [SOLVED] Certain games crash with pipewire but not pulseaudio

So, yes the errors are fixed when I do that, but it's not the fix - the FMOD audio engine fix worked. I'm not sure if the game uses FMOD, but the fix for it worked.
For reference, in case it's removed from the arch wiki at some point:

ln -s /bin/true /bin/pulseaudio

Also note from the wiki: This will prevent you from installing Pulseaudio, so remove the symlink if you want to switch back.

Offline

#10 2024-01-11 00:12:40

V1del
Forum Moderator
Registered: 2012-10-16
Posts: 21,771

Re: [SOLVED] Certain games crash with pipewire but not pulseaudio

they check for the presence of the pulseaudio binary? wtf....

Offline

#11 2024-01-11 01:01:51

2001herne
Member
Registered: 2020-09-27
Posts: 9

Re: [SOLVED] Certain games crash with pipewire but not pulseaudio

V1del wrote:

they check for the presence of the pulseaudio binary? wtf....

Worse I think - They assume the presence of the pulsaudio binary, and use the assumed binary to check whether the daemon is running for the current user
https://man.archlinux.org/man/pulseaudio.1.en#check

Offline

Board footer

Powered by FluxBB