[Webkit-unassigned] [Bug 152480] New: ASSERT(m_downloads.isEmpty()) fails in DownloadProxyMap::~DownloadProxyMap()

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Dec 21 10:01:57 PST 2015


https://bugs.webkit.org/show_bug.cgi?id=152480

            Bug ID: 152480
           Summary: ASSERT(m_downloads.isEmpty()) fails in
                    DownloadProxyMap::~DownloadProxyMap()
    Classification: Unclassified
           Product: WebKit
           Version: WebKit Nightly Build
          Hardware: Macintosh
                OS: Mac OS X 10.11
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: WebKit2
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: dbates at webkit.org
                CC: achristensen at apple.com, andersca at apple.com,
                    sam at webkit.org

When running TestWebKitAPI with a debug build of WebKit in Xcode, TestWebKitAPI crashes after running test ContentFiltering.BlockDownloadAfterWillSendRequest because the assertion ASSERT(m_downloads.isEmpty()) fails in DownloadProxyMap::~DownloadProxyMap(). For some reason, I have not had success reproducing this issue when running TestWebKitAPI tests using the command line script run-api-tests.

I am using a debug build of WebKit r194240.

You can reproduce this crash by performing the following:

1. Open WebKit.xcworkspace.
2. Ensure scheme is All Tools/My Mac (64-bit).
3. Choose Product > Scheme > Edit Scheme from the menu bar.
4. In the scheme editor, click Run in the sidebar. In the Info pane, choose executable TestWebKitAPI. Then switch to the Arguments pane and pass the following argument on launch:
--gtest_filter=ContentFiltering.AllowDownloadAfterWillSendRequest:ContentFiltering.BlockDownloadAfterWillSendRequest
5. Click the Close button to close the scheme editor.
6. Run TestWebKitAPI (if you have an existing build then choose Product > Perform Action > Run Without Building).

Then you will break into a debug session when the assertion fails with the following debugger output:

ASSERTION FAILED: m_downloads.isEmpty()
/Volumes/.../Source/WebKit2/UIProcess/Downloads/DownloadProxyMap.cpp(44) : WebKit::DownloadProxyMap::~DownloadProxyMap()
1   0x10188d9b0 WTFCrash
2   0x1037c66a1 WebKit::DownloadProxyMap::~DownloadProxyMap()
3   0x1037c66d5 WebKit::DownloadProxyMap::~DownloadProxyMap()
4   0x103987172 WebKit::NetworkProcessProxy::~NetworkProcessProxy()
5   0x103987215 WebKit::NetworkProcessProxy::~NetworkProcessProxy()
6   0x103987299 WebKit::NetworkProcessProxy::~NetworkProcessProxy()
7   0x103a67843 WTF::ThreadSafeRefCounted<WebKit::ChildProcessProxy>::deref()
8   0x104019aca void WTF::derefIfNotNull<WebKit::NetworkProcessProxy>(WebKit::NetworkProcessProxy*)
9   0x104019a89 WTF::RefPtr<WebKit::NetworkProcessProxy>::~RefPtr()
10  0x10400db75 WTF::RefPtr<WebKit::NetworkProcessProxy>::~RefPtr()
11  0x1040054fe WebKit::WebProcessPool::~WebProcessPool()
12  0x104005945 WebKit::WebProcessPool::~WebProcessPool()
13  0x10419d53e -[WKProcessPool dealloc]
14  0x10366c81d API::Object::deref()
15  0x103670134 void WTF::derefIfNotNull<WebKit::WebProcessPool>(WebKit::WebProcessPool*)
16  0x1037c5957 WTF::RefPtr<WebKit::WebProcessPool>::operator=(std::nullptr_t)
17  0x1037c4a82 WebKit::DownloadProxy::invalidate()
18  0x1037c68f2 WebKit::DownloadProxyMap::downloadFinished(WebKit::DownloadProxy*)
19  0x1037c50d4 WebKit::DownloadProxy::didFinish()
20  0x1037cb8e3 void IPC::callMemberFunctionImpl<WebKit::DownloadProxy, void (WebKit::DownloadProxy::*)(), std::__1::tuple<> >(WebKit::DownloadProxy*, void (WebKit::DownloadProxy::*)(), std::__1::tuple<>&&, std::index_sequence<>)
21  0x1037cb858 void IPC::callMemberFunction<WebKit::DownloadProxy, void (WebKit::DownloadProxy::*)(), std::__1::tuple<>, std::make_index_sequence<0ul> >(std::__1::tuple<>&&, WebKit::DownloadProxy*, void (WebKit::DownloadProxy::*)())
22  0x1037ca75a void IPC::handleMessage<Messages::DownloadProxy::DidFinish, WebKit::DownloadProxy, void (WebKit::DownloadProxy::*)()>(IPC::MessageDecoder&, WebKit::DownloadProxy*, void (WebKit::DownloadProxy::*)())
23  0x1037c9d02 WebKit::DownloadProxy::didReceiveMessage(IPC::Connection&, IPC::MessageDecoder&)
24  0x1037c9e77 non-virtual thunk to WebKit::DownloadProxy::didReceiveMessage(IPC::Connection&, IPC::MessageDecoder&)
25  0x10384bfcf IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&, IPC::MessageDecoder&)
26  0x1036cdc87 WebKit::ChildProcessProxy::dispatchMessage(IPC::Connection&, IPC::MessageDecoder&)
27  0x10398827a WebKit::NetworkProcessProxy::didReceiveMessage(IPC::Connection&, IPC::MessageDecoder&)
28  0x103988307 non-virtual thunk to WebKit::NetworkProcessProxy::didReceiveMessage(IPC::Connection&, IPC::MessageDecoder&)
29  0x1036dbe13 IPC::Connection::dispatchMessage(IPC::MessageDecoder&)
30  0x1036d2d41 IPC::Connection::dispatchMessage(std::__1::unique_ptr<IPC::MessageDecoder, std::__1::default_delete<IPC::MessageDecoder> >)
31  0x1036dc40f IPC::Connection::dispatchOneMessage()

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-unassigned/attachments/20151221/750625b5/attachment-0001.html>


More information about the webkit-unassigned mailing list