<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[203856] trunk/Source/WebKit2</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/203856">203856</a></dd>
<dt>Author</dt> <dd>carlosgc@webkit.org</dd>
<dt>Date</dt> <dd>2016-07-28 22:16:01 -0700 (Thu, 28 Jul 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Database Process: ASSERTION FAILED: paths.size() == handles.size() with SANDBOX_EXTENSIONS disabled
https://bugs.webkit.org/show_bug.cgi?id=160188

Reviewed by Sergio Villar Senin.

This happens in ports with sandbox extensions disabled, and it's making several tests to crash in debug
builds. The SandboxExtension implementation is empty in case of building with sandbox extensions disabled, so
that we are actually allocating no extensions at all in
NetworkProcessProxy::grantSandboxExtensionsToDatabaseProcessForBlobs(). When the message arrives to database
process, we have a list of paths, but an empty list of hanldes which causes the assertion. We can just avoid
that message entirely in case of building without sandbox extensions.

* DatabaseProcess/DatabaseProcess.cpp:
* DatabaseProcess/DatabaseProcess.h:
* DatabaseProcess/DatabaseProcess.messages.in:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::grantSandboxExtensionsToDatabaseProcessForBlobs):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2DatabaseProcessDatabaseProcesscpp">trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp</a></li>
<li><a href="#trunkSourceWebKit2DatabaseProcessDatabaseProcessh">trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.h</a></li>
<li><a href="#trunkSourceWebKit2DatabaseProcessDatabaseProcessmessagesin">trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.messages.in</a></li>
<li><a href="#trunkSourceWebKit2UIProcessNetworkNetworkProcessProxycpp">trunk/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (203855 => 203856)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2016-07-29 03:03:21 UTC (rev 203855)
+++ trunk/Source/WebKit2/ChangeLog        2016-07-29 05:16:01 UTC (rev 203856)
</span><span class="lines">@@ -1,3 +1,23 @@
</span><ins>+2016-07-28  Carlos Garcia Campos  &lt;cgarcia@igalia.com&gt;
+
+        Database Process: ASSERTION FAILED: paths.size() == handles.size() with SANDBOX_EXTENSIONS disabled
+        https://bugs.webkit.org/show_bug.cgi?id=160188
+
+        Reviewed by Sergio Villar Senin.
+
+        This happens in ports with sandbox extensions disabled, and it's making several tests to crash in debug
+        builds. The SandboxExtension implementation is empty in case of building with sandbox extensions disabled, so
+        that we are actually allocating no extensions at all in
+        NetworkProcessProxy::grantSandboxExtensionsToDatabaseProcessForBlobs(). When the message arrives to database
+        process, we have a list of paths, but an empty list of hanldes which causes the assertion. We can just avoid
+        that message entirely in case of building without sandbox extensions.
+
+        * DatabaseProcess/DatabaseProcess.cpp:
+        * DatabaseProcess/DatabaseProcess.h:
+        * DatabaseProcess/DatabaseProcess.messages.in:
+        * UIProcess/Network/NetworkProcessProxy.cpp:
+        (WebKit::NetworkProcessProxy::grantSandboxExtensionsToDatabaseProcessForBlobs):
+
</ins><span class="cx"> 2016-07-28  Myles C. Maxfield  &lt;mmaxfield@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Remove deprecated SPI for video inline / fullscreen controls
</span></span></pre></div>
<a id="trunkSourceWebKit2DatabaseProcessDatabaseProcesscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp (203855 => 203856)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp        2016-07-29 03:03:21 UTC (rev 203855)
+++ trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp        2016-07-29 05:16:01 UTC (rev 203856)
</span><span class="lines">@@ -238,6 +238,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if ENABLE(SANDBOX_EXTENSIONS)
</ins><span class="cx"> void DatabaseProcess::grantSandboxExtensionsForBlobs(const Vector&lt;String&gt;&amp; paths, const SandboxExtension::HandleArray&amp; handles)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(paths.size() == handles.size());
</span><span class="lines">@@ -247,6 +248,7 @@
</span><span class="cx">         ASSERT_UNUSED(result, result.isNewEntry);
</span><span class="cx">     }
</span><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="cx"> void DatabaseProcess::prepareForAccessToTemporaryFile(const String&amp; path)
</span></span></pre></div>
<a id="trunkSourceWebKit2DatabaseProcessDatabaseProcessh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.h (203855 => 203856)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.h        2016-07-29 03:03:21 UTC (rev 203855)
+++ trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.h        2016-07-29 05:16:01 UTC (rev 203856)
</span><span class="lines">@@ -103,7 +103,9 @@
</span><span class="cx">     void fetchWebsiteData(WebCore::SessionID, OptionSet&lt;WebsiteDataType&gt; websiteDataTypes, uint64_t callbackID);
</span><span class="cx">     void deleteWebsiteData(WebCore::SessionID, OptionSet&lt;WebsiteDataType&gt; websiteDataTypes, std::chrono::system_clock::time_point modifiedSince, uint64_t callbackID);
</span><span class="cx">     void deleteWebsiteDataForOrigins(WebCore::SessionID, OptionSet&lt;WebsiteDataType&gt; websiteDataTypes, const Vector&lt;WebCore::SecurityOriginData&gt;&amp; origins, uint64_t callbackID);
</span><ins>+#if ENABLE(SANDBOX_EXTENSIONS)
</ins><span class="cx">     void grantSandboxExtensionsForBlobs(const Vector&lt;String&gt;&amp; paths, const SandboxExtension::HandleArray&amp;);
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx">     void didGetSandboxExtensionsForBlobFiles(uint64_t requestID, SandboxExtension::HandleArray&amp;&amp;);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2DatabaseProcessDatabaseProcessmessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.messages.in (203855 => 203856)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.messages.in        2016-07-29 03:03:21 UTC (rev 203855)
+++ trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.messages.in        2016-07-29 05:16:01 UTC (rev 203856)
</span><span class="lines">@@ -32,7 +32,9 @@
</span><span class="cx">     FetchWebsiteData(WebCore::SessionID sessionID, OptionSet&lt;WebKit::WebsiteDataType&gt; websiteDataTypes, uint64_t callbackID)
</span><span class="cx">     DeleteWebsiteData(WebCore::SessionID sessionID, OptionSet&lt;WebKit::WebsiteDataType&gt; websiteDataTypes, std::chrono::system_clock::time_point modifiedSince, uint64_t callbackID)
</span><span class="cx">     DeleteWebsiteDataForOrigins(WebCore::SessionID sessionID, OptionSet&lt;WebKit::WebsiteDataType&gt; websiteDataTypes, Vector&lt;WebCore::SecurityOriginData&gt; origins, uint64_t callbackID)
</span><ins>+#if ENABLE(SANDBOX_EXTENSIONS)
</ins><span class="cx">     GrantSandboxExtensionsForBlobs(Vector&lt;String&gt; paths, WebKit::SandboxExtension::HandleArray extensions)
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx">     DidGetSandboxExtensionsForBlobFiles(uint64_t requestID, WebKit::SandboxExtension::HandleArray extensions)
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessNetworkNetworkProcessProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp (203855 => 203856)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp        2016-07-29 03:03:21 UTC (rev 203855)
+++ trunk/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp        2016-07-29 05:16:01 UTC (rev 203856)
</span><span class="lines">@@ -280,6 +280,7 @@
</span><span class="cx"> void NetworkProcessProxy::grantSandboxExtensionsToDatabaseProcessForBlobs(uint64_t requestID, const Vector&lt;String&gt;&amp; paths)
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(DATABASE_PROCESS)
</span><ins>+#if ENABLE(SANDBOX_EXTENSIONS)
</ins><span class="cx">     SandboxExtension::HandleArray extensions;
</span><span class="cx">     extensions.allocate(paths.size());
</span><span class="cx">     for (size_t i = 0; i &lt; paths.size(); ++i) {
</span><span class="lines">@@ -288,6 +289,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     m_processPool.sendToDatabaseProcessRelaunchingIfNecessary(Messages::DatabaseProcess::GrantSandboxExtensionsForBlobs(paths, extensions));
</span><ins>+#endif
</ins><span class="cx">     connection()-&gt;send(Messages::NetworkProcess::DidGrantSandboxExtensionsToDatabaseProcessForBlobs(requestID), 0);
</span><span class="cx"> #endif
</span><span class="cx"> }
</span></span></pre>
</div>
</div>

</body>
</html>