⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 278317 in webkit


Ignore:
Timestamp:
Jun 1, 2021, 11:57:43 AM (5 years ago)
Author:
sihui_liu@apple.com
Message:

Resume WebIDBServer when it is about to be closed
https://bugs.webkit.org/show_bug.cgi?id=226502
rdar://78691498

Reviewed by Chris Dumez.

We started to acquire m_serverLock in WebIDBServer::close() in r278179 to stop database activities on the main
thread. However, m_serverLock may already be held for suspension, and WebIDBServer::close() may be called
before resume(). We need to resume WebIDBServer so m_serverLock can be acquired for stopping database activities.
This also makes sure background thread is resumed before WebIDBServer is removed from NetworkProcess.

  • NetworkProcess/IndexedDB/WebIDBServer.cpp:

(WebKit::WebIDBServer::~WebIDBServer):
(WebKit::WebIDBServer::close):

Location:
trunk/Source/WebKit
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r278315 r278317  
     12021-06-01  Sihui Liu  <sihui_liu@apple.com>
     2
     3        Resume WebIDBServer when it is about to be closed
     4        https://bugs.webkit.org/show_bug.cgi?id=226502
     5        rdar://78691498
     6
     7        Reviewed by Chris Dumez.
     8
     9        We started to acquire m_serverLock in WebIDBServer::close() in r278179 to stop database activities on the main
     10        thread. However, m_serverLock may already be held for suspension, and WebIDBServer::close() may be called
     11        before resume(). We need to resume WebIDBServer so m_serverLock can be acquired for stopping database activities.
     12        This also makes sure background thread is resumed before WebIDBServer is removed from NetworkProcess.
     13
     14        * NetworkProcess/IndexedDB/WebIDBServer.cpp:
     15        (WebKit::WebIDBServer::~WebIDBServer):
     16        (WebKit::WebIDBServer::close):
     17
    1182021-06-01  Chris Dumez  <cdumez@apple.com>
    219
  • trunk/Source/WebKit/NetworkProcess/IndexedDB/WebIDBServer.cpp

    r278226 r278317  
    5959    // close() has to be called to make sure thread exits.
    6060    ASSERT(!m_closeCallback);
     61    ASSERT(!m_isSuspended);
    6162}
    6263
     
    428429    });
    429430
     431#if PLATFORM(IOS_FAMILY)
     432    // Network process may become active and close WebIDBServer before receiving resume message.
     433    resume();
     434#endif
     435
    430436    {
    431437        Locker locker { m_serverLock };
Note: See TracChangeset for help on using the changeset viewer.