Gtk-CRITICAL **: gtk_widget_get_style_context: assertion 'GTK_IS_WIDGET (widget)' failed

RESOLVED DUPLICATE of bug 1389133

Status

()

Core
Widget: Gtk
RESOLVED DUPLICATE of bug 1389133
4 months ago
3 months ago

People

(Reporter: Jan Beich, Unassigned)

Tracking

({crash, regression})

Trunk
crash, regression
Points:
---

Firefox Tracking Flags

(firefox55 unaffected, firefox56 fixed, firefox57 fixed)

Details

Attachments

(1 attachment)

(Reporter)

Description

4 months ago
Created attachment 8895451 [details]
"bt full" output

Steps to reproduce:
1. Open https://sqlite.org/src/finfo?name=src/tclsqlite.c&ci=version-3.20.0&n=3
2. Click on [check-ins using] link

Actual results:
- Browser (non-e10s) or content process (e10s) crashes

Expected results:
- Open the link in the current tab

Environment:
$ c++ -v
FreeBSD clang version 5.0.0 (branches/release_50 309439) (based on LLVM 5.0.0svn)
Target: x86_64-unknown-freebsd12.0
Thread model: posix
InstalledDir: /usr/bin

$ pkg info -d gtk3
gtk3-3.22.15:
        libXrender-0.9.10
        libXrandr-1.5.1
        libXinerama-1.1.3_3,1
        libXi-1.7.9,1
        libXfixes-5.0.3
        libXext-1.3.3_1,1
        libXdamage-1.1.4_3
        libXcursor-1.1.14_3
        libXcomposite-0.4.4_3,1
        libX11-1.6.5,1
        pango-1.40.6
        adwaita-icon-theme-3.22.0
        fontconfig-2.12.1,1
        harfbuzz-1.4.7
        freetype2-2.8
        cups-2.2.3
        hicolor-icon-theme-0.15
        libepoxy-1.4.3
        gtk-update-icon-cache-2.24.29
        gdk-pixbuf2-2.36.6
        cairo-1.14.10,2
        glib-2.50.2_4,1
        gettext-runtime-0.19.8.1_1
        atk-2.24.0

Stacktrace:
From mozilla-central changeset 4c5fbf493763 snapshot.

Thread 1 received signal SIGSEGV, Segmentation fault.
0x00000008026e52f5 in gtk_widget_get_style_context (widget=0x0) at gtkwidget.c:16566
16566     priv = widget->priv;
(gdb) l
16561   {
16562     GtkWidgetPrivate *priv;
16563
16564     g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
16565
16566     priv = widget->priv;
16567
16568     if (G_UNLIKELY (priv->context == NULL))
16569       {
16570         GdkScreen *screen;
(gdb) bt
#0  0x00000008026e52f5 in gtk_widget_get_style_context (widget=0x0) at gtkwidget.c:16566
#1  0x000000080f69237f in GetWidget (aWidgetType=MOZ_GTK_COMBOBOX_SEPARATOR)
    at widget/gtk/WidgetStyleCache.cpp:636
#2  0x000000080f695954 in moz_gtk_get_widget_border (widget=MOZ_GTK_DROPDOWN, left=0x7fffffff4eec,
    top=0x7fffffff4ee0, right=0x7fffffff4ee4, bottom=0x7fffffff4ee8, direction=GTK_TEXT_DIR_LTR)
    at widget/gtk/gtk3drawing.cpp:2177
#3  0x000000080f6be95f in nsNativeThemeGTK::GetCachedWidgetBorder (this=0x823908a00,
    aFrame=0x82c288950, aWidgetType=66 'B', aDirection=GTK_TEXT_DIR_LTR, aResult=0x7fffffff4ee0)
    at widget/gtk/nsNativeThemeGTK.cpp:1281
#4  0x000000080f6bec27 in nsNativeThemeGTK::GetWidgetBorder (this=0x823908a00,
    aContext=0x81cbcd120, aFrame=0x82c288950, aWidgetType=66 'B', aResult=0x7fffffff4ee0)
    at widget/gtk/nsNativeThemeGTK.cpp:1366
#5  0x000000080fac86fd in mozilla::SizeComputationInput::InitOffsets (this=0x7fffffff5968, aWM=...,
    aPercentBasis=..., aFrameType=mozilla::LayoutFrameType::ComboboxControl, aFlags=...,
    aBorder=0x0, aPadding=0x0, aDisplay=0x82bdae550)
    at layout/generic/ReflowInput.cpp:2645
