WebKit Bugzilla
Attachment 371363 Details for
Bug 198485
: REGRESSION(r245796): [WPE][GTK] Web process crash on startup
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-198485-20190604213928.patch (text/plain), 7.02 KB, created by
Michael Catanzaro
on 2019-06-04 19:39:29 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Michael Catanzaro
Created:
2019-06-04 19:39:29 PDT
Size:
7.02 KB
patch
obsolete
>Subversion Revision: 246093 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index c9b595bced2b63e31bcb1159b19a1b10995e8662..a3dc82cbae18eb8fa90849ff18ad2643f0709096 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,25 @@ >+2019-06-04 Michael Catanzaro <mcatanzaro@igalia.com> >+ >+ REGRESSION(r245796): [WPE][GTK] Web process crash on startup >+ https://bugs.webkit.org/show_bug.cgi?id=198485 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ The web process is crashing on startup because ResourceRequest tries to encode 0 to indicate >+ unspecified page ID, but this is now illegal because ObjectIdentifiers must be valid >+ (nonzero) when coded. So switch ResourceRequest back to using uint64_t to hold page IDs. >+ >+ If it's possible to encode Optional types, that would be even better, but I didn't >+ investigate this. >+ >+ * platform/network/soup/ResourceRequest.h: >+ (WebCore::ResourceRequest::initiatingPageID const): >+ (WebCore::ResourceRequest::setInitiatingPageID): >+ (WebCore::ResourceRequest::decodeWithPlatformData): >+ * platform/network/soup/ResourceRequestSoup.cpp: >+ (WebCore::ResourceRequest::updateSoupRequest const): >+ (WebCore::ResourceRequest::updateFromSoupRequest): >+ > 2019-06-04 Keith Rollin <krollin@apple.com> > > Fix 64-bit vs 32-bit mismatch in ISOFairPlayStreamingPsshBox.cpp >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index f238efd45d63d30c9578e3e3ad9ac30021b8c262..376d4041532fe3a651519dbaa004c9bed97f014a 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,14 @@ >+2019-06-04 Michael Catanzaro <mcatanzaro@igalia.com> >+ >+ REGRESSION(r245796): [WPE][GTK] Web process crash on startup >+ https://bugs.webkit.org/show_bug.cgi?id=198485 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * UIProcess/API/glib/WebKitURISchemeRequest.cpp: >+ (webkitURISchemeRequestCreate): >+ * WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp: >+ > 2019-06-04 Youenn Fablet <youenn@apple.com> > > getUserMedia requests should be processed sequentially in UIProcess >diff --git a/Source/WebCore/platform/network/soup/ResourceRequest.h b/Source/WebCore/platform/network/soup/ResourceRequest.h >index 543902ff534ea50a4deb05162c2eeb35ba2d7d96..5d7f3ee117f9aceba61bceda32836b7824aa4f92 100644 >--- a/Source/WebCore/platform/network/soup/ResourceRequest.h >+++ b/Source/WebCore/platform/network/soup/ResourceRequest.h >@@ -27,7 +27,6 @@ > #ifndef ResourceRequest_h > #define ResourceRequest_h > >-#include "PageIdentifier.h" > #include "ResourceRequestBase.h" > #include "URLSoup.h" > >@@ -95,8 +94,8 @@ namespace WebCore { > SoupMessageFlags soupMessageFlags() const { return m_soupFlags; } > void setSoupMessageFlags(SoupMessageFlags soupFlags) { m_soupFlags = soupFlags; } > >- PageIdentifier initiatingPageID() const { return m_initiatingPageID; } >- void setInitiatingPageID(PageIdentifier pageID) { m_initiatingPageID = pageID; } >+ uint64_t initiatingPageID() const { return m_initiatingPageID; } >+ void setInitiatingPageID(uint64_t pageID) { m_initiatingPageID = pageID; } > > GUniquePtr<SoupURI> createSoupURI() const; > >@@ -108,7 +107,7 @@ namespace WebCore { > > bool m_acceptEncoding : 1; > SoupMessageFlags m_soupFlags; >- PageIdentifier m_initiatingPageID; >+ uint64_t m_initiatingPageID { 0 }; > > void updateSoupMessageMembers(SoupMessage*) const; > void updateSoupMessageBody(SoupMessage*) const; >@@ -157,11 +156,10 @@ bool ResourceRequest::decodeWithPlatformData(Decoder& decoder) > return false; > m_soupFlags = static_cast<SoupMessageFlags>(soupMessageFlags); > >- Optional<PageIdentifier> initiatingPageID; >- decoder >> initiatingPageID; >- if (!initiatingPageID) >+ uint64_t initiatingPageID; >+ if (!decoder.decode(initiatingPageID)) > return false; >- m_initiatingPageID = *initiatingPageID; >+ m_initiatingPageID = initiatingPageID; > > return true; > } >diff --git a/Source/WebCore/platform/network/soup/ResourceRequestSoup.cpp b/Source/WebCore/platform/network/soup/ResourceRequestSoup.cpp >index 0ed25b37d5f80876812538770890af9b88e9364b..0f6ea19787a46c7474b41648f24584957b00d2a5 100644 >--- a/Source/WebCore/platform/network/soup/ResourceRequestSoup.cpp >+++ b/Source/WebCore/platform/network/soup/ResourceRequestSoup.cpp >@@ -183,7 +183,7 @@ void ResourceRequest::updateSoupRequest(SoupRequest* soupRequest) const > { > if (m_initiatingPageID) { > uint64_t* initiatingPageIDPtr = static_cast<uint64_t*>(fastMalloc(sizeof(uint64_t))); >- *initiatingPageIDPtr = m_initiatingPageID.toUInt64(); >+ *initiatingPageIDPtr = m_initiatingPageID; > g_object_set_data_full(G_OBJECT(soupRequest), g_intern_static_string(gSoupRequestInitiatingPageIDKey), initiatingPageIDPtr, fastFree); > } > >@@ -194,7 +194,7 @@ void ResourceRequest::updateSoupRequest(SoupRequest* soupRequest) const > void ResourceRequest::updateFromSoupRequest(SoupRequest* soupRequest) > { > uint64_t* initiatingPageIDPtr = static_cast<uint64_t*>(g_object_get_data(G_OBJECT(soupRequest), gSoupRequestInitiatingPageIDKey)); >- m_initiatingPageID = makeObjectIdentifier<PageIdentifierType>(initiatingPageIDPtr ? *initiatingPageIDPtr : 0); >+ m_initiatingPageID = initiatingPageIDPtr ? *initiatingPageIDPtr : 0; > } > > unsigned initializeMaximumHTTPConnectionCountPerHost() >diff --git a/Source/WebKit/UIProcess/API/glib/WebKitURISchemeRequest.cpp b/Source/WebKit/UIProcess/API/glib/WebKitURISchemeRequest.cpp >index 793cdbfd849d1aded46839c3ec0785bdd38c202c..54191d9f0eabc048cf4167cd0396ff0110c6e4b8 100644 >--- a/Source/WebKit/UIProcess/API/glib/WebKitURISchemeRequest.cpp >+++ b/Source/WebKit/UIProcess/API/glib/WebKitURISchemeRequest.cpp >@@ -84,7 +84,7 @@ WebKitURISchemeRequest* webkitURISchemeRequestCreate(uint64_t requestID, WebKitW > request->priv->webContext = webContext; > request->priv->manager = &manager; > request->priv->uri = resourceRequest.url().string().utf8(); >- request->priv->initiatingPage = WebProcessProxy::webPage(resourceRequest.initiatingPageID()); >+ request->priv->initiatingPage = WebProcessProxy::webPage(makeObjectIdentifier<PageIdentifierType>(resourceRequest.initiatingPageID())); > request->priv->requestID = requestID; > return request; > } >diff --git a/Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp b/Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp >index cfc5031ed6e4a2954fe02a03da87a161cd2d3082..a29cd4358e7c2b4d9d1cdbb114bcbbd5650696d0 100644 >--- a/Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp >+++ b/Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp >@@ -248,7 +248,7 @@ private: > } > > webkitURIRequestGetResourceRequest(request.get(), resourceRequest); >- resourceRequest.setInitiatingPageID(page.pageID()); >+ resourceRequest.setInitiatingPageID(page.pageID().toUInt64()); > > API::Dictionary::MapType message; > message.set(String::fromUTF8("Page"), &page);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 198485
:
371363
|
371367