Bug 69510

Summary: ASSERT(!m_transparencyCount) in GraphicsContext::~GraphicsContext
Product: WebKit Reporter: Alejandro G. Castro <alex>
Component: WebKitGTKAssignee: Sergio Villar Senin <svillar>
Status: RESOLVED FIXED    
Severity: Normal CC: hyatt, jchaffraix, mrobinson, pnormand, simon.fraser, svillar, zimmermann
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Linux   
Bug Depends on:    
Bug Blocks: 69523    
Attachments:
Description Flags
Patch simon.fraser: review+

Description Alejandro G. Castro 2011-10-06 03:35:21 PDT
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 Sergio Villar Senin 2011-10-24 07:44:49 PDT
Alex it isn't crashing for me anymore. Could you confirm that?
Comment 2 Alejandro G. Castro 2011-10-24 11:17:40 PDT
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 Sergio Villar Senin 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 Sergio Villar Senin 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 Julien Chaffraix 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 Sergio Villar Senin 2011-11-15 09:44:40 PST
Created attachment 115181 [details]
Patch
Comment 7 Martin Robinson 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 Sergio Villar Senin 2011-11-15 09:49:20 PST
Adding some reviewers with good knowledge of that code.
Comment 9 Martin Robinson 2011-11-15 10:35:25 PST
*** Bug 71454 has been marked as a duplicate of this bug. ***
Comment 10 Simon Fraser (smfr) 2011-11-15 11:14:40 PST
Comment on attachment 115181 [details]
Patch

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 Sergio Villar Senin 2011-11-15 23:24:49 PST
Committed r100413: <http://trac.webkit.org/changeset/100413>