Changeset 85586 in webkit


Ignore:
Timestamp:
May 2, 2011 11:04:54 PM (13 years ago)
Author:
Simon Fraser
Message:

2011-05-02 Simon Fraser <Simon Fraser>

Reviewed by Dan Bernstein.

Possible crash when removing elements with reflections
https://bugs.webkit.org/show_bug.cgi?id=60009

RenderLayer's destructor deleted its z-order list Vector pointers
before removing the reflection layer. However, the reflection cleanup
code could call back into the RenderLayer to dirty z-order lists,
so move reflection cleanup to before z-order vector deletion.

The test crashes when run manually a few times with MallocScribble enabled,
but I was not able to create a test that crashed reliably.

Test: fast/reflections/remove-reflection-crash.html

  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::~RenderLayer):
Location:
trunk
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r85585 r85586  
     12011-05-02  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Reviewed by Dan Bernstein.
     4
     5        Possible crash when removing elements with reflections
     6        https://bugs.webkit.org/show_bug.cgi?id=60009
     7       
     8        Testcase that sometimes crashes if run with MallocScribble enabled.
     9
     10        * fast/reflections/remove-reflection-crash-expected.txt: Added.
     11        * fast/reflections/remove-reflection-crash.html: Added.
     12
    1132011-05-02  Ian Henderson  <ianh@apple.com>
    214
  • trunk/Source/WebCore/ChangeLog

    r85585 r85586  
     12011-05-02  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Reviewed by Dan Bernstein.
     4
     5        Possible crash when removing elements with reflections
     6        https://bugs.webkit.org/show_bug.cgi?id=60009
     7       
     8        RenderLayer's destructor deleted its z-order list Vector pointers
     9        before removing the reflection layer. However, the reflection cleanup
     10        code could call back into the RenderLayer to dirty z-order lists,
     11        so move reflection cleanup to before z-order vector deletion.
     12       
     13        The test crashes when run manually a few times with MallocScribble enabled,
     14        but I was not able to create a test that crashed reliably.
     15
     16        Test: fast/reflections/remove-reflection-crash.html
     17
     18        * rendering/RenderLayer.cpp:
     19        (WebCore::RenderLayer::~RenderLayer):
     20
    1212011-05-02  Ian Henderson  <ianh@apple.com>
    222
  • trunk/Source/WebCore/rendering/RenderLayer.cpp

    r84815 r85586  
    212212    destroyScrollbar(VerticalScrollbar);
    213213
     214    if (m_reflection)
     215        removeReflection();
     216
    214217    // Child layers will be deleted by their corresponding render objects, so
    215218    // we don't need to delete them ourselves.
     
    226229    // Make sure we have no lingering clip rects.
    227230    ASSERT(!m_clipRects);
    228    
    229     if (m_reflection)
    230         removeReflection();
    231231   
    232232    if (m_scrollCorner)
Note: See TracChangeset for help on using the changeset viewer.