#6  0x000000080faca865 in mozilla::ReflowInput::InitConstraints (this=0x7fffffff5968,
    aPresContext=0x81baee000, aContainingBlockSize=..., aBorder=0x0, aPadding=0x0,
    aFrameType=mozilla::LayoutFrameType::ComboboxControl)
    at layout/generic/ReflowInput.cpp:2287
#7  0x000000080fac7ca3 in mozilla::ReflowInput::Init (this=0x7fffffff5968,
    aPresContext=0x81baee000, aContainingBlockSize=0x0, aBorder=0x0, aPadding=0x0)
    at layout/generic/ReflowInput.cpp:425
#8  0x000000080fac9001 in mozilla::ReflowInput::ReflowInput (this=0x7fffffff5968,
    aPresContext=0x81baee000, aParentReflowInput=..., aFrame=0x82c288950, aAvailableSpace=...,
    aContainingBlockSize=0x0, aFlags=0) at layout/generic/ReflowInput.cpp:257
#9  0x000000080fbc5569 in mozilla::Maybe<mozilla::ReflowInput>::emplace<nsPresContext*&, mozilla::ReflowInput const&, nsIFrame*&, mozilla::LogicalSize&> (this=0x7fffffff5968, aArgs=..., aArgs=...,
    aArgs=..., aArgs=...)
    at obj-x86_64-unknown-freebsd12.0/dist/include/mozilla/Maybe.h:459
#10 0x000000080fba63e1 in nsLineLayout::ReflowFrame (this=0x7fffffff5e50, aFrame=0x82c288950,
    aReflowStatus=..., aMetrics=0x0, aPushedFrame=@0x7fffffff5b5f: false)
    at layout/generic/nsLineLayout.cpp:861
#11 0x000000080faf8c68 in nsBlockFrame::ReflowInlineFrame (this=0x82bd21208, aState=...,
    aLineLayout=..., aLine=..., aFrame=0x82c288950, aLineReflowStatus=0x7fffffff5d44)
    at layout/generic/nsBlockFrame.cpp:4218
#12 0x000000080faf83d2 in nsBlockFrame::DoReflowInlineFrames (this=0x82bd21208, aState=...,
    aLineLayout=..., aLine=..., aFloatAvailableSpace=..., aAvailableSpaceBSize=@0x7fffffff5f50: 0,
    aFloatStateBeforeLine=0x7fffffff5f28, aKeepReflowGoing=0x7fffffff63ef,
    aLineReflowStatus=0x7fffffff5f54, aAllowPullUp=true)
    at layout/generic/nsBlockFrame.cpp:4014
#13 0x000000080faf546e in nsBlockFrame::ReflowInlineFrames (this=0x82bd21208, aState=...,
    aLine=..., aKeepReflowGoing=0x7fffffff63ef)
    at layout/generic/nsBlockFrame.cpp:3888
#14 0x000000080faf309f in nsBlockFrame::ReflowLine (this=0x82bd21208, aState=..., aLine=...,
    aKeepReflowGoing=0x7fffffff63ef) at layout/generic/nsBlockFrame.cpp:2871
#15 0x000000080faeec48 in nsBlockFrame::ReflowDirtyLines (this=0x82bd21208, aState=...)
    at layout/generic/nsBlockFrame.cpp:2407
#16 0x000000080faebf68 in nsBlockFrame::Reflow (this=0x82bd21208, aPresContext=0x81baee000,
    aMetrics=..., aReflowInput=..., aStatus=...)
    at layout/generic/nsBlockFrame.cpp:1233
#17 0x000000080faf7638 in nsBlockReflowContext::ReflowBlock (this=0x7fffffff7320, aSpace=...,
    aApplyBStartMargin=false, aPrevMargin=..., aClearance=0, aIsAdjacentWithBStart=true,
    aLine=0x82460a228, aFrameRI=..., aFrameReflowStatus=..., aState=...)
    at layout/generic/nsBlockReflowContext.cpp:306
#18 0x000000080faf43d5 in nsBlockFrame::ReflowBlockFrame (this=0x82bd20a40, aState=..., aLine=...,
    aKeepReflowGoing=0x7fffffff782f) at layout/generic/nsBlockFrame.cpp:3519
#19 0x000000080faf3067 in nsBlockFrame::ReflowLine (this=0x82bd20a40, aState=..., aLine=...,
    aKeepReflowGoing=0x7fffffff782f) at layout/generic/nsBlockFrame.cpp:2868
#20 0x000000080faeec48 in nsBlockFrame::ReflowDirtyLines (this=0x82bd20a40, aState=...)
    at layout/generic/nsBlockFrame.cpp:2407
