components/scheduler/base/task_queue_impl.cc bool TaskQueueImpl::PostDelayedTaskImpl fault in pushontodelayedincomingqueue is unhandled
Reported by
michael_...@hotmail.com,
Oct 25 2016
|
||
Issue descriptionUserAgent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 Steps to reproduce the problem: Found via static analysis What is the expected behavior? What went wrong? Potential semantic error (static analysis verification). Did this work before? N/A Chrome version: 53.0.2785.143 Channel: n/a OS Version: 10.0 Flash Version: Shockwave Flash 23.0 r0 Is there a fault handler for failure in PushOntoDelayedIncomingQueue in the fast path?
,
Nov 2 2016
Specifically:
if (base::PlatformThread::CurrentId() == thread_id_) {
// Lock-free fast path for delayed tasks posted from the main thread.
if (!main_thread_only().task_queue_manager)
return false;
EnqueueOrder sequence_number =
main_thread_only().task_queue_manager->GetNextSequenceNumber();
base::TimeTicks time_domain_now = main_thread_only().time_domain->Now();
base::TimeTicks time_domain_delayed_run_time = time_domain_now + delay;
---> PushOntoDelayedIncomingQueueFromMainThread(
Task(from_here, task, time_domain_delayed_run_time, sequence_number,
task_type != TaskType::NON_NESTABLE),
time_domain_now);
} else {
// NOTE posting a delayed task from a different thread is not expected to
// be common. This pathway is less optimal than perhaps it could be
// because it causes two main thread tasks to be run. Should this
// assumption prove to be false in future, we may need to revisit this.
base::AutoLock lock(any_thread_lock_);
if (!any_thread().task_queue_manager)
return false;
EnqueueOrder sequence_number =
any_thread().task_queue_manager->GetNextSequenceNumber();
base::TimeTicks time_domain_now = any_thread().time_domain->Now();
base::TimeTicks time_domain_delayed_run_time = time_domain_now + delay;
PushOntoDelayedIncomingQueueLocked(
Task(from_here, task, time_domain_delayed_run_time, sequence_number,
task_type != TaskType::NON_NESTABLE));
}
return true;
If the PushOntoDelayedIncomingQueueFromMainThread call fails, there isn't any fall-back to the slow-path or re-attempt, it simply returns true.
,
Nov 3 2017
Issue has not been modified or commented on in the last 365 days, please re-open or file a new bug if this is still an issue. For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot |
||
►
Sign in to add a comment |
||
Comment 1 by sureshkumari@chromium.org
, Oct 26 2016