Changeset 204621 in webkit


Ignore:
Timestamp:
Aug 18, 2016 6:07:45 PM (8 years ago)
Author:
Chris Dumez
Message:

[iOS] Network Processes & Database processes do not exit promptly
https://bugs.webkit.org/show_bug.cgi?id=160978
<rdar://problem/27914081>

Reviewed by Anders Carlsson.

Network Processes & Database processes do not exit promptly. They hang
for 10 seconds until they log the following message:

com.apple.WebKit.Networking: (WebKit) #WK: Exiting process early due to unacknowledged closed-connection

Then forcefully call exit(0).

To address the issue, we now call ChildProcess::stopRunLoop() instead
of RunLoop::current().stop(). stopRunLoop() works as expected on iOS
after r202723.

There is no impact on Mac because stopRunLoop() calls
RunLoop::current().stop().

  • DatabaseProcess/DatabaseProcess.cpp:

(WebKit::DatabaseProcess::didClose):
(WebKit::DatabaseProcess::didReceiveInvalidMessage):

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::didClose):
(WebKit::NetworkProcess::didReceiveInvalidMessage):

Location:
trunk/Source/WebKit2
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r204614 r204621  
     12016-08-18  Chris Dumez  <cdumez@apple.com>
     2
     3        [iOS] Network Processes & Database processes do not exit promptly
     4        https://bugs.webkit.org/show_bug.cgi?id=160978
     5        <rdar://problem/27914081>
     6
     7        Reviewed by Anders Carlsson.
     8
     9        Network Processes & Database processes do not exit promptly. They hang
     10        for 10 seconds until they log the following message:
     11        > com.apple.WebKit.Networking: (WebKit) #WK: Exiting process early due to unacknowledged closed-connection
     12
     13        Then forcefully call exit(0).
     14
     15        To address the issue, we now call ChildProcess::stopRunLoop() instead
     16        of RunLoop::current().stop(). stopRunLoop() works as expected on iOS
     17        after r202723.
     18
     19        There is no impact on Mac because stopRunLoop() calls
     20        RunLoop::current().stop().
     21
     22        * DatabaseProcess/DatabaseProcess.cpp:
     23        (WebKit::DatabaseProcess::didClose):
     24        (WebKit::DatabaseProcess::didReceiveInvalidMessage):
     25        * NetworkProcess/NetworkProcess.cpp:
     26        (WebKit::NetworkProcess::didClose):
     27        (WebKit::NetworkProcess::didReceiveInvalidMessage):
     28
    1292016-08-18  Dan Bernstein  <mitz@apple.com>
    230
  • trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp

    r204011 r204621  
    7777void DatabaseProcess::didClose(IPC::Connection&)
    7878{
    79     RunLoop::current().stop();
     79    stopRunLoop();
    8080}
    8181
     
    9393void DatabaseProcess::didReceiveInvalidMessage(IPC::Connection&, IPC::StringReference, IPC::StringReference)
    9494{
    95     RunLoop::current().stop();
     95    stopRunLoop();
    9696}
    9797
  • trunk/Source/WebKit2/NetworkProcess/NetworkProcess.cpp

    r204472 r204621  
    158158{
    159159    // The UIProcess just exited.
    160     RunLoop::current().stop();
     160    stopRunLoop();
    161161}
    162162
    163163void NetworkProcess::didReceiveInvalidMessage(IPC::Connection&, IPC::StringReference, IPC::StringReference)
    164164{
    165     RunLoop::current().stop();
     165    stopRunLoop();
    166166}
    167167
Note: See TracChangeset for help on using the changeset viewer.