#21 0x000000080faebf68 in nsBlockFrame::Reflow (this=0x82bd20a40, aPresContext=0x81baee000,
    aMetrics=..., aReflowInput=..., aStatus=...)
    at layout/generic/nsBlockFrame.cpp:1233
#22 0x000000080faf7638 in nsBlockReflowContext::ReflowBlock (this=0x7fffffff8760, aSpace=...,
    aApplyBStartMargin=true, aPrevMargin=..., aClearance=0, aIsAdjacentWithBStart=false,
    aLine=0x82460a5a0, aFrameRI=..., aFrameReflowStatus=..., aState=...)
    at layout/generic/nsBlockReflowContext.cpp:306
#23 0x000000080faf43d5 in nsBlockFrame::ReflowBlockFrame (this=0x82c377f38, aState=..., aLine=...,
    aKeepReflowGoing=0x7fffffff8c6f) at layout/generic/nsBlockFrame.cpp:3519
#24 0x000000080faf3067 in nsBlockFrame::ReflowLine (this=0x82c377f38, aState=..., aLine=...,
    aKeepReflowGoing=0x7fffffff8c6f) at layout/generic/nsBlockFrame.cpp:2868
#25 0x000000080faeec48 in nsBlockFrame::ReflowDirtyLines (this=0x82c377f38, aState=...)
    at layout/generic/nsBlockFrame.cpp:2407
#26 0x000000080faebf68 in nsBlockFrame::Reflow (this=0x82c377f38, aPresContext=0x81baee000,
    aMetrics=..., aReflowInput=..., aStatus=...)
    at layout/generic/nsBlockFrame.cpp:1233
#27 0x000000080faf7638 in nsBlockReflowContext::ReflowBlock (this=0x7fffffff9ba0, aSpace=...,
    aApplyBStartMargin=true, aPrevMargin=..., aClearance=0, aIsAdjacentWithBStart=true,
    aLine=0x82460a640, aFrameRI=..., aFrameReflowStatus=..., aState=...)
    at layout/generic/nsBlockReflowContext.cpp:306
#28 0x000000080faf43d5 in nsBlockFrame::ReflowBlockFrame (this=0x82c3774f0, aState=..., aLine=...,
    aKeepReflowGoing=0x7fffffffa0af) at layout/generic/nsBlockFrame.cpp:3519
#29 0x000000080faf3067 in nsBlockFrame::ReflowLine (this=0x82c3774f0, aState=..., aLine=...,
    aKeepReflowGoing=0x7fffffffa0af) at layout/generic/nsBlockFrame.cpp:2868
#30 0x000000080faeec48 in nsBlockFrame::ReflowDirtyLines (this=0x82c3774f0, aState=...)
    at layout/generic/nsBlockFrame.cpp:2407
#31 0x000000080faebf68 in nsBlockFrame::Reflow (this=0x82c3774f0, aPresContext=0x81baee000,
    aMetrics=..., aReflowInput=..., aStatus=...)
    at layout/generic/nsBlockFrame.cpp:1233
#32 0x000000080fb0b5a8 in nsContainerFrame::ReflowChild (this=0x827f32390, aKidFrame=0x82c3774f0,
    aPresContext=0x81baee000, aDesiredSize=..., aReflowInput=..., aWM=..., aPos=...,
    aContainerSize=..., aFlags=0, aStatus=..., aTracker=0x0)
    at layout/generic/nsContainerFrame.cpp:935
#33 0x000000080fb0aee3 in nsCanvasFrame::Reflow (this=0x827f32390, aPresContext=0x81baee000,
    aDesiredSize=..., aReflowInput=..., aStatus=...)
    at layout/generic/nsCanvasFrame.cpp:752
#34 0x000000080fb0b5a8 in nsContainerFrame::ReflowChild (this=0x827f32718, aKidFrame=0x827f32390,
    aPresContext=0x81baee000, aDesiredSize=..., aReflowInput=..., aWM=..., aPos=...,
    aContainerSize=..., aFlags=3, aStatus=..., aTracker=0x0)
    at layout/generic/nsContainerFrame.cpp:935
#35 0x000000080fb6ffc5 in nsHTMLScrollFrame::ReflowScrolledFrame (this=0x827f32718,
    aState=0x7fffffffb610, aAssumeHScroll=false, aAssumeVScroll=true, aMetrics=0x7fffffffb438,
    aFirstPass=true) at layout/generic/nsGfxScrollFrame.cpp:549
#36 0x000000080fb70818 in nsHTMLScrollFrame::ReflowContents (this=0x827f32718,
    aState=0x7fffffffb610, aDesiredSize=...)
    at layout/generic/nsGfxScrollFrame.cpp:661
