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

Issue 807490 link

Starred by 1 user

Issue metadata

Status: Duplicate
Owner: ----
Closed: Mar 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 2
Type: Bug



Sign in to add a comment

device::win::BluetoothClassicWrapper::FindFirstRadio attempt to close an untracked handle

Project Member Reported by dougt@chromium.org, Jan 31 2018

Issue description

I've hit this break a few times while playing around with web bluetooth on windows, but can not reproduce it consistently.


>	base.dll!base::debug::BreakDebugger() Line 21	C++	Symbols loaded.
 	base.dll!logging::LogMessage::~LogMessage() Line 844	C++	Symbols loaded.
 	base.dll!`anonymous namespace'::ActiveVerifier::StopTracking(void * handle, const void * owner, const void * pc1, const void * pc2) Line 220	C++	Symbols loaded.
 	base.dll!base::win::VerifierTraits::StopTracking(void * handle, const void * owner, const void * pc1, const void * pc2) Line 281	C++	Symbols loaded.
 	bluetooth.dll!base::win::GenericScopedHandle<base::win::HandleTraits,base::win::VerifierTraits>::Close() Line 103	C++	Symbols loaded.
 	bluetooth.dll!base::win::GenericScopedHandle<base::win::HandleTraits,base::win::VerifierTraits>::Set(void * handle) Line 73	C++	Symbols loaded.
 	bluetooth.dll!device::win::BluetoothClassicWrapper::FindFirstRadio(const _BLUETOOTH_FIND_RADIO_PARAMS * params, void * * out_handle) Line 42	C++	Symbols loaded.
 	bluetooth.dll!device::BluetoothTaskManagerWin::PollAdapter() Line 383	C++	Symbols loaded.
 	bluetooth.dll!base::internal::FunctorTraits<void (device::BluetoothTaskManagerWin::*)() __attribute__((thiscall)),void>::Invoke<const scoped_refptr<device::BluetoothTaskManagerWin> &>(void(device::BluetoothTaskManagerWin::*)() method, const scoped_refptr<device::BluetoothTaskManagerWin> & receiver_ptr) Line 211	C++	Symbols loaded.
 	bluetooth.dll!base::internal::InvokeHelper<0,void>::MakeItSo<void (device::BluetoothTaskManagerWin::*const &)() __attribute__((thiscall)),const scoped_refptr<device::BluetoothTaskManagerWin> &>(void(device::BluetoothTaskManagerWin::*)() & functor, const scoped_refptr<device::BluetoothTaskManagerWin> & args) Line 294	C++	Symbols loaded.
 	bluetooth.dll!base::internal::Invoker<base::internal::BindState<void (device::BluetoothTaskManagerWin::*)() __attribute__((thiscall)),scoped_refptr<device::BluetoothTaskManagerWin> >,void ()>::RunImpl<void (device::BluetoothTaskManagerWin::*const &)() __attribute__((thiscall)),const std::tuple<scoped_refptr<device::BluetoothTaskManagerWin> > &,0>(void(device::BluetoothTaskManagerWin::*)() & functor, const std::tuple<scoped_refptr<device::BluetoothTaskManagerWin> > & bound, std::integer_sequence<unsigned int,0>) Line 368	C++	Symbols loaded.
 	bluetooth.dll!base::internal::Invoker<base::internal::BindState<void (device::BluetoothTaskManagerWin::*)() __attribute__((thiscall)),scoped_refptr<device::BluetoothTaskManagerWin> >,void ()>::Run(base::internal::BindStateBase * base) Line 350	C++	Symbols loaded.
 	base.dll!base::OnceCallback<void ()>::Run() Line 65	C++	Symbols loaded.
 	base.dll!base::debug::TaskAnnotator::RunTask(const char * queue_function, base::PendingTask * pending_task) Line 55	C++	Symbols loaded.
 	base.dll!base::internal::TaskTracker::RunOrSkipTask(base::internal::Task task, base::internal::Sequence * sequence, bool can_run_task) Line 439	C++	Symbols loaded.
 	base.dll!base::internal::TaskTracker::RunNextTask(scoped_refptr<base::internal::Sequence> sequence, base::internal::CanScheduleSequenceObserver * observer) Line 341	C++	Symbols loaded.
 	base.dll!base::internal::SchedulerWorker::Thread::ThreadMain() Line 72	C++	Symbols loaded.
 	base.dll!base::`anonymous namespace'::ThreadFunc(void * params) Line 93	C++	Symbols loaded.


Since we're just vending handles, I am not sure why we used scoped handles here:
    https://cs.chromium.org/chromium/src/device/bluetooth/bluetooth_classic_win.cc?type=cs&q=BluetoothClassicWrapper::FindFirstRadio&sq=package:chromium&l=42

It was added:
    https://codereview.chromium.org/1672843002/patch/60001/70001


Why don't we just remove this member:
    https://cs.chromium.org/search/?q=opened_radio_handle_&sq=package:chromium&type=cs


 
Cc: cco3@chromium.org
Mergedinto: 820864
Status: Duplicate (was: Available)
Conley has been investigating this failure. We cannot simply remove the member because we need something to maintain ownership of the handle. It's unclear why the handle is owned by BluetoothClassicWrapper instead of BluetoothTaskManagerWin.

Sign in to add a comment