Bug 38574 - [Qt] Crash in QGraphicsWebViewPrivate::~QGraphicsWebViewPrivate when animation were used
Summary: [Qt] Crash in QGraphicsWebViewPrivate::~QGraphicsWebViewPrivate when animatio...
Status: CLOSED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Layout and Rendering (show other bugs)
Version: 528+ (Nightly build)
Hardware: PC OS X 10.5
: P1 Major
Assignee: Nobody
URL:
Keywords: Qt, QtTriaged
Depends on:
Blocks: 35784
  Show dependency treegraph
 
Reported: 2010-05-05 02:35 PDT by Benjamin Poulain
Modified: 2010-05-11 02:22 PDT (History)
5 users (show)

See Also:


Attachments
Fix the crash (3.32 KB, patch)
2010-05-09 03:50 PDT, Noam Rosenthal
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Benjamin Poulain 2010-05-05 02:35:57 PDT
On Mac, WebKit sometime crashes when closing a window on which an animation has been running.

Step to reproduce:
-open a new window
-run the animation of http://www.optimum7.com/css3-man/animation.html
-close the window
-enjoy


Here is the backtrace:
0   QtGui                         	0x000000010206bd63 QGraphicsItem::setParentItem(QGraphicsItem*) + 35
1   QtWebKit                      	0x000000010098bc31 QGraphicsWebViewPrivate::~QGraphicsWebViewPrivate() + 49
2   QtWebKit                      	0x000000010098a8ae QGraphicsWebView::~QGraphicsWebView() + 158
3   com.yourcompany.light         	0x000000010001265b GraphicWebView::~GraphicWebView() + 65 (graphicwebview.h:28)
4   QtGui                         	0x0000000102090105 QGraphicsScene::clear() + 85
5   QtGui                         	0x00000001020901a8 QGraphicsScene::~QGraphicsScene() + 72
6   QtCore                        	0x00000001028a51cf QObjectPrivate::deleteChildren() + 95
7   QtGui                         	0x0000000101b1d4ca QWidget::~QWidget() + 522
8   QtGui                         	0x00000001020ba3bf QGraphicsView::~QGraphicsView() + 111
9   com.yourcompany.light         	0x0000000100012272 BrowserWindow::~BrowserWindow() + 72 (browserwindow.h:32)
10  QtCore                        	0x0000000102988659 QObject::event(QEvent*) + 1113
11  QtGui                         	0x0000000101b1f55e QWidget::event(QEvent*) + 78
12  QtGui                         	0x0000000101e919fc QFrame::event(QEvent*) + 44
13  QtGui                         	0x0000000101f1dc1b QAbstractScrollArea::event(QEvent*) + 155
14  QtGui                         	0x00000001020c32ec QGraphicsView::event(QEvent*) + 60
15  com.yourcompany.light         	0x00000001000042fc BrowserWindow::event(QEvent*) + 202 (browserwindow.cpp:120)
16  QtGui                         	0x0000000101aca4fd QApplicationPrivate::notify_helper(QObject*, QEvent*) + 189
17  QtGui                         	0x0000000101ad192d QApplication::notify(QObject*, QEvent*) + 349
18  com.yourcompany.light         	0x000000010000a63c WebApplication::notify(QObject*, QEvent*) + 188 (webapplication.cpp:72)
19  QtCore                        	0x000000010289ffec QCoreApplication::notifyInternal(QObject*, QEvent*) + 124
20  QtCore                        	0x000000010297b64d QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) + 701
21  com.apple.CoreFoundation      	0x00007fff84958f21 __CFRunLoopDoSources0 + 1361
22  com.apple.CoreFoundation      	0x00007fff84957119 __CFRunLoopRun + 873
23  com.apple.CoreFoundation      	0x00007fff849568df CFRunLoopRunSpecific + 575
24  com.apple.HIToolbox           	0x00007fff83bfdada RunCurrentEventLoopInMode + 333
25  com.apple.HIToolbox           	0x00007fff83bfd83d ReceiveNextEventCommon + 148
26  com.apple.HIToolbox           	0x00007fff83bfd798 BlockUntilNextEventMatchingListInMode + 59
27  com.apple.AppKit              	0x00007fff863b1a2a _DPSNextEvent + 708
28  com.apple.AppKit              	0x00007fff863b1379 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 155
29  com.apple.AppKit              	0x00007fff8637705b -[NSApplication run] + 395
30  QtGui                         	0x0000000101a874c4 QEventDispatcherMac::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 1588
31  QtCore                        	0x0000000102979ff4 QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 68
32  QtCore                        	0x000000010297a304 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 180
33  QtCore                        	0x000000010297b94c QCoreApplication::exec() + 188
34  com.yourcompany.light         	0x0000000100005b40 main + 433 (main.cpp:36)
35  com.yourcompany.light         	0x0000000100003120 start + 52
Comment 1 Noam Rosenthal 2010-05-09 03:50:32 PDT
Created attachment 55499 [details]
Fix the crash

This bug is very hard to reproduce on Linux because it's a race condition. But I'm pretty sure this consistently fixes it.
Comment 2 Benjamin Poulain 2010-05-09 07:17:42 PDT
Out of curiosity, in which cases the root layer is deleted before the view?
Comment 3 Kenneth Rohde Christiansen 2010-05-09 09:12:30 PDT
Comment on attachment 55499 [details]
Fix the crash

Looks fine with me. Benjamin, can you verify that this fixes it for you?
Comment 4 WebKit Commit Bot 2010-05-09 09:37:35 PDT
Comment on attachment 55499 [details]
Fix the crash

Clearing flags on attachment: 55499

Committed r59057: <http://trac.webkit.org/changeset/59057>
Comment 5 WebKit Commit Bot 2010-05-09 09:37:41 PDT
All reviewed patches have been landed.  Closing bug.
Comment 6 Benjamin Poulain 2010-05-10 02:38:59 PDT
(In reply to comment #3)
> (From update of attachment 55499 [details])
> Benjamin, can you verify that this fixes it for you?

Yep, no crash anymore.
Comment 7 Simon Hausmann 2010-05-11 02:22:05 PDT
Revision r59057 cherry-picked into qtwebkit-2.0 with commit 1a6db1adc3724ac3b85296a94e515a34bcdcb2a4