#37 0x000000080fb71d34 in nsHTMLScrollFrame::Reflow (this=0x827f32718, aPresContext=0x81baee000,
    aDesiredSize=..., aReflowInput=..., aStatus=...)
    at layout/generic/nsGfxScrollFrame.cpp:1037
#38 0x000000080fae4213 in nsContainerFrame::ReflowChild (this=0x827f31940, aKidFrame=0x827f32718,
    aPresContext=0x81baee000, aDesiredSize=..., aReflowInput=..., aX=0, aY=0, aFlags=0,
    aStatus=..., aTracker=0x0) at layout/generic/nsContainerFrame.cpp:979
#39 0x000000080fae3c9e in mozilla::ViewportFrame::Reflow (this=0x827f31940,
    aPresContext=0x81baee000, aDesiredSize=..., aReflowInput=..., aStatus=...)
    at layout/generic/ViewportFrame.cpp:329
#40 0x000000080f9ead66 in mozilla::PresShell::DoReflow (this=0x824ad9000, target=0x827f31940,
    aInterruptible=true) at layout/base/PresShell.cpp:9366
#41 0x000000080f9f203f in mozilla::PresShell::ProcessReflowCommands (this=0x824ad9000,
    aInterruptible=true) at layout/base/PresShell.cpp:9539
#42 0x000000080f9f1cd0 in mozilla::PresShell::DoFlushPendingNotifications (this=0x824ad9000,
    aFlush=...) at layout/base/PresShell.cpp:4237
#43 0x000000080f9bba50 in nsIPresShell::FlushPendingNotifications (this=0x824ad9000, aType=...)
    at obj-x86_64-unknown-freebsd12.0/dist/include/nsIPresShell.h:591
#44 0x000000080f9b7a89 in nsRefreshDriver::Tick (this=0x81bae7100, aNowEpoch=1502297303864640,
    aNowTime=...) at layout/base/nsRefreshDriver.cpp:1925
#45 0x000000080f9bdea8 in mozilla::RefreshDriverTimer::TickDriver (driver=0x81bae7100,
    jsnow=1502297303864640, now=...) at layout/base/nsRefreshDriver.cpp:330
#46 0x000000080f9bdca3 in mozilla::RefreshDriverTimer::TickRefreshDrivers (this=0x823e64f80,
    aJsNow=1502297303864640, aNow=..., aDrivers=nsTArray<RefPtr<nsRefreshDriver> > & = {...})
    at layout/base/nsRefreshDriver.cpp:300
#47 0x000000080f9bdb34 in mozilla::RefreshDriverTimer::Tick (this=0x823e64f80,
    jsnow=1502297303864640, now=...) at layout/base/nsRefreshDriver.cpp:321
#48 0x000000080f9bffcd in mozilla::VsyncRefreshDriverTimer::RunRefreshDrivers (this=0x823e64f80,
    aTimeStamp=...) at layout/base/nsRefreshDriver.cpp:763
#49 0x000000080f9bf4e5 in mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::TickRefreshDriver (this=0x823e64fe0, aVsyncTimestamp=...)
    at layout/base/nsRefreshDriver.cpp:676
#50 0x000000080f9bc9b3 in mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::ParentProcessVsyncNotifier::Run (this=0x82c314cc0) at layout/base/nsRefreshDriver.cpp:522
#51 0x000000080b8f59dc in nsThread::ProcessNextEvent (this=0x8004c4b40, aMayWait=false,
    aResult=0x7fffffffd1ce) at xpcom/threads/nsThread.cpp:1446
#52 0x000000080b8f7c8f in NS_ProcessNextEvent (aThread=0x8004c4b40, aMayWait=false)
    at xpcom/threads/nsThreadUtils.cpp:480
#53 0x000000080c1b34f2 in mozilla::ipc::MessagePump::Run (this=0x802178d80, aDelegate=0x8004c4c80)
    at ipc/glue/MessagePump.cpp:97
#54 0x000000080c0cb0a7 in MessageLoop::RunInternal (this=0x8004c4c80)
    at ipc/chromium/src/base/message_loop.cc:326
#55 0x000000080c0cb045 in MessageLoop::RunHandler (this=0x8004c4c80)
    at ipc/chromium/src/base/message_loop.cc:319
#56 0x000000080c0cb01d in MessageLoop::Run (this=0x8004c4c80)
    at ipc/chromium/src/base/message_loop.cc:299
#57 0x000000080f64cc3e in nsBaseAppShell::Run (this=0x818fe4c40)
    at widget/nsBaseAppShell.cpp:156
#58 0x0000000812178f4a in nsAppStartup::Run (this=0x802172b50)
    at toolkit/components/startup/nsAppStartup.cpp:287
