Bug 69510 - ASSERT(!m_transparencyCount) in GraphicsContext::~GraphicsContext
: ASSERT(!m_transparencyCount) in GraphicsContext::~GraphicsContext
Status: RESOLVED FIXED
: WebKit
WebKit Gtk
: 528+ (Nightly build)
: Unspecified Linux
: P2 Normal
Assigned To:
:
:
:
: 69523
  Show dependency treegraph
 
Reported: 2011-10-06 03:35 PST by
Modified: 2011-11-15 23:24 PST (History)


Attachments
Patch (3.36 KB, patch)
2011-11-15 09:44 PST, Sergio Villar Senin
simon.fraser: review+
Review Patch | Details | Formatted Diff | Diff


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2011-10-06 03:35:21 PST
This is the backtrace:

Program received signal SIGSEGV, Segmentation fault.
0x00007f2e6131b9ca in WebCore::GraphicsContext::~GraphicsContext (this=0x132c5b0, __in_chrg=<value optimized out>) at ../../../Source/WebCore/platform/graphics/GraphicsContext.cpp:91
91        ASSERT(!m_transparencyCount);
(gdb) bt
#0  0x00007f2e6131b9ca in WebCore::GraphicsContext::~GraphicsContext (this=0x132c5b0, __in_chrg=<value optimized out>) at ../../../Source/WebCore/platform/graphics/GraphicsContext.cpp:91
#1  0x00007f2e60a41960 in WTF::deleteOwnedPtr<WebCore::GraphicsContext> (ptr=0x132c5b0) at ../../../Source/JavaScriptCore/wtf/OwnPtrCommon.h:53
#2  0x00007f2e60a40b19 in WTF::OwnPtr<WebCore::GraphicsContext>::~OwnPtr (this=0x7fff1adfd2f0, __in_chrg=<value optimized out>) at ../../../Source/JavaScriptCore/wtf/OwnPtr.h:54
#3  0x00007f2e60bbf378 in WebKit::DrawingAreaImpl::display (this=0x123fce0, updateInfo=...) at ../../../Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp:655
#4  0x00007f2e60bbea5d in WebKit::DrawingAreaImpl::display (this=0x123fce0) at ../../../Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp:566
#5  0x00007f2e60bbe8f4 in WebKit::DrawingAreaImpl::displayTimerFired (this=0x123fce0) at ../../../Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp:545
#6  0x00007f2e60bc00b2 in Timer<WebKit::DrawingAreaImpl>::fired (this=0x123fd70) at ../../../Source/WebKit2/Platform/RunLoop.h:127
#7  0x00007f2e60a38339 in RunLoop::TimerBase::timerFiredCallback (timer=0x123fd70) at ../../../Source/WebKit2/Platform/gtk/RunLoopGtk.cpp:106
#8  0x00007f2e5c02bc09 in g_timeout_dispatch (source=0x12b4da0, callback=0x7f2e60a382ee <RunLoop::TimerBase::timerFiredCallback(RunLoop::TimerBase*)>, user_data=0x123fd70) at gmain.c:3904
#9  0x00007f2e5c02860c in g_main_dispatch (context=0x11fa0f0) at gmain.c:2439
#10 0x00007f2e5c029b52 in g_main_context_dispatch (context=0x11fa0f0) at gmain.c:3008
#11 0x00007f2e5c02a008 in g_main_context_iterate (context=0x11fa0f0, block=1, dispatch=1, self=0x11bd8b0) at gmain.c:3086
#12 0x00007f2e5c02a766 in g_main_loop_run (loop=0x11fa3a0) at gmain.c:3294
#13 0x00007f2e60a3810d in RunLoop::run () at ../../../Source/WebKit2/Platform/gtk/RunLoopGtk.cpp:56
#14 0x00007f2e60b3f5b1 in WebKit::WebProcessMainGtk (argc=2, argv=0x7fff1adfd878) at ../../../Source/WebKit2/WebProcess/gtk/WebProcessMainGtk.cpp:64
#15 0x0000000000400984 in main (argc=2, argv=0x7fff1adfd878) at ../../../Source/WebKit2/gtk/MainGtk.cpp:31
------- Comment #1 From 2011-10-24 07:44:49 PST -------
Alex it isn't crashing for me anymore. Could you confirm that?
------- Comment #2 From 2011-10-24 11:17:40 PST -------
It still crashes in my desktop but it does not crash in my laptop, not sure why. Probably I should check this one in my desktop.
------- Comment #3 From 2011-11-10 08:27:08 PST -------
(In reply to comment #2)
> It still crashes in my desktop but it does not crash in my laptop, not sure why. Probably I should check this one in my desktop.

I'll take a look since it's consistently asserting for me in debug builds.
------- Comment #4 From 2011-11-11 08:08:57 PST -------
Julien is this the same crash than the one you observed on mac when adding tests for https://bugs.webkit.org/show_bug.cgi?id=68133 ?
------- Comment #5 From 2011-11-11 10:57:23 PST -------
(In reply to comment #4)
> Julien is this the same crash than the one you observed on mac when adding tests for https://bugs.webkit.org/show_bug.cgi?id=68133 ?

It's not exactly the same (see bug 68566): it is ASSERT(m_stack.isEmpty()) that is triggered in ~GraphicsContext. It may related though.
------- Comment #6 From 2011-11-15 09:44:40 PST -------
Created an attachment (id=115181) [details]
Patch
------- Comment #7 From 2011-11-15 09:48:14 PST -------
There are also some tests skipped in WebKit1. I believe Philippe skipped these tests. Your patch should unskip them as well.
------- Comment #8 From 2011-11-15 09:49:20 PST -------
Adding some reviewers with good knowledge of that code.
------- Comment #9 From 2011-11-15 10:35:25 PST -------
*** Bug 71454 has been marked as a duplicate of this bug. ***
------- Comment #10 From 2011-11-15 11:14:40 PST -------
(From update of attachment 115181 [details])
View in context: https://bugs.webkit.org/attachment.cgi?id=115181&action=review

> Source/WebCore/rendering/InlineFlowBox.cpp:1286
> +        if (pushTransparencyLayer)
> +            paintInfo.context->endTransparencyLayer();

It would be nice if we had an RAII class for begin/endTransparencyLayer.
------- Comment #11 From 2011-11-15 23:24:49 PST -------
Committed r100413: <http://trac.webkit.org/changeset/100413>