stdlibc++ assertion in blink::scheduler:IntrusiveHeap |
||
Issue description
<b>Version: <Kenneth, what is the frequency?></b>
OS: Fedora 25 beta
What steps will reproduce the problem?
(1) build a debug version of Chrome
(2) try running it
What is the expected output?
Chrome starts
What do you see instead?
/usr/lib/gcc/x86_64-redhat-linux/6.2.1/../../../../include/c++/6.2.1/bits/stl_heap.h:503:
Error: comparison doesn't meet irreflexive requirements, assert(!(a < a)).
Objects involved in the operation:
instance "functor" @ 0x0x7ffe7aef3708 {
}
iterator::value_type "ordered type" {
}
Received signal 6
#0 0x7f6092c527ee base::debug::StackTrace::StackTrace()
#1 0x7f6092c5232f base::debug::(anonymous namespace)::StackDumpSignalHandler()
#2 0x7f60930ab5c0 <unknown>
#3 0x7f608002c92f __GI_raise
#4 0x7f608002e52a __GI_abort
#5 0x7f6080475753 __gnu_debug::_Error_formatter::_M_error()
#6 0x7f6083c82c01 std::is_heap_until<>()
#7 0x7f6083c82a65 std::is_heap<>()
#8 0x7f6083c82980 blink::scheduler::IntrusiveHeap<>::FillHole()
#9 0x7f6083c82178 blink::scheduler::IntrusiveHeap<>::MoveHoleUpAndFillWithElement()
#10 0x7f6083c7fe7d blink::scheduler::IntrusiveHeap<>::insert()
#11 0x7f6083c7e8fc blink::scheduler::TimeDomain::ScheduleDelayedWork()
#12 0x7f6083c54daa blink::scheduler::internal::TaskQueueImpl::PushOntoDelayedIncomingQueueFromMainThread()
#13 0x7f6083c54873 blink::scheduler::internal::TaskQueueImpl::PostDelayedTaskImpl()
#14 0x7f6083c54566 blink::scheduler::internal::TaskQueueImpl::PostDelayedTask()
#15 0x7f608bb3812a content::ChildThreadImpl::Init()
#16 0x7f608bb3893b content::ChildThreadImpl::ChildThreadImpl()
#17 0x7f608d7ee691 content::RenderThreadImpl::RenderThreadImpl()
#18 0x7f608d7ee58e content::RenderThreadImpl::Create()
#19 0x7f608d878a9c content::RendererMain()
#20 0x7f608dc43965 content::RunZygote()
#21 0x7f608dc43e40 content::RunNamedProcessTypeMain()
#22 0x7f608dc45df2 content::ContentMainRunnerImpl::Run()
#23 0x7f608dc430c2 content::ContentMain()
#24 0x5652a3a9a8ab ChromeMain
#25 0x5652a3a9a842 main
#26 0x7f6080017401 __libc_start_main
#27 0x5652a3a9a71a _start
r8: 0000000000000000 r9: 00007ffe7aef3320 r10: 0000000000000008 r11: 0000000000000246
r12: 00007f6084557b48 r13: 00007ffe7aef3570 r14: 00007f6084557b90 r15: 00007ffe7aef3610
di: 0000000000000002 si: 00007ffe7aef3320 bp: 0000000000000002 bx: 00007f6084557bd0
dx: 0000000000000000 ax: 0000000000000000 cx: 00007f608002c92f sp: 00007ffe7aef3398
ip: 00007f608002c92f efl: 0000000000000246 cgf: 002b000000000033 erf: 0000000000000000
trp: 0000000000000000 msk: 0000000000000000 cr2: 0000000000000000
[end of stack trace]
Please use labels and text to provide additional information.
I'll submit a patch.
,
Nov 1 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/b32830fb14c0a6c36b2735089fdb3a2ce26106e0 commit b32830fb14c0a6c36b2735089fdb3a2ce26106e0 Author: pwnall <pwnall@chromium.org> Date: Tue Nov 01 16:53:16 2016 Fix incorrect usage of std::is_heap in blink::scheduler::IntrusiveHeap. IntrusiveHeap uses std::is_heap in a DCHECK, but it uses a comparator function that isn't irreflexive (the comparator is like <, but it should be like <=). This CL makes the (super simple fix) and adds the necessary plumbing for IntrusiveHeap's comparator to be unit-tested. BUG= 661080 Review-Url: https://codereview.chromium.org/2469653002 Cr-Commit-Position: refs/heads/master@{#429026} [modify] https://crrev.com/b32830fb14c0a6c36b2735089fdb3a2ce26106e0/third_party/WebKit/Source/platform/scheduler/base/intrusive_heap.h [modify] https://crrev.com/b32830fb14c0a6c36b2735089fdb3a2ce26106e0/third_party/WebKit/Source/platform/scheduler/base/intrusive_heap_unittest.cc
,
Nov 1 2016
|
||
►
Sign in to add a comment |
||
Comment 1 by pwnall@chromium.org
, Nov 1 2016