[Webkit-unassigned] [Bug 216745] New: [GTK][WPE] WKTR has lost access to Pulseaudio

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Sun Sep 20 10:10:23 PDT 2020


https://bugs.webkit.org/show_bug.cgi?id=216745

            Bug ID: 216745
           Summary: [GTK][WPE] WKTR has lost access to Pulseaudio
           Product: WebKit
           Version: WebKit Nightly Build
          Hardware: Unspecified
                OS: Unspecified
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: Tools / Tests
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: pnormand at igalia.com
                CC: dpino at igalia.com, lmoura at igalia.com

I was trying to debug #216716 so I locally un-flagged it and ran it in loop, after noticing a consistent crash after 24 or 25 successful iterations, I dug in another debug black hole...

The crash happens when I run:
run-webkit-tests --gtk --exit-after-n-failures=1 --iterations=200 --no-retry-failures --no-show-results fast/mediastream/mediastreamtrack-video-clone.html

24th or 25th iteration will crash. Then check the crash log attached to this bug, snippet:

STDERR: shm_open() failed: No such file or directory
STDERR: shm_open() failed: No such file or directory
STDERR: shm_open() failed: No such file or directory
STDERR: shm_open() failed: No such file or directory
STDERR: shm_open() failed: No such file or directory
STDERR: shm_open() failed: No such file or directory
STDERR: shm_open() failed: No such file or directory
STDERR: shm_open() failed: No such file or directory
STDERR: shm_open() failed: Too many open files
STDERR: The per-process limit on the number of open file descriptors has been reached.
STDERR: ERROR: cannot create wakeup pipe
STDERR: The per-process limit on the number of open file descriptors has been reached.
STDERR: ERROR: cannot create wakeup pipe
STDERR: shm_open() failed: Too many open files
STDERR: The per-process limit on the number of open file descriptors has been reached.
STDERR: ERROR: cannot create wakeup pipe
STDERR: shm_open() failed: Too many open files
STDERR: The per-process limit on the number of open file descriptors has been reached.
STDERR: ERROR: cannot create wakeup pipe
STDERR: 
STDERR: (WebKitWebProcess:133): GStreamer-CRITICAL **: 10:00:18.403: gst_poll_write_control: assertion 'set != NULL' failed

Strangely, this doesn't happen when I downgrade PulseAudio from v13 to v12.2 in the SDK, so there might be a regression in their SHM support, I haven't found it yet though...

Anyway.

env GST_DEBUG="pulse:6" run-webkit-tests --gtk --no-retry-failures --no-show-results fast/mediastream/mediastreamtrack-video-clone.html
less -R WebKitBuild/GTK/Release/layout-test-results/fast/mediastream/mediastreamtrack-video-clone-stderr.txt
...
0:00:00.682512514   133       0x61be10 LOG                    pulse pulsesink.c:549:gst_pulseringbuffer_open_device:<autoaudiosink1-actual-sink-pulse> connect to server (NULL)
0:00:00.682548463   133       0x61be10 LOG                    pulse pulsesink.c:426:gst_pulsering_context_state_cb: got new context state 1
0:00:00.682607837   133       0x61be10 LOG                    pulse pulsesink.c:572:gst_pulseringbuffer_open_device:<autoaudiosink1-actual-sink-pulse> context state is now 1
0:00:00.682612609   133       0x61be10 LOG                    pulse pulsesink.c:581:gst_pulseringbuffer_open_device:<autoaudiosink1-actual-sink-pulse> waiting..
0:00:00.683023557   133       0xd20330 LOG                    pulse pulsesink.c:426:gst_pulsering_context_state_cb: got new context state 2
0:00:00.684308385   133       0xd20330 LOG                    pulse pulsesink.c:426:gst_pulsering_context_state_cb: got new context state 3
shm_open() failed: No such file or directory
0:00:00.684485267   133       0xd20330 LOG                    pulse pulsesink.c:426:gst_pulsering_context_state_cb: got new context state 5
0:00:00.684495839   133       0xd20330 LOG                    pulse pulsesink.c:432:gst_pulsering_context_state_cb: signaling
0:00:00.684541232   133       0x61be10 LOG                    pulse pulsesink.c:572:gst_pulseringbuffer_open_device:<autoaudiosink1-actual-sink-pulse> context state is now 5
0:00:00.684552988   133       0x61be10 WARN                   pulse pulsesink.c:614:gst_pulseringbuffer_open_device:<autoaudiosink1-actual-sink-pulse> error: Failed to connect: Protocol error

So this fails, but `webkit-flatpak -c gst-launch-1.0 audiotestsrc num-buffers=1 ! queue ! pulsesink` works fine. After comparing strace logs between WKTR and this gst-launch line, in the latter case, enable-shm=no appears in the pulseaudio config file (in the strace log):

openat(AT_FDCWD, "/run/user/1000/pulse/config", O_RDONLY|O_CLOEXEC) = 8
...
fstat(8, {st_mode=S_IFREG|0600, st_size=14, ...}) = 0
read(8, "enable-shm=no\n", 4096)        = 14
read(8, "", 4096)                       = 0

but not in WKTR's. So this lead me in flatpak-run.c which sets 2 PULSEAUDIO env vars in the sandbox:

flatpak_bwrap_set_env (bwrap, "PULSE_SERVER", pulse_server, TRUE);
flatpak_bwrap_set_env (bwrap, "PULSE_CLIENTCONFIG", config_path, TRUE);

And of course our GTK and WPE test drivers don't set these vars...

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20200920/338f271b/attachment-0001.htm>


More information about the webkit-unassigned mailing list