docs(linux): add the camera-enumeration WebKit crash - #6598
Open
jramiresbrito wants to merge 1 commit into
Open
Conversation
A page calling navigator.mediaDevices.enumerateDevices() aborts the WebKitGTK web process when any capture device advertises caps with no framerate field. GStreamerVideoCaptureSource handles a fraction range and a single fraction and otherwise assumes a list, so an absent field reaches gstStructureGetList, whose RELEASE_ASSERT sits one line above its own graceful early-return. Intel IPU6 laptops hit this because the sensor is published twice: once through icamerasrc/v4l2loopback, which is fine, and once through libcamera with no framerate. The crash lands ~20-30s after first paint, so it reads as a hang rather than a crash and any check in the first few seconds sees a healthy process. Documents how to detect it in one command and how to hide the duplicate device, which needs disabling libcamera in both PipeWire and GStreamer. The real fix belongs upstream in WebKit. Refs block#6339 Signed-off-by: Joao Victor Ramires <joao@blueonionlabs.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Documents a WebKitGTK crash that presents as a hang, so Linux users can identify
it in one command and work around it today. Docs only — no code changes.
Found while debugging #6339. The root cause is upstream in WebKit, not in Buzz;
this adds the detection steps and workaround while that is fixed.
What happens
When a page calls
navigator.mediaDevices.enumerateDevices(), WebKit buildsvideo presets for every capture device it can see.
GStreamerVideoCaptureSource.cpphandles aframeratethat is a fraction rangeor a single fraction, and otherwise assumes a list. When the field is absent,
gst_structure_get_value()returnsNULLandgstStructureGetList()aborts theweb process on a
RELEASE_ASSERTthat sits one line above its own gracefulearly-return:
Symbolicated from a core dump:
Intel IPU6 laptops trigger it because the sensor is published twice — once via
icamerasrc/v4l2loopback, which is fine, and once via libcamera with noframerate field.
Why it is worth documenting separately
It does not look like the other entries in this guide. The window paints
normally, then freezes on whatever it last drew roughly 20-30 seconds later.
Buzz prints nothing, and any "is the web process alive?" check in the first
~15 seconds reports healthy. It reads as a hang or a slow network, so the
existing rendering sections do not lead anyone to it.
Verified on
ov01a10), Ubuntu 26.04, GNOME/Wayland.deb, clean environment, 5/5 launches loaded the UI and werestill alive at 60s
The workaround leaves the working camera in place — on IPU6 the capture path is
icamerasrc→v4l2loopback, which does not involve libcamera.Upstream
The fix belongs in WebKit: drop the
RELEASE_ASSERTso the existingGST_WARNINGand early return can skip the device instead of killing theprocess. Still present on WebKit
main(GStreamerCommon.cpp:1403-1408).bugs.webkit.orgwas unreachable at the time of writing; I will file it thereonce it is back.
Refs #6339