Summary: | [GStreamer] Crashes deep in GStreamer under gst_element_add_pad | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Michael Catanzaro <mcatanzaro> | ||||||||||||||
Component: | Media | Assignee: | Philippe Normand <pnormand> | ||||||||||||||
Status: | RESOLVED FIXED | ||||||||||||||||
Severity: | Normal | CC: | calvaris, cgarcia, ews-watchlist, gustavo, mcatanzaro, menard, pnormand, tsaunier, vjaquez, webkit-bug-importer | ||||||||||||||
Priority: | P2 | Keywords: | InRadar | ||||||||||||||
Version: | WebKit Nightly Build | ||||||||||||||||
Hardware: | PC | ||||||||||||||||
OS: | Linux | ||||||||||||||||
See Also: | https://bugs.webkit.org/show_bug.cgi?id=223636 | ||||||||||||||||
Attachments: |
|
Description
Michael Catanzaro
2021-03-04 15:20:59 PST
Created attachment 422296 [details]
bt full
Created attachment 422298 [details]
thread apply all bt
I see several threads doing GStreamery things at the same time...
I'm gonna need logs, as usual. Sadly it seems the bug does not occur today. :S There's a lot going in the full trace, I suspect the issue is related with the ImageDecoder, having the assert message would be helpful. It was super crashy yesterday but survived my entire lunch break today. I can only assume that the web content itself has changed since yesterday. Sorry I forgot to take a GStreamer debug log; I always forget that. :/ (In reply to Philippe Normand from comment #5) > There's a lot going in the full trace, I suspect the issue is related with > the ImageDecoder, having the assert message would be helpful. I don't think there's an assertion failure here. Created attachment 422540 [details]
log?
This may or may not help... it's too sporadic to catch it when I try to catch it, so I just left WebKit running with GST_DEBUG=6. This is all the terminal scrollback I have, but it covers only one second before the crash and there are multiple browser tabs using GStreamer, so it's probably an unreadable mess. I don't even know if I captured anything interesting. But I'm not sure that I'm going to be able to catch this on its own....
Not very useful indeed, please set GST_DEBUG="3,webkit*:6" (In reply to Philippe Normand from comment #8) > Not very useful indeed, please set GST_DEBUG="3,webkit*:6" OK. Maybe you could set up a wiki page somewhere with instructions for reporting GStreamer bugs? Even if I'm the only person who knows to look at it, it might make a difference. :P A couple more observations: * I believe this crash also occurs frequently on cnn.com * I'm increasingly confident this is a regression introduced between 2.31.1 and 2.31.90 (In reply to Michael Catanzaro from comment #9) > (In reply to Philippe Normand from comment #8) > > Not very useful indeed, please set GST_DEBUG="3,webkit*:6" > > OK. Maybe you could set up a wiki page somewhere with instructions for > reporting GStreamer bugs? Even if I'm the only person who knows to look at > it, it might make a difference. :P > It's been in the wiki for a while: https://trac.webkit.org/wiki/WebKitGTK/Debugging#Debuggingmultimediastuff Created attachment 422583 [details]
log!
OK, hopefully this one is better. I had two tabs crash at roughly the same time, at the bottom of the log. Sadly, since we don't log process identifiers, I guess it will still be likely very hard to follow.
bingo: 0:00:00.322674527 2 0x556178f75f60 DEBUG webkitimagedecoder ImageDecoderGStreamer.cpp:259:connectDecoderPad:<image-decoder-0> New decodebin pad <decodebin3-0:audio_0> caps: audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)[ 8000, 96000 ], channels=(int)[ 1, 8 ] (epiphany:2): epiphany-WARNING **: 12:34:41.832: Web process crashed I suspect this is hit: RELEASE_ASSERT(doCapsHaveType(padCaps.get(), "video")); Hm, could it be a regression from r271396? That's the only commit after 2.31.1 that touched ImageDecoderGStreamer. (In reply to Michael Catanzaro from comment #13) > Hm, could it be a regression from r271396? That's the only commit after > 2.31.1 that touched ImageDecoderGStreamer. I doubt this is a recent regression. I think you started seeing this when that website started serving videos (with audio) in <img> tags, that's all. Created attachment 422688 [details]
Patch
Michael, I wasn't able to reproduce the bug but this patch should make the image decoder a bit more robust... Can you test? Comment on attachment 422688 [details]
Patch
lgtm.
(In reply to Philippe Normand from comment #16) > Michael, I wasn't able to reproduce the bug but this patch should make the > image decoder a bit more robust... Can you test? The only way to know for sure is to actually run the code all day long for a couple days. I'll add your patch to the GNOME runtime. Comment on attachment 422688 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=422688&action=review > Source/WebCore/platform/graphics/gstreamer/ImageDecoderGStreamer.cpp:335 > + gst_element_send_event(m_decodebin.get(), gst_event_new_select_streams(streams)); stream in gst_event_new_select_streams is [transfer none]. Shouldn't we free the list after creating the event? Created attachment 422696 [details]
Patch
(In reply to Michael Catanzaro from comment #18) > The only way to know for sure is to actually run the code all day long for a > couple days. I'll add your patch to the GNOME runtime. https://gitlab.gnome.org/GNOME/gnome-build-meta/-/merge_requests/1058 Zero crashes today. Lots of crashes yesterday. I think you fixed it. I'm now very confident this fix works. Ping multimedia reviewers, let's try to get this into 2.32.0. Committed r274358: <https://commits.webkit.org/r274358> All reviewed patches have been landed. Closing bug and clearing flags on attachment 422696 [details]. |