Diff
Modified: trunk/Source/WebKit/ChangeLog (236424 => 236425)
--- trunk/Source/WebKit/ChangeLog 2018-09-24 20:19:46 UTC (rev 236424)
+++ trunk/Source/WebKit/ChangeLog 2018-09-24 20:31:31 UTC (rev 236425)
@@ -1,3 +1,18 @@
+2018-09-24 Chris Dumez <[email protected]>
+
+ Unreviewed, rolling out r236368.
+
+ Caused WebKit.NetworkProcessCrashWithPendingConnection API
+ test to crash (Bug 189926)
+
+ Reverted changeset:
+
+ "Extending the lifetime of a NetworkProcessProxy /
+ StorageProcessProxy may cause it to have a stale
+ WebProcessPool pointer"
+ https://bugs.webkit.org/show_bug.cgi?id=189851
+ https://trac.webkit.org/changeset/236368
+
2018-09-21 Simon Fraser <[email protected]>
Remove the old "AcceleratedCompositingForOverflowScroll" code
Modified: trunk/Source/WebKit/UIProcess/ChildProcessProxy.h (236424 => 236425)
--- trunk/Source/WebKit/UIProcess/ChildProcessProxy.h 2018-09-24 20:19:46 UTC (rev 236424)
+++ trunk/Source/WebKit/UIProcess/ChildProcessProxy.h 2018-09-24 20:31:31 UTC (rev 236425)
@@ -36,7 +36,7 @@
namespace WebKit {
-class ChildProcessProxy : ProcessLauncher::Client, public IPC::Connection::Client {
+class ChildProcessProxy : ProcessLauncher::Client, public IPC::Connection::Client, public ThreadSafeRefCounted<ChildProcessProxy> {
WTF_MAKE_NONCOPYABLE(ChildProcessProxy);
protected:
Modified: trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp (236424 => 236425)
--- trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp 2018-09-24 20:19:46 UTC (rev 236424)
+++ trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp 2018-09-24 20:31:31 UTC (rev 236425)
@@ -66,6 +66,11 @@
return ++callbackID;
}
+Ref<NetworkProcessProxy> NetworkProcessProxy::create(WebProcessPool& processPool)
+{
+ return adoptRef(*new NetworkProcessProxy(processPool));
+}
+
NetworkProcessProxy::NetworkProcessProxy(WebProcessPool& processPool)
: ChildProcessProxy(processPool.alwaysRunsAtBackgroundPriority())
, m_processPool(processPool)
@@ -92,16 +97,6 @@
#endif
}
-void NetworkProcessProxy::ref()
-{
- m_processPool.ref();
-}
-
-void NetworkProcessProxy::deref()
-{
- m_processPool.deref();
-}
-
void NetworkProcessProxy::getLaunchOptions(ProcessLauncher::LaunchOptions& launchOptions)
{
launchOptions.processType = ProcessLauncher::ProcessType::Network;
@@ -253,7 +248,7 @@
void NetworkProcessProxy::didClose(IPC::Connection&)
{
- auto protectedThis = makeRef(*this);
+ auto protectedProcessPool = makeRef(m_processPool);
if (m_downloadProxyMap)
m_downloadProxyMap->processDidClose();
@@ -405,7 +400,7 @@
}
auto callbackId = generateCallbackID();
- auto addResult = m_updateBlockCookiesCallbackMap.add(callbackId, [protectedThis = makeRef(*this), token = throttler().backgroundActivityToken(), completionHandler = WTFMove(completionHandler)]() mutable {
+ auto addResult = m_updateBlockCookiesCallbackMap.add(callbackId, [protectedProcessPool = makeRef(m_processPool), token = throttler().backgroundActivityToken(), completionHandler = WTFMove(completionHandler)]() mutable {
completionHandler();
});
ASSERT_UNUSED(addResult, addResult.isNewEntry);
Modified: trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h (236424 => 236425)
--- trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h 2018-09-24 20:19:46 UTC (rev 236424)
+++ trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h 2018-09-24 20:31:31 UTC (rev 236425)
@@ -64,9 +64,9 @@
class WebUserContentControllerProxy;
struct WebsiteData;
-class NetworkProcessProxy final : public ChildProcessProxy, private ProcessThrottlerClient {
+class NetworkProcessProxy : public ChildProcessProxy, private ProcessThrottlerClient {
public:
- explicit NetworkProcessProxy(WebProcessPool&);
+ static Ref<NetworkProcessProxy> create(WebProcessPool&);
~NetworkProcessProxy();
void getNetworkProcessConnection(Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply&&);
@@ -87,9 +87,6 @@
void resetCacheMaxAgeCapForPrevalentResources(PAL::SessionID, CompletionHandler<void()>&&);
#endif
- void ref();
- void deref();
-
void writeBlobToFilePath(const WebCore::URL&, const String& path, CompletionHandler<void(bool)>&& callback);
void processReadyToSuspend();
@@ -113,6 +110,8 @@
void removeSession(PAL::SessionID);
private:
+ NetworkProcessProxy(WebProcessPool&);
+
// ChildProcessProxy
void getLaunchOptions(ProcessLauncher::LaunchOptions&) override;
void connectionWillOpen(IPC::Connection&) override;
Modified: trunk/Source/WebKit/UIProcess/Plugins/PluginProcessProxy.h (236424 => 236425)
--- trunk/Source/WebKit/UIProcess/Plugins/PluginProcessProxy.h 2018-09-24 20:19:46 UTC (rev 236424)
+++ trunk/Source/WebKit/UIProcess/Plugins/PluginProcessProxy.h 2018-09-24 20:31:31 UTC (rev 236425)
@@ -66,7 +66,7 @@
int pluginProcessThroughputQOS();
#endif
-class PluginProcessProxy final : public ChildProcessProxy, public ThreadSafeRefCounted<PluginProcessProxy> {
+class PluginProcessProxy : public ChildProcessProxy {
public:
static Ref<PluginProcessProxy> create(PluginProcessManager*, const PluginProcessAttributes&, uint64_t pluginProcessToken);
~PluginProcessProxy();
Modified: trunk/Source/WebKit/UIProcess/Storage/StorageProcessProxy.cpp (236424 => 236425)
--- trunk/Source/WebKit/UIProcess/Storage/StorageProcessProxy.cpp 2018-09-24 20:19:46 UTC (rev 236424)
+++ trunk/Source/WebKit/UIProcess/Storage/StorageProcessProxy.cpp 2018-09-24 20:31:31 UTC (rev 236425)
@@ -44,6 +44,11 @@
return ++callbackID;
}
+Ref<StorageProcessProxy> StorageProcessProxy::create(WebProcessPool& processPool)
+{
+ return adoptRef(*new StorageProcessProxy(processPool));
+}
+
StorageProcessProxy::StorageProcessProxy(WebProcessPool& processPool)
: ChildProcessProxy(processPool.alwaysRunsAtBackgroundPriority())
, m_processPool(processPool)
@@ -52,16 +57,6 @@
connect();
}
-void StorageProcessProxy::ref()
-{
- m_processPool.ref();
-}
-
-void StorageProcessProxy::deref()
-{
- m_processPool.deref();
-}
-
StorageProcessProxy::~StorageProcessProxy()
{
ASSERT(m_pendingFetchWebsiteDataCallbacks.isEmpty());
Modified: trunk/Source/WebKit/UIProcess/Storage/StorageProcessProxy.h (236424 => 236425)
--- trunk/Source/WebKit/UIProcess/Storage/StorageProcessProxy.h 2018-09-24 20:19:46 UTC (rev 236424)
+++ trunk/Source/WebKit/UIProcess/Storage/StorageProcessProxy.h 2018-09-24 20:31:31 UTC (rev 236425)
@@ -47,14 +47,11 @@
enum class WebsiteDataType;
struct WebsiteData;
-class StorageProcessProxy final : public ChildProcessProxy {
+class StorageProcessProxy : public ChildProcessProxy {
public:
- explicit StorageProcessProxy(WebProcessPool&);
+ static Ref<StorageProcessProxy> create(WebProcessPool&);
~StorageProcessProxy();
- void ref();
- void deref();
-
void fetchWebsiteData(PAL::SessionID, OptionSet<WebsiteDataType>, CompletionHandler<void(WebsiteData)>&&);
void deleteWebsiteData(PAL::SessionID, OptionSet<WebsiteDataType>, WallTime modifiedSince, CompletionHandler<void()>&&);
void deleteWebsiteDataForOrigins(PAL::SessionID, OptionSet<WebsiteDataType>, const Vector<WebCore::SecurityOriginData>&, CompletionHandler<void()>&&);
@@ -64,6 +61,8 @@
void terminateForTesting();
private:
+ StorageProcessProxy(WebProcessPool&);
+
// ChildProcessProxy
void getLaunchOptions(ProcessLauncher::LaunchOptions&) override;
void processWillShutDown(IPC::Connection&) override;
Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (236424 => 236425)
--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp 2018-09-24 20:19:46 UTC (rev 236424)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp 2018-09-24 20:31:31 UTC (rev 236425)
@@ -471,7 +471,7 @@
return *m_networkProcess;
}
- m_networkProcess = std::make_unique<NetworkProcessProxy>(*this);
+ m_networkProcess = NetworkProcessProxy::create(*this);
NetworkProcessCreationParameters parameters;
@@ -612,7 +612,7 @@
parameters.shouldDisableServiceWorkerProcessTerminationDelay = m_shouldDisableServiceWorkerProcessTerminationDelay;
#endif
- m_storageProcess = std::make_unique<StorageProcessProxy>(*this);
+ m_storageProcess = StorageProcessProxy::create(*this);
m_storageProcess->send(Messages::StorageProcess::InitializeWebsiteDataStore(parameters), 0);
}
@@ -648,7 +648,7 @@
#if ENABLE(SERVICE_WORKER)
void WebProcessPool::establishWorkerContextConnectionToStorageProcess(StorageProcessProxy& proxy, SecurityOriginData&& securityOrigin, std::optional<PAL::SessionID> sessionID)
{
- ASSERT_UNUSED(proxy, &proxy == m_storageProcess.get());
+ ASSERT_UNUSED(proxy, &proxy == m_storageProcess);
if (m_serviceWorkerProcesses.contains(securityOrigin))
return;
Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.h (236424 => 236425)
--- trunk/Source/WebKit/UIProcess/WebProcessPool.h 2018-09-24 20:19:46 UTC (rev 236424)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.h 2018-09-24 20:31:31 UTC (rev 236425)
@@ -626,8 +626,8 @@
bool m_canHandleHTTPSServerTrustEvaluation { true };
bool m_didNetworkProcessCrash { false };
- std::unique_ptr<NetworkProcessProxy> m_networkProcess;
- std::unique_ptr<StorageProcessProxy> m_storageProcess;
+ RefPtr<NetworkProcessProxy> m_networkProcess;
+ RefPtr<StorageProcessProxy> m_storageProcess;
HashMap<uint64_t, RefPtr<DictionaryCallback>> m_dictionaryCallbacks;
HashMap<uint64_t, RefPtr<StatisticsRequest>> m_statisticsRequests;
Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.h (236424 => 236425)
--- trunk/Source/WebKit/UIProcess/WebProcessProxy.h 2018-09-24 20:19:46 UTC (rev 236424)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.h 2018-09-24 20:31:31 UTC (rev 236425)
@@ -91,7 +91,7 @@
typedef BackgroundWebProcessCounter::Token BackgroundWebProcessToken;
#endif
-class WebProcessProxy : public ChildProcessProxy, public ResponsivenessTimer::Client, public ThreadSafeRefCounted<WebProcessProxy>, private ProcessThrottlerClient {
+class WebProcessProxy : public ChildProcessProxy, public ResponsivenessTimer::Client, private ProcessThrottlerClient {
public:
typedef HashMap<uint64_t, RefPtr<WebFrameProxy>> WebFrameProxyMap;
typedef HashMap<uint64_t, WebPageProxy*> WebPageProxyMap;