Chrome crash multiple kendo charts
Reported by
ravi.i...@gmail.com,
May 31 2016
|
||||||||
Issue descriptionIMPORTANT: Your crash has already been automatically reported to our crash system. Please file this bug only if you can provide more information about it. Chrome Version: 50.0.2661.102 Operating System: Windows NT 6.1 SP1 URL (if applicable) where crash occurred: Can you reproduce this crash? What steps will reproduce this crash? (If it's not reproducible, what were you doing just before the crash?) 1. 2. 3. ****DO NOT CHANGE BELOW THIS LINE**** Crash ID: crash/e113e65c00000000
,
Jun 2 2016
junov@ can you look into this? Looks like canvas is missing some null checks? How do we get there with null?
,
Jun 9 2016
,
Jun 10 2016
This is probably a use after free error. Flagging to Security I think this is caused by a bad oilpan pattern. Because I have no reliable repro, I can only speculate on the cause based on analysis of minidumps. The minidumps show a state where context has a valid pointer to an HTMLCanvasElement, but the canvas element's reference to the context is a null pointer. HTMLCanvasElement never resets its m_context pointer, so my hypothesis is that the HTMLCanvasElement was freed and overwritten while the context is still waiting to be GC'ed. Here is a likely scenario of how we may be ending up in this state: WebThreadBase::TaskObserver is not a garbage collected type. CanvasRenderingContext2D, which inherits TaskObserver is GarbageCollected. That on its own is fine because CanvasRenderingContext2D has a prefinalizer that unregisters itself as a task observer prior to destruction. Where things get messy is that the canvas element and the context keep have circular Member references. These inter references are never cleaned-up during tear down, so we can end up in a state where a canvas context pair has no traced references (thus, the pair is available for GC), but there remains an untraced refence to the context as a TaskObserver. Then, there is a chance of getting a partial GC that collects the canvas element, but not the context. Then, if the context gets invoked as a TaskObserver, it may use its reference to the canvas element, which points to deallocated memory. Boom! I think the solution is for whichever object is destroyed first between the canvas and the context to tear down the circular references.
,
Jun 10 2016
,
Jun 13 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a5b85a5aa0b3949351143a35f41f93920db3baea commit a5b85a5aa0b3949351143a35f41f93920db3baea Author: junov <junov@chromium.org> Date: Mon Jun 13 22:52:11 2016 Fix canvas-related crash caused by bad object teardown sequence Made it safe for HTMLCanvasElement and its associated rendering context to be garbage collected in separate sweeps. Drive-by: changed ASSERTs to DCHECKs etc. BUG= 616003 Review-Url: https://codereview.chromium.org/2057283002 Cr-Commit-Position: refs/heads/master@{#399587} [modify] https://crrev.com/a5b85a5aa0b3949351143a35f41f93920db3baea/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp [modify] https://crrev.com/a5b85a5aa0b3949351143a35f41f93920db3baea/third_party/WebKit/Source/core/html/HTMLCanvasElement.h [modify] https://crrev.com/a5b85a5aa0b3949351143a35f41f93920db3baea/third_party/WebKit/Source/core/html/canvas/CanvasRenderingContext.cpp [modify] https://crrev.com/a5b85a5aa0b3949351143a35f41f93920db3baea/third_party/WebKit/Source/core/html/canvas/CanvasRenderingContext.h [modify] https://crrev.com/a5b85a5aa0b3949351143a35f41f93920db3baea/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2D.cpp [modify] https://crrev.com/a5b85a5aa0b3949351143a35f41f93920db3baea/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DTest.cpp [modify] https://crrev.com/a5b85a5aa0b3949351143a35f41f93920db3baea/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.cpp
,
Jun 13 2016
The fix landed in comment 6 resolves a possible destruction race that may have been causing the bad state that was at the root of this crash. Since this issue has no clear repro steps we will have to wait and see is the crashes go away before declaring this issue fixed.
,
Jun 15 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a5b85a5aa0b3949351143a35f41f93920db3baea commit a5b85a5aa0b3949351143a35f41f93920db3baea Author: junov <junov@chromium.org> Date: Mon Jun 13 22:52:11 2016 Fix canvas-related crash caused by bad object teardown sequence Made it safe for HTMLCanvasElement and its associated rendering context to be garbage collected in separate sweeps. Drive-by: changed ASSERTs to DCHECKs etc. BUG= 616003 Review-Url: https://codereview.chromium.org/2057283002 Cr-Commit-Position: refs/heads/master@{#399587} [modify] https://crrev.com/a5b85a5aa0b3949351143a35f41f93920db3baea/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp [modify] https://crrev.com/a5b85a5aa0b3949351143a35f41f93920db3baea/third_party/WebKit/Source/core/html/HTMLCanvasElement.h [modify] https://crrev.com/a5b85a5aa0b3949351143a35f41f93920db3baea/third_party/WebKit/Source/core/html/canvas/CanvasRenderingContext.cpp [modify] https://crrev.com/a5b85a5aa0b3949351143a35f41f93920db3baea/third_party/WebKit/Source/core/html/canvas/CanvasRenderingContext.h [modify] https://crrev.com/a5b85a5aa0b3949351143a35f41f93920db3baea/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2D.cpp [modify] https://crrev.com/a5b85a5aa0b3949351143a35f41f93920db3baea/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DTest.cpp [modify] https://crrev.com/a5b85a5aa0b3949351143a35f41f93920db3baea/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.cpp
,
Jun 15 2016
,
Jun 16 2016
,
Sep 22 2016
This bug has been closed for more than 14 weeks. Removing security view restrictions. For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot |
||||||||
►
Sign in to add a comment |
||||||||
Comment 1 by tkonch...@chromium.org
, Jun 1 2016Labels: OS-Windows
Status: Untriaged (was: Unconfirmed)