https://cs.chromium.org/chromium/src/extensions/browser/extension_function.cc?type=cs&q=extension_function.cc+package:%5Echromium$&l=509
[20796:775:0526/180456.677684:FATAL:extension_function.cc(510)] Check failed: !browser_client || browser_client->IsShuttingDown() || did_respond() || ignore_all_did_respond_for_testing_do_not_use. debugger.sendCommand
0 libbase.dylib 0x000000010b111aae base::debug::StackTrace::StackTrace(unsigned long) + 174
1 libbase.dylib 0x000000010b111b4d base::debug::StackTrace::StackTrace(unsigned long) + 29
2 libbase.dylib 0x000000010b10fdcc base::debug::StackTrace::StackTrace() + 28
3 libbase.dylib 0x000000010b1afdff logging::LogMessage::~LogMessage() + 479
4 libbase.dylib 0x000000010b1ad775 logging::LogMessage::~LogMessage() + 21
5 libchrome_dll.dylib 0x000000010d10dd89 UIThreadExtensionFunction::~UIThreadExtensionFunction() + 457
6 libchrome_dll.dylib 0x000000011275dadd ChromeUIThreadExtensionFunction::~ChromeUIThreadExtensionFunction() + 269
7 libchrome_dll.dylib 0x000000011275db65 ChromeAsyncExtensionFunction::~ChromeAsyncExtensionFunction() + 21
8 libchrome_dll.dylib 0x00000001122c2b21 extensions::DebuggerFunction::~DebuggerFunction() + 81
9 libchrome_dll.dylib 0x00000001122c54a5 extensions::DebuggerSendCommandFunction::~DebuggerSendCommandFunction() + 21
10 libchrome_dll.dylib 0x00000001122c54c5 extensions::DebuggerSendCommandFunction::~DebuggerSendCommandFunction() + 21
11 libchrome_dll.dylib 0x00000001122c54e9 extensions::DebuggerSendCommandFunction::~DebuggerSendCommandFunction() + 25
12 libchrome_dll.dylib 0x000000010d10e1ef void content::BrowserThread::DeleteOnThread<(content::BrowserThread::ID)0>::Destruct<UIThreadExtensionFunction>(UIThreadExtensionFunction const*) + 79
13 libchrome_dll.dylib 0x000000010d10e195 UIThreadExtensionFunction::Destruct() const + 21
14 libchrome_dll.dylib 0x000000010d108416 ExtensionFunctionDeleteTraits::Destruct(ExtensionFunction const*) + 22
15 libchrome_dll.dylib 0x000000010d11302c base::RefCountedThreadSafe<ExtensionFunction, ExtensionFunctionDeleteTraits>::Release() const + 60
16 libchrome_dll.dylib 0x00000001122d0469 scoped_refptr<extensions::DebuggerSendCommandFunction>::Release(extensions::DebuggerSendCommandFunction*) + 25
17 libchrome_dll.dylib 0x00000001122d044a scoped_refptr<extensions::DebuggerSendCommandFunction>::~scoped_refptr() + 42
18 libchrome_dll.dylib 0x00000001122d0415 scoped_refptr<extensions::DebuggerSendCommandFunction>::~scoped_refptr() + 21
19 libchrome_dll.dylib 0x00000001122d03f9 std::__1::pair<int const, scoped_refptr<extensions::DebuggerSendCommandFunction> >::~pair() + 25
20 libchrome_dll.dylib 0x00000001122d03d5 std::__1::pair<int const, scoped_refptr<extensions::DebuggerSendCommandFunction> >::~pair() + 21
21 libchrome_dll.dylib 0x00000001122d0345 std::__1::__tree<std::__1::__value_type<int, scoped_refptr<extensions::DebuggerSendCommandFunction> >, std::__1::__map_value_compare<int, std::__1::__value_type<int, scoped_refptr<extensions::DebuggerSendCommandFunction> >, std::__1::less<int>, true>, std::__1::allocator<std::__1::__value_type<int, scoped_refptr<extensions::DebuggerSendCommandFunction> > > >::destroy(std::__1::__tree_node<std::__1::__value_type<int, scoped_refptr<extensions::DebuggerSendCommandFunction> >, void*>*) + 213
22 libchrome_dll.dylib 0x00000001122d02d8 std::__1::__tree<std::__1::__value_type<int, scoped_refptr<extensions::DebuggerSendCommandFunction> >, std::__1::__map_value_compare<int, std::__1::__value_type<int, scoped_refptr<extensions::DebuggerSendCommandFunction> >, std::__1::less<int>, true>, std::__1::allocator<std::__1::__value_type<int, scoped_refptr<extensions::DebuggerSendCommandFunction> > > >::destroy(std::__1::__tree_node<std::__1::__value_type<int, scoped_refptr<extensions::DebuggerSendCommandFunction> >, void*>*) + 104
23 libchrome_dll.dylib 0x00000001122d0267 std::__1::__tree<std::__1::__value_type<int, scoped_refptr<extensions::DebuggerSendCommandFunction> >, std::__1::__map_value_compare<int, std::__1::__value_type<int, scoped_refptr<extensions::DebuggerSendCommandFunction> >, std::__1::less<int>, true>, std::__1::allocator<std::__1::__value_type<int, scoped_refptr<extensions::DebuggerSendCommandFunction> > > >::~__tree() + 87
24 libchrome_dll.dylib 0x00000001122d0205 std::__1::__tree<std::__1::__value_type<int, scoped_refptr<extensions::DebuggerSendCommandFunction> >, std::__1::__map_value_compare<int, std::__1::__value_type<int, scoped_refptr<extensions::DebuggerSendCommandFunction> >, std::__1::less<int>, true>, std::__1::allocator<std::__1::__value_type<int, scoped_refptr<extensions::DebuggerSendCommandFunction> > > >::~__tree() + 21
25 libchrome_dll.dylib 0x00000001122d01e5 std::__1::map<int, scoped_refptr<extensions::DebuggerSendCommandFunction>, std::__1::less<int>, std::__1::allocator<std::__1::pair<int const, scoped_refptr<extensions::DebuggerSendCommandFunction> > > >::~map() + 21
26 libchrome_dll.dylib 0x00000001122c0345 std::__1::map<int, scoped_refptr<extensions::DebuggerSendCommandFunction>, std::__1::less<int>, std::__1::allocator<std::__1::pair<int const, scoped_refptr<extensions::DebuggerSendCommandFunction> > > >::~map() + 21
27 libchrome_dll.dylib 0x00000001122c01cd extensions::ExtensionDevToolsClientHost::~ExtensionDevToolsClientHost() + 189
28 libchrome_dll.dylib 0x00000001122c0365 extensions::ExtensionDevToolsClientHost::~ExtensionDevToolsClientHost() + 21
29 libchrome_dll.dylib 0x00000001122c03c9 extensions::ExtensionDevToolsClientHost::~ExtensionDevToolsClientHost() + 25
30 libchrome_dll.dylib 0x00000001122c0b7c extensions::ExtensionDevToolsClientHost::Close() + 92
31 libchrome_dll.dylib 0x00000001122c52c3 extensions::DebuggerDetachFunction::RunAsync() + 419
32 libchrome_dll.dylib 0x000000011275dbdb ChromeAsyncExtensionFunction::Run() + 75
33 libchrome_dll.dylib 0x000000010d10cbb4 ExtensionFunction::RunWithValidation() + 1124
34 libchrome_dll.dylib 0x000000010d116ca0 extensions::ExtensionFunctionDispatcher::DispatchWithCallbackInternal(ExtensionHostMsg_Request_Params const&, content::RenderFrameHost*, int, base::Callback<void (ExtensionFunction::ResponseType, base::ListValue const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, extensions::functions::HistogramValue), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&) + 2448
35 libchrome_dll.dylib 0x000000010d1157c2 extensions::ExtensionFunctionDispatcher::Dispatch(ExtensionHostMsg_Request_Params const&, content::RenderFrameHost*, int) + 2002
36 libchrome_dll.dylib 0x000000010d1ad94c extensions::ExtensionWebContentsObserver::OnRequest(content::RenderFrameHost*, ExtensionHostMsg_Request_Params const&) + 92
37 libchrome_dll.dylib 0x000000010d1ae6ea void IPC::DispatchToMethodImpl<extensions::ExtensionWebContentsObserver, void (extensions::ExtensionWebContentsObserver::*)(content::RenderFrameHost*, ExtensionHostMsg_Request_Params const&), content::RenderFrameHost, std::__1::tuple<ExtensionHostMsg_Request_Params>, 0ul>(extensions::ExtensionWebContentsObserver*, void (extensions::ExtensionWebContentsObserver::*)(content::RenderFrameHost*, ExtensionHostMsg_Request_Params const&), content::RenderFrameHost*, std::__1::tuple<ExtensionHostMsg_Request_Params> const&, base::IndexSequence<0ul>) + 154
38 libchrome_dll.dylib 0x000000010d1ae550 std::__1::enable_if<(sizeof...(ExtensionHostMsg_Request_Params const&)) == (sizeof...(ExtensionHostMsg_Request_Params)), void>::type IPC::DispatchToMethod<extensions::ExtensionWebContentsObserver, content::RenderFrameHost, ExtensionHostMsg_Request_Params const&, ExtensionHostMsg_Request_Params>(extensions::ExtensionWebContentsObserver*, void (extensions::ExtensionWebContentsObserver::*)(content::RenderFrameHost*, ExtensionHostMsg_Request_Params const&), content::RenderFrameHost*, std::__1::tuple<ExtensionHostMsg_Request_Params> const&) + 96
39 libchrome_dll.dylib 0x000000010d1ad867 bool IPC::MessageT<ExtensionHostMsg_Request_Meta, std::__1::tuple<ExtensionHostMsg_Request_Params>, void>::Dispatch<extensions::ExtensionWebContentsObserver, extensions::ExtensionWebContentsObserver, content::RenderFrameHost, void (extensions::ExtensionWebContentsObserver::*)(content::RenderFrameHost*, ExtensionHostMsg_Request_Params const&)>(IPC::Message const*, extensions::ExtensionWebContentsObserver*, extensions::ExtensionWebContentsObserver*, content::RenderFrameHost*, void (extensions::ExtensionWebContentsObserver::*)(content::RenderFrameHost*, ExtensionHostMsg_Request_Params const&)) + 551
40 libchrome_dll.dylib 0x000000010d1ad5cb extensions::ExtensionWebContentsObserver::OnMessageReceived(IPC::Message const&, content::RenderFrameHost*) + 331
41 libchrome_dll.dylib 0x000000011275faa3 extensions::ChromeExtensionWebContentsObserver::OnMessageReceived(IPC::Message const&, content::RenderFrameHost*) + 99
42 libcontent.dylib 0x00000001201bc65e content::WebContentsImpl::OnMessageReceived(content::RenderFrameHostImpl*, IPC::Message const&) + 238
43 libcontent.dylib 0x000000011f4e302e content::RenderFrameHostImpl::OnMessageReceived(IPC::Message const&) + 494
44 libcontent.dylib 0x000000011fce3d6a content::RenderProcessHostImpl::OnMessageReceived(IPC::Message const&) + 2058
45 libipc.dylib 0x000000010bbcca88 IPC::ChannelProxy::Context::OnDispatchMessage(IPC::Message const&) + 152
46 libipc.dylib 0x000000010bbd3ff7 void base::internal::FunctorTraits<void (IPC::ChannelProxy::Context::*)(IPC::Message const&), void>::Invoke<scoped_refptr<IPC::ChannelProxy::Context> const&, IPC::Message const&>(void (IPC::ChannelProxy::Context::*)(IPC::Message const&), scoped_refptr<IPC::ChannelProxy::Context> const&&&, IPC::Message const&&&) + 151
47 libipc.dylib 0x000000010bbd3eef void base::internal::InvokeHelper<false, void>::MakeItSo<void (IPC::ChannelProxy::Context::* const&)(IPC::Message const&), scoped_refptr<IPC::ChannelProxy::Context> const&, IPC::Message const&>(void (IPC::ChannelProxy::Context::* const&&&)(IPC::Message const&), scoped_refptr<IPC::ChannelProxy::Context> const&&&, IPC::Message const&&&) + 95
48 libipc.dylib 0x000000010bbd3e7d void base::internal::Invoker<base::internal::BindState<void (IPC::ChannelProxy::Context::*)(IPC::Message const&), scoped_refptr<IPC::ChannelProxy::Context>, IPC::Message>, void ()>::RunImpl<void (IPC::ChannelProxy::Context::* const&)(IPC::Message const&), std::__1::tuple<scoped_refptr<IPC::ChannelProxy::Context>, IPC::Message> const&, 0ul, 1ul>(void (IPC::ChannelProxy::Context::* const&&&)(IPC::Message const&), std::__1::tuple<scoped_refptr<IPC::ChannelProxy::Context>, IPC::Message> const&&&, base::IndexSequence<0ul, 1ul>) + 125
49 libipc.dylib 0x000000010bbd3d8c base::internal::Invoker<base::internal::BindState<void (IPC::ChannelProxy::Context::*)(IPC::Message const&), scoped_refptr<IPC::ChannelProxy::Context>, IPC::Message>, void ()>::Run(base::internal::BindStateBase*) + 44
50 libbase.dylib 0x000000010b0ade4f base::Callback<void (), (base::internal::CopyMode)0, (base::internal::RepeatMode)0>::Run() + 95
51 libbase.dylib 0x000000010b113ff0 base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) + 1024
52 libbase.dylib 0x000000010b20c3fe base::MessageLoop::RunTask(base::PendingTask*) + 894
53 libbase.dylib 0x000000010b20c957 base::MessageLoop::DeferOrRunPendingTask(base::PendingTask) + 71
54 libbase.dylib 0x000000010b20d0b9 base::MessageLoop::DoWork() + 681
55 libbase.dylib 0x000000010b21d288 base::MessagePumpCFRunLoopBase::RunWork() + 104
56 libbase.dylib 0x000000010b21d20c ___ZN4base24MessagePumpCFRunLoopBase13RunWorkSourceEPv_block_invoke + 28
57 libbase.dylib 0x000000010b1b83aa base::mac::CallWithEHFrame(void () block_pointer) + 10
58 libbase.dylib 0x000000010b21c705 base::MessagePumpCFRunLoopBase::RunWorkSource(void*) + 101
59 CoreFoundation 0x00007fffc81233b1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
60 CoreFoundation 0x00007fffc810463c __CFRunLoopDoSources0 + 556
61 CoreFoundation 0x00007fffc8103b26 __CFRunLoopRun + 934
Repro steps:
1) Launch debug build of Chromium with --enable-heap-profiling=native on macOS.
2) Add the extension TraceOnTap
https://cs.chromium.org/chromium/src/third_party/catapult/experimental/trace_on_tap/README.md?q=TraceOnTap&dr=C&l=1
3) Hit the trace button.
4) Is (3) succeeds, repeat (3). Try giving Chrome an unclean shutdown and then running (3) again.
Comment 1 by benhenry@google.com
, Jan 10