Changeset 247370 in webkit


Ignore:
Timestamp:
Jul 11, 2019, 3:26:25 PM (6 years ago)
Author:
sihui_liu@apple.com
Message:

StorageArea should not be destructed on the main thread
https://bugs.webkit.org/show_bug.cgi?id=199713
<rdar://problem/52911900>

Reviewed by Alex Christensen.

After r246079, LocalStorageNameSpace could be destructed on the main thread and it may hold the last reference
to StorageArea. Then we saw the crashes that StorageArea was wrongly destructed on the main thread.

  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::~NetworkSession):

  • NetworkProcess/WebStorage/StorageManager.cpp:

(WebKit::StorageManager::waitUntilTasksFinished):
(WebKit::StorageManager::waitUntilWritesFinished): Deleted.

  • NetworkProcess/WebStorage/StorageManager.h:
Location:
trunk/Source/WebKit
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r247369 r247370  
     12019-07-11  Sihui Liu  <sihui_liu@apple.com>
     2
     3        StorageArea should not be destructed on the main thread
     4        https://bugs.webkit.org/show_bug.cgi?id=199713
     5        <rdar://problem/52911900>
     6
     7        Reviewed by Alex Christensen.
     8
     9        After r246079, LocalStorageNameSpace could be destructed on the main thread and it may hold the last reference
     10        to StorageArea. Then we saw the crashes that StorageArea was wrongly destructed on the main thread.
     11
     12        * NetworkProcess/NetworkSession.cpp:
     13        (WebKit::NetworkSession::~NetworkSession):
     14        * NetworkProcess/WebStorage/StorageManager.cpp:
     15        (WebKit::StorageManager::waitUntilTasksFinished):
     16        (WebKit::StorageManager::waitUntilWritesFinished): Deleted.
     17        * NetworkProcess/WebStorage/StorageManager.h:
     18
    1192019-07-11  Tim Horton  <timothy_horton@apple.com>
    220
  • trunk/Source/WebKit/NetworkProcess/NetworkSession.cpp

    r247250 r247370  
    9696{
    9797    m_storageManager->resume();
    98     m_storageManager->waitUntilWritesFinished();
     98    m_storageManager->waitUntilTasksFinished();
    9999}
    100100
  • trunk/Source/WebKit/NetworkProcess/WebStorage/StorageManager.cpp

    r247250 r247370  
    908908}
    909909
    910 void StorageManager::waitUntilWritesFinished()
     910void StorageManager::waitUntilTasksFinished()
    911911{
    912912    BinarySemaphore semaphore;
     
    921921            m_storageAreasByConnection.remove(connectionStorageAreaPair);
    922922
     923        m_localStorageNamespaces.clear();
     924
    923925        semaphore.signal();
    924926    });
  • trunk/Source/WebKit/NetworkProcess/WebStorage/StorageManager.h

    r247250 r247370  
    5858
    5959    void processDidCloseConnection(IPC::Connection&);
    60     void waitUntilWritesFinished();
     60    void waitUntilTasksFinished();
    6161    void suspend(CompletionHandler<void()>&&);
    6262    void resume();
Note: See TracChangeset for help on using the changeset viewer.