#59 0x00000008122992f7 in XREMain::XRE_mainRun (this=0x7fffffffda38)
    at toolkit/xre/nsAppRunner.cpp:4632
#60 0x000000081229a0d6 in XREMain::XRE_main (this=0x7fffffffda38, argc=5, argv=0x7fffffffe150,
    aConfig=...) at toolkit/xre/nsAppRunner.cpp:4796
#61 0x000000081229a68c in XRE_main (argc=5, argv=0x7fffffffe150, aConfig=...)
    at toolkit/xre/nsAppRunner.cpp:4891
#62 0x00000008122acb07 in mozilla::BootstrapImpl::XRE_main (this=0x8004900a0, argc=5,
    argv=0x7fffffffe150, aConfig=...) at toolkit/xre/Bootstrap.cpp:45
#63 0x0000000000406f6f in do_main (argc=5, argv=0x7fffffffe150, envp=0x7fffffffe180)
    at browser/app/nsBrowserApp.cpp:236
#64 0x0000000000406b2c in main (argc=5, argv=0x7fffffffe150, envp=0x7fffffffe180)
    at browser/app/nsBrowserApp.cpp:309
(Reporter)

Comment 1

4 months ago
Landry, can you reproduce on OpenBSD?
status-firefox56: unaffected → affected
Flags: needinfo?(landry)
No crashes with 56.0b1, using an empty profile so with default settings and 1 content process. gtk+3-3.22.17, clang 4.0.0.
Flags: needinfo?(landry)
(Reporter)

Comment 3

4 months ago
Bug 1365556 wasn't merged in 56.0b1 but should appear in 56.0b2. Can you recheck after it's out or use the latest checkout of mozilla-beta?
Flags: needinfo?(landry)
Doesnt crash using http://buildbot.rhaalovely.net/builds/mozilla-central-amd64/2017-08-09-be392d4638052977f11e3fdd7fe6aac78057351c/ (from http://buildbot.rhaalovely.net/builders/mozilla-central-amd64/builds/2170) w same profile (3 content processes it seems), which im not sure has this cset ?
Flags: needinfo?(landry)
(Reporter)

Comment 5

4 months ago
Thanks. So, it's neither Clang/libc++ nor BSD nor Gtk 3.22-specific. I've tracked down the issue is caused by Gtk3 built with --disable-debug.

$ firefox -new-instance -profile $(mktemp -d) 'https://sqlite.org/src/timeline?n=200&uf=cbf6313f86400acd'

(/usr/local/lib/firefox/firefox:11567): Gtk-CRITICAL **: gtk_widget_get_style_context: assertion 'GTK_IS_WIDGET (widget)' failed

(/usr/local/lib/firefox/firefox:11567): Gtk-CRITICAL **: gtk_style_context_invalidate: assertion 'GTK_IS_STYLE_CONTEXT (context)' failed

(/usr/local/lib/firefox/firefox:11567): Gtk-CRITICAL **: gtk_widget_get_style_context: assertion 'GTK_IS_WIDGET (widget)' failed

(/usr/local/lib/firefox/firefox:11567): Gtk-CRITICAL **: gtk_style_context_invalidate: assertion 'GTK_IS_STYLE_CONTEXT (context)' failed

(/usr/local/lib/firefox/firefox:11567): Gtk-CRITICAL **: gtk_widget_get_style_context: assertion 'GTK_IS_WIDGET (widget)' failed

(/usr/local/lib/firefox/firefox:11567): Gtk-CRITICAL **: gtk_style_context_invalidate: assertion 'GTK_IS_STYLE_CONTEXT (context)' failed
See Also: → bug 1351246
Summary: Crash in gtk_widget_get_style_context() when CreateWidget() fails → Gtk-CRITICAL **: gtk_widget_get_style_context: assertion 'GTK_IS_WIDGET (widget)' failed
(Reporter)

Comment 6

4 months ago
Do you see Gtk-CRITICAL warnings as well? Can you assign priority? FreeBSD Ports dropped --disable-debug a few months ago. I just forgot to cleanup after testing.
Flags: needinfo?(karlt)
(Reporter)

Comment 7

4 months ago
Bug 1388810 has a patch. Let's move discussion there.
Status: NEW → RESOLVED
Last Resolved: 4 months ago
Flags: needinfo?(karlt)
Resolution: --- → DUPLICATE
Duplicate of bug: 1389133

Comment 8

3 months ago
Mirroring status to bug 1389133.
status-firefox56: affected → fixed
status-firefox57: affected → fixed
You need to log in before you can comment on or make changes to this bug.