Comment 896 for bug 1958019

Revision history for this message
In , cam (cam-linux-kernel-bugs) wrote :

In my case, there seems to be an issue with pipewire using too many file descriptors:
systemctl status --user pipewire
● pipewire.service - PipeWire Multimedia Service
     Loaded: loaded (/usr/lib/systemd/user/pipewire.service; enabled; preset: enabled)
     Active: active (running) since Fri 2024-04-26 07:53:43 PDT; 11h ago
TriggeredBy: ● pipewire.socket
   Main PID: 3468 (pipewire)
      Tasks: 3 (limit: 38161)
     Memory: 12.6M
        CPU: 38.400s
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire.service
             └─3468 /usr/bin/pipewire

Apr 26 18:53:58 hostname pipewire[3468]: mod.client-node: 0x60925302fed0: error seq:13 -9 (set_activation: Bad file descriptor)
Apr 26 18:53:58 hostname pipewire[3468]: pw.core: 0x609252c77940: error -9 for resource 2: node_set_io failed: Bad file descriptor
Apr 26 18:53:58 hostname pipewire[3468]: mod.client-node: 0x60925302fed0: error seq:14 -9 (node_set_io failed: Bad file descriptor)
Apr 26 18:53:58 hostname pipewire[3468]: mod.protocol-native: connection 0x609252e5f710: can't DUP fd:1021 Too many open files
Apr 26 18:53:58 hostname pipewire[3468]: mod.protocol-native: connection 0x609252e5f710: can't DUP fd:1020 Too many open files
Apr 26 18:53:58 hostname pipewire[3468]: pw.core: 0x609252c77940: error -9 for resource 2: set_activation: Bad file descriptor
Apr 26 18:53:58 hostname pipewire[3468]: mod.client-node: 0x609252d7cdf0: error seq:23 -9 (set_activation: Bad file descriptor)
Apr 26 18:54:06 hostname pipewire[3468]: mod.protocol-native: connection 0x609252e5f710: can't DUP fd:579 Too many open files
Apr 26 18:58:00 hostname pipewire[3468]: mod.client-node: 0x609252fc1b70: unknown peer 0x609252fc2050 fd:98
Apr 26 18:58:15 hostname pipewire[3468]: mod.protocol-native: 0x609252c9c030: connection_data: client 0x609252fc29c0 error -71 (Protocol error)

I was able to get my sound working by logging out and back in.

After I got it working, I ran this:
lsof -p3468 | wc -l
1013

I wonder if it was around 1024 before I logged out..?

The open file limit for the process is: 1024

This explains why "killall pipewire-pulse" would get my sound working again for a single application... It was freeing up one file descriptor.

Is this a pipewire bug, a tas2781 driver bug, or a bit of both? I think if this were a general pipewire issue, we'd be hearing a lot more complaints...

After logging in, I tried this:
systemctl restart --user pipewire

This resulted in a new pipewire process and only 25 open file descriptors. Wonder if this would have fixed the issue without logging out? Something else to try next time.

Next time this happens, I'll see if I can figure what all the file descriptors are for.

For others having this or similar trouble, see if you're having similar issues with pipewire (or perhaps even pulse) and file descriptors.

/var/log/syslog is another valid place to check for these messages (at least on Ubuntu).