Title: [206754] trunk/Source/WebKit2
Revision
206754
Author
[email protected]
Date
2016-10-03 15:18:24 -0700 (Mon, 03 Oct 2016)

Log Message

More logging to diagnose "WebKit encountered an internal error" messages
https://bugs.webkit.org/show_bug.cgi?id=162754

Reviewed by Antti Koivisto.

Add more logging around calls to internalError, as well as some
low-level logging around SharedMemory, and mach_vm_map in particular.

* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::startNetworkLoad):
* Platform/Logging.h:
* Platform/mac/SharedMemoryMac.cpp:
(WebKit::SharedMemory::allocate):
(WebKit::makeMemoryEntry):
(WebKit::SharedMemory::map):
(WebKit::SharedMemory::~SharedMemory):
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::networkProcessCrashed):
(WebKit::WebLoaderStrategy::loadResourceSynchronously):
* WebProcess/Network/WebResourceLoader.cpp:
(WebKit::WebResourceLoader::didReceiveResource):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (206753 => 206754)


--- trunk/Source/WebKit2/ChangeLog	2016-10-03 21:52:37 UTC (rev 206753)
+++ trunk/Source/WebKit2/ChangeLog	2016-10-03 22:18:24 UTC (rev 206754)
@@ -1,3 +1,27 @@
+2016-10-03  Keith Rollin  <[email protected]>
+
+        More logging to diagnose "WebKit encountered an internal error" messages
+        https://bugs.webkit.org/show_bug.cgi?id=162754
+
+        Reviewed by Antti Koivisto.
+
+        Add more logging around calls to internalError, as well as some
+        low-level logging around SharedMemory, and mach_vm_map in particular.
+
+        * NetworkProcess/NetworkResourceLoader.cpp:
+        (WebKit::NetworkResourceLoader::startNetworkLoad):
+        * Platform/Logging.h:
+        * Platform/mac/SharedMemoryMac.cpp:
+        (WebKit::SharedMemory::allocate):
+        (WebKit::makeMemoryEntry):
+        (WebKit::SharedMemory::map):
+        (WebKit::SharedMemory::~SharedMemory):
+        * WebProcess/Network/WebLoaderStrategy.cpp:
+        (WebKit::WebLoaderStrategy::networkProcessCrashed):
+        (WebKit::WebLoaderStrategy::loadResourceSynchronously):
+        * WebProcess/Network/WebResourceLoader.cpp:
+        (WebKit::WebResourceLoader::didReceiveResource):
+
 2016-10-03  Chris Dumez  <[email protected]>
 
         Add support for KeyboardEvent.key attribute

Modified: trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp (206753 => 206754)


--- trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp	2016-10-03 21:52:37 UTC (rev 206753)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp	2016-10-03 22:18:24 UTC (rev 206754)
@@ -50,6 +50,7 @@
 using namespace WebCore;
 
 #define RELEASE_LOG_IF_ALLOWED(fmt, ...) RELEASE_LOG_IF(isAlwaysOnLoggingAllowed(), Network, "%p - NetworkResourceLoader::" fmt, this, ##__VA_ARGS__)
