New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 663046 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
please use my google.com address
Closed: Nov 2016
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 3
Type: Bug



Sign in to add a comment

Check failure in storage/indexeddb/pending-version-change-stuck.html

Project Member Reported by reillyg@chromium.org, Nov 7 2016

Issue description

The Win7 dbg bot is hitting this renderer crash:

10:46:40.226 3028 worker/5 storage/indexeddb/pending-version-change-stuck.html crashed, (stderr lines):
10:46:40.226 3028   [896:4744:1107/104637:5927741:FATAL:ipc_mojo_bootstrap.cc(489)] Check failed: proxy_task_runner_->BelongsToCurrentThread(). 
10:46:40.226 3028   Backtrace:
10:46:40.226 3028   	base::debug::StackTrace::StackTrace [0x015AC0C7+23]
10:46:40.226 3028   	logging::LogMessage::~LogMessage [0x015FDE2B+59]
10:46:40.226 3028   	base::internal::Invoker<base::internal::BindState<void (__thiscall IPC::`anonymous namespace'::ChannelAssociatedGroupController::Endpoint::*)(unsigned int),base::internal::UnretainedWrapper<IPC::`anonymous namespace'::ChannelAssociatedGroupController::End [0x01B97E4A+842]
10:46:40.226 3028   	mojo::SyncHandleWatcher::`scalar deleting destructor' [0x01B93476+1654]
10:46:40.226 3028   	mojo::internal::Serializer<mojo::pipe_control::RunOrClosePipeMessageParamsDataView,mojo::StructPtr<mojo::pipe_control::RunOrClosePipeMessageParams> >::PrepareToSerialize [0x0127EA56+326]
10:46:40.226 3028   	mojo::PipeControlMessageProxy::NotifyPeerEndpointClosed [0x0127E6E8+280]
10:46:40.226 3028   	mojo::AssociatedInterfaceRequest<IPC::mojom::Channel>::Bind [0x01B94FEF+1743]
10:46:40.226 3028   	mojo::ScopedInterfaceEndpointHandle::reset [0x01288ED9+73]
10:46:40.226 3028   	mojo::ScopedInterfaceEndpointHandle::~ScopedInterfaceEndpointHandle [0x01288D9F+15]
10:46:40.226 3028   	mojo::AssociatedInterfacePtrInfo<indexed_db::mojom::Database>::~AssociatedInterfacePtrInfo<indexed_db::mojom::Database> [0x1054E850+16]
10:46:40.226 3028   	base::internal::PassedWrapper<mojo::AssociatedInterfacePtrInfo<indexed_db::mojom::Database> >::~PassedWrapper<mojo::AssociatedInterfacePtrInfo<indexed_db::mojom::Database> > [0x1054E992+18]
10:46:40.226 3028   	std::_Tuple_val<base::internal::PassedWrapper<mojo::AssociatedInterfacePtrInfo<indexed_db::mojom::Database> > >::~_Tuple_val<base::internal::PassedWrapper<mojo::AssociatedInterfacePtrInfo<indexed_db::mojom::Database> > > [0x1054EECF+15]
10:46:40.226 3028   	std::tuple<base::internal::PassedWrapper<mojo::AssociatedInterfacePtrInfo<indexed_db::mojom::Database> >,__int64,enum blink::WebIDBDataLoss,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,content::IndexedDBDatabaseMetadata>::~tuple<ba [0x1054F282+18]
10:46:40.226 3028   	std::tuple<base::internal::UnretainedWrapper<content::IndexedDBCallbacksImpl::InternalState>,base::internal::PassedWrapper<mojo::AssociatedInterfacePtrInfo<indexed_db::mojom::Database> >,__int64,enum blink::WebIDBDataLoss,std::basic_string<char,std::char_ [0x1054F36F+15]
10:46:40.226 3028   	base::internal::BindState<void (__thiscall content::IndexedDBCallbacksImpl::InternalState::*)(mojo::AssociatedInterfacePtrInfo<indexed_db::mojom::Database>,__int64,enum blink::WebIDBDataLoss,std::basic_string<char,std::char_traits<char>,std::allocator<cha [0x1054E912+18]
10:46:40.226 3028   	base::internal::BindState<void (__thiscall content::IndexedDBCallbacksImpl::InternalState::*)(mojo::AssociatedInterfacePtrInfo<indexed_db::mojom::Database>,__int64,enum blink::WebIDBDataLoss,std::basic_string<char,std::char_traits<char>,std::allocator<cha [0x1055484F+15]
10:46:40.226 3028   	base::internal::BindState<void (__thiscall content::IndexedDBCallbacksImpl::InternalState::*)(mojo::AssociatedInterfacePtrInfo<indexed_db::mojom::Database>,__int64,enum blink::WebIDBDataLoss,std::basic_string<char,std::char_traits<char>,std::allocator<cha [0x10555A72+34]
10:46:40.226 3028   	base::internal::BindStateBase::Release [0x01577C39+41]
10:46:40.226 3028   	scoped_refptr<base::internal::BindStateBase>::Release [0x01577C0B+11]
10:46:40.226 3028   	scoped_refptr<base::internal::BindStateBase>::~scoped_refptr<base::internal::BindStateBase> [0x0157786A+26]
10:46:40.226 3028   	base::internal::CallbackBase<0>::~CallbackBase<0> [0x0157783F+15]
10:46:40.226 3028   	base::Callback<void __cdecl(void),0,0>::~Callback<void __cdecl(void),0,0> [0x015AF76F+15]
10:46:40.227 3028   	base::PendingTask::~PendingTask [0x016B47F2+18]
10:46:40.227 3028   	blink::scheduler::internal::TaskQueueImpl::Task::~Task [0x0B5C6730+16]
10:46:40.227 3028   	blink::scheduler::internal::TaskQueueImpl::Task::`scalar deleting destructor' [0x0B5CE61F+15]
10:46:40.227 3028   	std::allocator<blink::scheduler::internal::TaskQueueImpl::Task>::destroy<blink::scheduler::internal::TaskQueueImpl::Task> [0x0B5CB7D1+17]
10:46:40.227 3028   	std::allocator_traits<std::allocator<blink::scheduler::internal::TaskQueueImpl::Task> >::destroy<blink::scheduler::internal::TaskQueueImpl::Task> [0x0B5CB7EF+15]
10:46:40.227 3028   	std::_Wrap_alloc<std::allocator<blink::scheduler::internal::TaskQueueImpl::Task> >::destroy<blink::scheduler::internal::TaskQueueImpl::Task> [0x0B5CB7A4+20]
10:46:40.227 3028   	std::deque<blink::scheduler::internal::TaskQueueImpl::Task,std::allocator<blink::scheduler::internal::TaskQueueImpl::Task> >::pop_back [0x0B5D4886+166]
10:46:40.227 3028   	std::deque<blink::scheduler::internal::TaskQueueImpl::Task,std::allocator<blink::scheduler::internal::TaskQueueImpl::Task> >::_Tidy [0x0B5D3541+49]
10:46:40.227 3028   	std::deque<blink::scheduler::internal::TaskQueueImpl::Task,std::allocator<blink::scheduler::internal::TaskQueueImpl::Task> >::~deque<blink::scheduler::internal::TaskQueueImpl::Task,std::allocator<blink::scheduler::internal::TaskQueueImpl::Task> > [0x0B5CD4DF+15]
10:46:40.227 3028   	std::queue<blink::scheduler::internal::TaskQueueImpl::Task,std::deque<blink::scheduler::internal::TaskQueueImpl::Task,std::allocator<blink::scheduler::internal::TaskQueueImpl::Task> > >::~queue<blink::scheduler::internal::TaskQueueImpl::Task,std::deque<bl [0x0B5CD52F+15]
10:46:40.227 3028   	blink::scheduler::internal::WorkQueue::~WorkQueue [0x0B5F9674+260]
10:46:40.227 3028   	blink::scheduler::internal::WorkQueue::`scalar deleting destructor' [0x0B5CE69F+15]
10:46:40.227 3028   	std::default_delete<blink::scheduler::internal::WorkQueue>::operator() [0x0B5CE495+37]
10:46:40.227 3028   	std::unique_ptr<blink::scheduler::internal::WorkQueue,std::default_delete<blink::scheduler::internal::WorkQueue> >::reset [0x0B5D50DA+58]
10:46:40.227 3028   	blink::scheduler::internal::TaskQueueImpl::UnregisterTaskQueue [0x0B5D18B3+259]
10:46:40.227 3028   	blink::scheduler::TaskQueueManager::~TaskQueueManager [0x0B5DE3F1+241]
10:46:40.227 3028   	blink::scheduler::TaskQueueManager::`vector deleting destructor' [0x0B5E0390+80]
10:46:40.227 3028   	std::default_delete<blink::scheduler::TaskQueueManager>::operator() [0x0B6066D9+41]
10:46:40.227 3028   	std::unique_ptr<blink::scheduler::TaskQueueManager,std::default_delete<blink::scheduler::TaskQueueManager> >::reset [0x0B60738A+58]
10:46:40.227 3028   	blink::scheduler::SchedulerHelper::Shutdown [0x0B607104+68]
10:46:40.227 3028   	blink::scheduler::WorkerSchedulerImpl::Shutdown [0x0B614053+179]
10:46:40.227 3028   	blink::scheduler::WebSchedulerImpl::shutdown [0x0B60A71A+26]
10:46:40.227 3028   	blink::WebThreadSupportingGC::shutdown [0x0B230660+80]
10:46:40.227 3028   	blink::WorkerBackingThread::shutdown [0x1659C2A6+102]
10:46:40.227 3028   	blink::WorkerThread::performShutdownOnWorkerThread [0x165C0FF7+519]
10:46:40.227 3028   	??$Invoke@PAVWorkerThread@blink@@$$V@?$FunctorTraits@P8WorkerThread@blink@@AEXXZX@internal@base@@SAXP8WorkerThread@blink@@AEXXZ$$QAPAV34@@Z [0x165B83A2+18]
10:46:40.227 3028   	base::internal::InvokeHelper<0,void>::MakeItSo<void (__thiscall blink::WorkerThread::*const &)(void),blink::WorkerThread *> [0x165B8914+36]
10:46:40.227 3028   	base::internal::Invoker<base::internal::BindState<void (__thiscall blink::WorkerThread::*)(void),WTF::UnretainedWrapper<blink::WorkerThread,0> >,void __cdecl(void)>::RunImpl<void (__thiscall blink::WorkerThread::*const &)(void),std::tuple<WTF::UnretainedW [0x165B8BAB+59]
10:46:40.227 3028   	base::internal::Invoker<base::internal::BindState<void (__thiscall blink::WorkerThread::*)(void),WTF::UnretainedWrapper<blink::WorkerThread,0> >,void __cdecl(void)>::Run [0x165BCE84+36]
10:46:40.227 3028   	base::internal::RunMixin<base::Callback<void __cdecl(void),0,0> >::Run [0x015B1E64+68]
10:46:40.227 3028   	base::debug::TaskAnnotator::RunTask [0x015B1FFF+367]
10:46:40.227 3028   	blink::scheduler::TaskQueueManager::ProcessTaskFromWorkQueue [0x0B5E2E24+1508]
10:46:40.228 3028   	blink::scheduler::TaskQueueManager::DoWork [0x0B5E13B1+737]
10:46:40.228 3028   	base::internal::FunctorTraits<void (__thiscall blink::scheduler::TaskQueueManager::*)(base::TimeTicks,bool),void>::Invoke<base::WeakPtr<blink::scheduler::TaskQueueManager> const &,base::TimeTicks const &,bool const &> [0x0B5D6DCD+61]
10:46:40.228 3028   	base::internal::InvokeHelper<1,void>::MakeItSo<void (__thiscall blink::scheduler::TaskQueueManager::*const &)(base::TimeTicks,bool),base::WeakPtr<blink::scheduler::TaskQueueManager> const &,base::TimeTicks const &,bool const &> [0x0B5D6EE3+83]
10:46:40.228 3028   	base::internal::Invoker<base::internal::BindState<void (__thiscall blink::scheduler::TaskQueueManager::*)(base::TimeTicks,bool),base::WeakPtr<blink::scheduler::TaskQueueManager>,base::TimeTicks,bool>,void __cdecl(void)>::RunImpl<void (__thiscall blink::sc [0x0B5D6FD2+114]
10:46:40.228 3028   	base::internal::Invoker<base::internal::BindState<void (__thiscall blink::scheduler::TaskQueueManager::*)(base::TimeTicks,bool),base::WeakPtr<blink::scheduler::TaskQueueManager>,base::TimeTicks,bool>,void __cdecl(void)>::Run [0x0B5E38B4+36]
10:46:40.228 3028   	base::internal::RunMixin<base::Callback<void __cdecl(void),0,0> >::Run [0x015B1E64+68]
10:46:40.228 3028   	base::debug::TaskAnnotator::RunTask [0x015B1FFF+367]
10:46:40.228 3028   	base::MessageLoop::RunTask [0x0162E8E4+660]
10:46:40.228 3028   
10:46:40.228 3028   Backtrace:
10:46:40.228 3028   	base::debug::BreakDebugger [0x015AA5C7+23]
10:46:40.228 3028   	logging::LogMessage::~LogMessage [0x015FE0AD+701]
10:46:40.228 3028   	base::internal::Invoker<base::internal::BindState<void (__thiscall IPC::`anonymous namespace'::ChannelAssociatedGroupController::Endpoint::*)(unsigned int),base::internal::UnretainedWrapper<IPC::`anonymous namespace'::ChannelAssociatedGroupController::End [0x01B97E4A+842]
10:46:40.228 3028   	mojo::SyncHandleWatcher::`scalar deleting destructor' [0x01B93476+1654]
10:46:40.228 3028   	mojo::internal::Serializer<mojo::pipe_control::RunOrClosePipeMessageParamsDataView,mojo::StructPtr<mojo::pipe_control::RunOrClosePipeMessageParams> >::PrepareToSerialize [0x0127EA56+326]
10:46:40.228 3028   	mojo::PipeControlMessageProxy::NotifyPeerEndpointClosed [0x0127E6E8+280]
10:46:40.228 3028   	mojo::AssociatedInterfaceRequest<IPC::mojom::Channel>::Bind [0x01B94FEF+1743]
10:46:40.228 3028   	mojo::ScopedInterfaceEndpointHandle::reset [0x01288ED9+73]
10:46:40.228 3028   	mojo::ScopedInterfaceEndpointHandle::~ScopedInterfaceEndpointHandle [0x01288D9F+15]
10:46:40.228 3028   	mojo::AssociatedInterfacePtrInfo<indexed_db::mojom::Database>::~AssociatedInterfacePtrInfo<indexed_db::mojom::Database> [0x1054E850+16]
10:46:40.228 3028   	base::internal::PassedWrapper<mojo::AssociatedInterfacePtrInfo<indexed_db::mojom::Database> >::~PassedWrapper<mojo::AssociatedInterfacePtrInfo<indexed_db::mojom::Database> > [0x1054E992+18]
10:46:40.228 3028   	std::_Tuple_val<base::internal::PassedWrapper<mojo::AssociatedInterfacePtrInfo<indexed_db::mojom::Database> > >::~_Tuple_val<base::internal::PassedWrapper<mojo::AssociatedInterfacePtrInfo<indexed_db::mojom::Database> > > [0x1054EECF+15]
10:46:40.228 3028   	std::tuple<base::internal::PassedWrapper<mojo::AssociatedInterfacePtrInfo<indexed_db::mojom::Database> >,__int64,enum blink::WebIDBDataLoss,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,content::IndexedDBDatabaseMetadata>::~tuple<ba [0x1054F282+18]
10:46:40.228 3028   	std::tuple<base::internal::UnretainedWrapper<content::IndexedDBCallbacksImpl::InternalState>,base::internal::PassedWrapper<mojo::AssociatedInterfacePtrInfo<indexed_db::mojom::Database> >,__int64,enum blink::WebIDBDataLoss,std::basic_string<char,std::char_ [0x1054F36F+15]
10:46:40.228 3028   	base::internal::BindState<void (__thiscall content::IndexedDBCallbacksImpl::InternalState::*)(mojo::AssociatedInterfacePtrInfo<indexed_db::mojom::Database>,__int64,enum blink::WebIDBDataLoss,std::basic_string<char,std::char_traits<char>,std::allocator<cha [0x1054E912+18]
10:46:40.228 3028   	base::internal::BindState<void (__thiscall content::IndexedDBCallbacksImpl::InternalState::*)(mojo::AssociatedInterfacePtrInfo<indexed_db::mojom::Database>,__int64,enum blink::WebIDBDataLoss,std::basic_string<char,std::char_traits<char>,std::allocator<cha [0x1055484F+15]
10:46:40.228 3028   	base::internal::BindState<void (__thiscall content::IndexedDBCallbacksImpl::InternalState::*)(mojo::AssociatedInterfacePtrInfo<indexed_db::mojom::Database>,__int64,enum blink::WebIDBDataLoss,std::basic_string<char,std::char_traits<char>,std::allocator<cha [0x10555A72+34]
10:46:40.228 3028   	base::internal::BindStateBase::Release [0x01577C39+41]
10:46:40.228 3028   	scoped_refptr<base::internal::BindStateBase>::Release [0x01577C0B+11]
10:46:40.228 3028   	scoped_refptr<base::internal::BindStateBase>::~scoped_refptr<base::internal::BindStateBase> [0x0157786A+26]
10:46:40.229 3028   	base::internal::CallbackBase<0>::~CallbackBase<0> [0x0157783F+15]
10:46:40.229 3028   	base::Callback<void __cdecl(void),0,0>::~Callback<void __cdecl(void),0,0> [0x015AF76F+15]
10:46:40.229 3028   	base::PendingTask::~PendingTask [0x016B47F2+18]
10:46:40.229 3028   	blink::scheduler::internal::TaskQueueImpl::Task::~Task [0x0B5C6730+16]
10:46:40.229 3028   	blink::scheduler::internal::TaskQueueImpl::Task::`scalar deleting destructor' [0x0B5CE61F+15]
10:46:40.229 3028   	std::allocator<blink::scheduler::internal::TaskQueueImpl::Task>::destroy<blink::scheduler::internal::TaskQueueImpl::Task> [0x0B5CB7D1+17]
10:46:40.229 3028   	std::allocator_traits<std::allocator<blink::scheduler::internal::TaskQueueImpl::Task> >::destroy<blink::scheduler::internal::TaskQueueImpl::Task> [0x0B5CB7EF+15]
10:46:40.229 3028   	std::_Wrap_alloc<std::allocator<blink::scheduler::internal::TaskQueueImpl::Task> >::destroy<blink::scheduler::internal::TaskQueueImpl::Task> [0x0B5CB7A4+20]
10:46:40.229 3028   	std::deque<blink::scheduler::internal::TaskQueueImpl::Task,std::allocator<blink::scheduler::internal::TaskQueueImpl::Task> >::pop_back [0x0B5D4886+166]
10:46:40.229 3028   	std::deque<blink::scheduler::internal::TaskQueueImpl::Task,std::allocator<blink::scheduler::internal::TaskQueueImpl::Task> >::_Tidy [0x0B5D3541+49]
10:46:40.229 3028   	std::deque<blink::scheduler::internal::TaskQueueImpl::Task,std::allocator<blink::scheduler::internal::TaskQueueImpl::Task> >::~deque<blink::scheduler::internal::TaskQueueImpl::Task,std::allocator<blink::scheduler::internal::TaskQueueImpl::Task> > [0x0B5CD4DF+15]
10:46:40.229 3028   	std::queue<blink::scheduler::internal::TaskQueueImpl::Task,std::deque<blink::scheduler::internal::TaskQueueImpl::Task,std::allocator<blink::scheduler::internal::TaskQueueImpl::Task> > >::~queue<blink::scheduler::internal::TaskQueueImpl::Task,std::deque<bl [0x0B5CD52F+15]
10:46:40.229 3028   	blink::scheduler::internal::WorkQueue::~WorkQueue [0x0B5F9674+260]
10:46:40.229 3028   	blink::scheduler::internal::WorkQueue::`scalar deleting destructor' [0x0B5CE69F+15]
10:46:40.229 3028   	std::default_delete<blink::scheduler::internal::WorkQueue>::operator() [0x0B5CE495+37]
10:46:40.229 3028   	std::unique_ptr<blink::scheduler::internal::WorkQueue,std::default_delete<blink::scheduler::internal::WorkQueue> >::reset [0x0B5D50DA+58]
10:46:40.229 3028   	blink::scheduler::internal::TaskQueueImpl::UnregisterTaskQueue [0x0B5D18B3+259]
10:46:40.229 3028   	blink::scheduler::TaskQueueManager::~TaskQueueManager [0x0B5DE3F1+241]
10:46:40.229 3028   	blink::scheduler::TaskQueueManager::`vector deleting destructor' [0x0B5E0390+80]
10:46:40.229 3028   	std::default_delete<blink::scheduler::TaskQueueManager>::operator() [0x0B6066D9+41]
10:46:40.229 3028   	std::unique_ptr<blink::scheduler::TaskQueueManager,std::default_delete<blink::scheduler::TaskQueueManager> >::reset [0x0B60738A+58]
10:46:40.229 3028   	blink::scheduler::SchedulerHelper::Shutdown [0x0B607104+68]
10:46:40.229 3028   	blink::scheduler::WorkerSchedulerImpl::Shutdown [0x0B614053+179]
10:46:40.229 3028   	blink::scheduler::WebSchedulerImpl::shutdown [0x0B60A71A+26]
10:46:40.229 3028   	blink::WebThreadSupportingGC::shutdown [0x0B230660+80]
10:46:40.229 3028   	blink::WorkerBackingThread::shutdown [0x1659C2A6+102]
10:46:40.229 3028   	blink::WorkerThread::performShutdownOnWorkerThread [0x165C0FF7+519]
10:46:40.229 3028   	??$Invoke@PAVWorkerThread@blink@@$$V@?$FunctorTraits@P8WorkerThread@blink@@AEXXZX@internal@base@@SAXP8WorkerThread@blink@@AEXXZ$$QAPAV34@@Z [0x165B83A2+18]
10:46:40.229 3028   	base::internal::InvokeHelper<0,void>::MakeItSo<void (__thiscall blink::WorkerThread::*const &)(void),blink::WorkerThread *> [0x165B8914+36]
10:46:40.229 3028   	base::internal::Invoker<base::internal::BindState<void (__thiscall blink::WorkerThread::*)(void),WTF::UnretainedWrapper<blink::WorkerThread,0> >,void __cdecl(void)>::RunImpl<void (__thiscall blink::WorkerThread::*const &)(void),std::tuple<WTF::UnretainedW [0x165B8BAB+59]
10:46:40.229 3028   	base::internal::Invoker<base::internal::BindState<void (__thiscall blink::WorkerThread::*)(void),WTF::UnretainedWrapper<blink::WorkerThread,0> >,void __cdecl(void)>::Run [0x165BCE84+36]
10:46:40.230 3028   	base::internal::RunMixin<base::Callback<void __cdecl(void),0,0> >::Run [0x015B1E64+68]
10:46:40.230 3028   	base::debug::TaskAnnotator::RunTask [0x015B1FFF+367]
10:46:40.230 3028   	blink::scheduler::TaskQueueManager::ProcessTaskFromWorkQueue [0x0B5E2E24+1508]
10:46:40.230 3028   	blink::scheduler::TaskQueueManager::DoWork [0x0B5E13B1+737]
10:46:40.230 3028   	base::internal::FunctorTraits<void (__thiscall blink::scheduler::TaskQueueManager::*)(base::TimeTicks,bool),void>::Invoke<base::WeakPtr<blink::scheduler::TaskQueueManager> const &,base::TimeTicks const &,bool const &> [0x0B5D6DCD+61]
10:46:40.230 3028   	base::internal::InvokeHelper<1,void>::MakeItSo<void (__thiscall blink::scheduler::TaskQueueManager::*const &)(base::TimeTicks,bool),base::WeakPtr<blink::scheduler::TaskQueueManager> const &,base::TimeTicks const &,bool const &> [0x0B5D6EE3+83]
10:46:40.230 3028   	base::internal::Invoker<base::internal::BindState<void (__thiscall blink::scheduler::TaskQueueManager::*)(base::TimeTicks,bool),base::WeakPtr<blink::scheduler::TaskQueueManager>,base::TimeTicks,bool>,void __cdecl(void)>::RunImpl<void (__thiscall blink::sc [0x0B5D6FD2+114]
10:46:40.230 3028   	base::internal::Invoker<base::internal::BindState<void (__thiscall blink::scheduler::TaskQueueManager::*)(base::TimeTicks,bool),base::WeakPtr<blink::scheduler::TaskQueueManager>,base::TimeTicks,bool>,void __cdecl(void)>::Run [0x0B5E38B4+36]
10:46:40.230 3028   	base::internal::RunMixin<base::Callback<void __cdecl(void),0,0> >::Run [0x015B1E64+68]
10:46:40.230 3028   	base::debug::TaskAnnotator::RunTask [0x015B1FFF+367]
10:46:40.230 3028   	base::MessageLoop::RunTask [0x0162E8E4+660]
10:46:40.292 3184 [39683/42365] storage/indexeddb/pending-version-change-stuck.html failed unexpectedly (renderer crashed)
 
In summary: IndexedDBCallbacksImpl's UpgradeNeeded and SuccessDatabase methods receive a DatabaseAssociatedPtrInfo and need to somehow get this bound to the AssocatedBinding in WebIDBDatabaseImpl::IOThreadHelper. This object will always be destroyed on the IO thread. However, before that happens the DatabaseAssociatedPtrInfo is temporarily owned by a callback posted to a worker thread. If the worker thread is destroyed before the callback is run then it will be destroyed on the worker thread and this is what the check in Mojo is complaining about.
I was under the impression that PtrInfo objects are thread-safe but this check indicates otherwise.
Ken will remove the DCHECK.
Owner: roc...@chromium.org
Project Member

Comment 5 by bugdroid1@chromium.org, Nov 8 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/becd3f741efe619c34bb569fd4ab18d85da45d6f

commit becd3f741efe619c34bb569fd4ab18d85da45d6f
Author: rockot <rockot@chromium.org>
Date: Tue Nov 08 20:47:00 2016

IPC: Relax thread constraints on Channel-associated send

This removes a DCHECK from ChannelAssociatedGroupController, allowing
messages to be sent from arbitrary threads rather than only from the
IO thread or proxy thread.

While it is still unsafe to bind associated endpoints on non-proxy
non-IO threads, this allows control messages to be transmitted
safely from any thread, so for example an AssociatedPtrInfo can safely
notify the request side of closure if it's destroyed on an arbitrary
thread.

BUG= 663046 
R=yzshen@chromium.org

Review-Url: https://codereview.chromium.org/2481963002
Cr-Commit-Position: refs/heads/master@{#430705}

[modify] https://crrev.com/becd3f741efe619c34bb569fd4ab18d85da45d6f/ipc/ipc_mojo_bootstrap.cc

Status: Fixed (was: Assigned)

Sign in to add a comment