Changeset 243957 in webkit


Ignore:
Timestamp:
Apr 5, 2019 6:02:44 PM (5 years ago)
Author:
sihui_liu@apple.com
Message:

[iOS] Web process gets suspended while holding locked database files
https://bugs.webkit.org/show_bug.cgi?id=196519
<rdar://problem/49531797>

Reviewed by Chris Dumez.

Source/WebCore:

Don't use DatabaseTracker singleton before it is initialized.

  • Modules/webdatabase/DatabaseTracker.cpp:

(WebCore::DatabaseTracker::isInitialized):

  • Modules/webdatabase/DatabaseTracker.h:

Source/WebKit:

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::actualPrepareToSuspend):

Location:
trunk/Source
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r243954 r243957  
     12019-04-05  Sihui Liu  <sihui_liu@apple.com>
     2
     3        [iOS] Web process gets suspended while holding locked database files
     4        https://bugs.webkit.org/show_bug.cgi?id=196519
     5        <rdar://problem/49531797>
     6
     7        Reviewed by Chris Dumez.
     8
     9        Don't use DatabaseTracker singleton before it is initialized.
     10
     11        * Modules/webdatabase/DatabaseTracker.cpp:
     12        (WebCore::DatabaseTracker::isInitialized):
     13        * Modules/webdatabase/DatabaseTracker.h:
     14
    1152019-04-05  Ryosuke Niwa  <rniwa@webkit.org>
    216
  • trunk/Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp

    r243270 r243957  
    7979        return;
    8080    staticTracker = new DatabaseTracker(databasePath);
     81}
     82
     83bool DatabaseTracker::isInitialized()
     84{
     85    return !!staticTracker;
    8186}
    8287
  • trunk/Source/WebCore/Modules/webdatabase/DatabaseTracker.h

    r243219 r243957  
    6060
    6161    WEBCORE_EXPORT static DatabaseTracker& singleton();
     62    WEBCORE_EXPORT static bool isInitialized();
    6263    // This singleton will potentially be used from multiple worker threads and the page's context thread simultaneously.  To keep this safe, it's
    6364    // currently using 4 locks.  In order to avoid deadlock when taking multiple locks, you must take them in the correct order:
  • trunk/Source/WebKit/ChangeLog

    r243956 r243957  
     12019-04-05  Sihui Liu  <sihui_liu@apple.com>
     2
     3        [iOS] Web process gets suspended while holding locked database files
     4        https://bugs.webkit.org/show_bug.cgi?id=196519
     5        <rdar://problem/49531797>
     6
     7        Reviewed by Chris Dumez.
     8
     9        * WebProcess/WebProcess.cpp:
     10        (WebKit::WebProcess::actualPrepareToSuspend):
     11
    1122019-04-05  Alex Christensen  <achristensen@webkit.org>
    213
  • trunk/Source/WebKit/WebProcess/WebProcess.cpp

    r243939 r243957  
    14681468    m_webSQLiteDatabaseTracker = nullptr;
    14691469    SQLiteDatabase::setIsDatabaseOpeningForbidden(true);
    1470     DatabaseTracker::singleton().closeAllDatabases(CurrentQueryBehavior::Interrupt);
     1470    if (DatabaseTracker::isInitialized())
     1471        DatabaseTracker::singleton().closeAllDatabases(CurrentQueryBehavior::Interrupt);
    14711472    accessibilityProcessSuspendedNotification(true);
    14721473    updateFreezerStatus();
Note: See TracChangeset for help on using the changeset viewer.