+#define RELEASE_LOG_ERROR_IF_ALLOWED(fmt, ...) RELEASE_LOG_ERROR_IF(isAlwaysOnLoggingAllowed(), Network, "%p - NetworkResourceLoader::" fmt, this, ##__VA_ARGS__)
 
 namespace WebKit {
 
@@ -218,7 +219,7 @@
     auto* networkSession = SessionTracker::networkSession(parameters.sessionID);
     if (!networkSession) {
         WTFLogAlways("Attempted to create a NetworkLoad with a session (id=%" PRIu64 ") that does not exist.", parameters.sessionID.sessionID());
-        RELEASE_LOG_IF_ALLOWED("startNetworkLoad: Attempted to create a NetworkLoad with a session that does not exist (pageID = %" PRIu64 ", frameID = %" PRIu64 ", resourceID = %" PRIu64 ", sessionID=%" PRIu64 ")", m_parameters.webPageID, m_parameters.webFrameID, m_parameters.identifier, parameters.sessionID.sessionID());
+        RELEASE_LOG_ERROR_IF_ALLOWED("startNetworkLoad: Attempted to create a NetworkLoad with a session that does not exist (pageID = %" PRIu64 ", frameID = %" PRIu64 ", resourceID = %" PRIu64 ", sessionID=%" PRIu64 ")", m_parameters.webPageID, m_parameters.webFrameID, m_parameters.identifier, parameters.sessionID.sessionID());
         didFailLoading(internalError(request.url()));
         return;
     }

Modified: trunk/Source/WebKit2/Platform/Logging.h (206753 => 206754)


--- trunk/Source/WebKit2/Platform/Logging.h	2016-10-03 21:52:37 UTC (rev 206753)
+++ trunk/Source/WebKit2/Platform/Logging.h	2016-10-03 22:18:24 UTC (rev 206754)
@@ -67,6 +67,7 @@
     M(StorageAPI) \
     M(TextInput) \
     M(ViewGestures) \
+    M(VirtualMemory) \
     M(VisibleRects) \
 
 WEBKIT2_LOG_CHANNELS(DECLARE_LOG_CHANNEL)

Modified: trunk/Source/WebKit2/Platform/mac/SharedMemoryMac.cpp (206753 => 206754)


--- trunk/Source/WebKit2/Platform/mac/SharedMemoryMac.cpp	2016-10-03 21:52:37 UTC (rev 206753)
+++ trunk/Source/WebKit2/Platform/mac/SharedMemoryMac.cpp	2016-10-03 22:18:24 UTC (rev 206754)
@@ -28,6 +28,7 @@
 
 #include "Decoder.h"
 #include "Encoder.h"
+#include "Logging.h"
 #include "MachPort.h"
 #include <WebCore/MachSendRight.h>
 #include <WebCore/MachVMSPI.h>
@@ -105,7 +106,7 @@
     mach_vm_address_t address;
     kern_return_t kr = mach_vm_allocate(mach_task_self(), &address, round_page(size), VM_FLAGS_ANYWHERE);
     if (kr != KERN_SUCCESS) {
-        LOG_ERROR("Failed to allocate mach_vm_allocate shared memory (%zu bytes). %s (%x)", size, mach_error_string(kr), kr);
+        RELEASE_LOG_ERROR(VirtualMemory, "%p - SharedMemory::allocate: Failed to allocate mach_vm_allocate shared memory (%zu bytes). %{public}s (%x)", nullptr, size, mach_error_string(kr), kr);
         return nullptr;
     }
 
@@ -138,7 +139,7 @@
     mach_port_t port;
     kern_return_t kr = mach_make_memory_entry_64(mach_task_self(), &memoryObjectSize, offset, machProtection(protection) | VM_PROT_IS_MASK | MAP_MEM_VM_SHARE, &port, parentEntry);
     if (kr != KERN_SUCCESS) {
-        LOG_ERROR("Failed to create a mach port for shared memory. %s (%x)", mach_error_string(kr), kr);
+        RELEASE_LOG_ERROR(VirtualMemory, "%p - SharedMemory::makeMemoryEntry: Failed to create a mach port for shared memory. %{public}s (%x)", nullptr, mach_error_string(kr), kr);
         return { };
     }
 
@@ -174,8 +175,10 @@
     vm_prot_t vmProtection = machProtection(protection);
     mach_vm_address_t mappedAddress = 0;
     kern_return_t kr = mach_vm_map(mach_task_self(), &mappedAddress, round_page(handle.m_size), 0, VM_FLAGS_ANYWHERE, handle.m_port, 0, false, vmProtection, vmProtection, VM_INHERIT_NONE);
-    if (kr != KERN_SUCCESS)
+    if (kr != KERN_SUCCESS) {
+        RELEASE_LOG_ERROR(VirtualMemory, "%p - SharedMemory::map: Failed to map shared memory. %{public}s (%x)", nullptr, mach_error_string(kr), kr);
         return nullptr;
+    }
 
     auto sharedMemory(adoptRef(*new SharedMemory));
     sharedMemory->m_size = handle.m_size;
@@ -190,12 +193,18 @@
 {
     if (m_data) {
         kern_return_t kr = mach_vm_deallocate(mach_task_self(), toVMAddress(m_data), round_page(m_size));
-        ASSERT_UNUSED(kr, kr == KERN_SUCCESS);
+        if (kr != KERN_SUCCESS) {
+            RELEASE_LOG_ERROR(VirtualMemory, "%p - SharedMemory::~SharedMemory: Failed to deallocate shared memory. %{public}s (%x)", this, mach_error_string(kr), kr);
+            ASSERT_NOT_REACHED();
+        }
     }
 
     if (m_port) {
         kern_return_t kr = mach_port_deallocate(mach_task_self(), m_port);
-        ASSERT_UNUSED(kr, kr == KERN_SUCCESS);
+        if (kr != KERN_SUCCESS) {
+            RELEASE_LOG_ERROR(VirtualMemory, "%p - SharedMemory::~SharedMemory: Failed to deallocate port. %{public}s (%x)", this, mach_error_string(kr), kr);
+            ASSERT_NOT_REACHED();
+        }
     }        
 }
     

Modified: trunk/Source/WebKit2/WebProcess/Network/WebLoaderStrategy.cpp (206753 => 206754)


--- trunk/Source/WebKit2/WebProcess/Network/WebLoaderStrategy.cpp	2016-10-03 21:52:37 UTC (rev 206753)
+++ trunk/Source/WebKit2/WebProcess/Network/WebLoaderStrategy.cpp	2016-10-03 22:18:24 UTC (rev 206754)
@@ -305,6 +305,8 @@
 
 void WebLoaderStrategy::networkProcessCrashed()
 {
+    RELEASE_LOG_ERROR(Network, "WebLoaderStrategy::networkProcessCrashed: failing all pending resource loaders");
+
     for (auto& loader : m_webResourceLoaders)
         scheduleInternallyFailedLoad(*loader.value->resourceLoader());
 
@@ -337,6 +339,7 @@
     HangDetectionDisabler hangDetectionDisabler;
 
     if (!WebProcess::singleton().networkConnection().connection().sendSync(Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad(loadParameters), Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad::Reply(error, response, data), 0)) {
+        RELEASE_LOG_ERROR_IF_ALLOWED(loadParameters.sessionID, "loadResourceSynchronously: failed sending synchronous network process message (pageID = %" PRIu64 ", frameID = %" PRIu64 ", resourceID = %" PRIu64 ")", loadParameters.webPageID, loadParameters.webFrameID, loadParameters.identifier);
         response = ResourceResponse();
         error = internalError(request.url());
     }

Modified: trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp (206753 => 206754)


--- trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp	2016-10-03 21:52:37 UTC (rev 206753)
+++ trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp	2016-10-03 22:18:24 UTC (rev 206754)
@@ -199,6 +199,7 @@
 
     if (!buffer) {
         LOG_ERROR("Unable to create buffer from ShareableResource sent from the network process.");
+        RELEASE_LOG_IF_ALLOWED("didReceiveResource: Unable to create SharedBuffer (pageID = %" PRIu64 ", frameID = %" PRIu64 ", resourceID = %" PRIu64 ")", m_trackingParameters.pageID, m_trackingParameters.frameID, m_trackingParameters.resourceID);
         m_coreLoader->didFail(internalError(m_coreLoader->request().url()));
         return;
     }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to