I am thinking we might simply have a bug in core/semaphore.cc. Based on 
these two lines:

 semaphore::trywait (this=0xffffa000012d4680, units=units@entry=1) at 
core/semaphore.cc:64 -> from VM Thread

and 

semaphore::wait (this=0xffffa00001f95680, units=units@entry=1, 
tmr=tmr@entry=0x0) at core/semaphore.cc:46 -> from Signal Dispatch

it seems that VM Thread is waiting on mutex _mtx while the Signal Dispatch 
is waiting on the timer to expire or be interrupted (?) which never happens 
(why?). But what is weirder is that 
Signal Dispatch seems to be indefinitely stuck waiting for the mutex to be 
released. Is it because the core around waiting does not release the mutex?

*This* address seems to be different for each thread so these seem to be 
different semaphores, right? But then I do not see other threads having 
stack traces that involve semaphore code.

What am I missing? Which thread is holding the mutex VM Thread is waiting 
for in try_wait()?

Waldek

On Saturday, July 20, 2019 at 1:41:00 AM UTC-4, Waldek Kozaczuk wrote:
>
> Are we properly handling the EINTR scenario, where thread blocked on 
> sem_wait() or sem_timed_wait() should get interrupted if signal sent to it? 
>
> On Saturday, July 20, 2019 at 1:15:59 AM UTC-4, Waldek Kozaczuk wrote:
>>
>> I am thinking these 2 threads are somehow entangled:
>>
>> Thread 0xffff800003195040 VM Thread
>>
>> #0  lockfree::mutex::unlock (this=this@entry=0xffffa000012d4690) at 
>> core/lfmutex.cc:221
>> #1  0x00000000403e36bc in std::lock_guard<lockfree::mutex>::~lock_guard 
>> (this=<synthetic pointer>, __in_chrg=<optimized out>) at 
>> /usr/include/c++/8/bits/std_mutex.h:167
>> #2  lock_guard_for_with_lock<lockfree::mutex>::~lock_guard_for_with_lock 
>> (this=<synthetic pointer>, __in_chrg=<optimized out>) at 
>> include/osv/mutex.h:88
>> #3  semaphore::trywait (this=0xffffa000012d4680, units=units@entry=1) at 
>> core/semaphore.cc:64
>> #4  0x0000000040465731 in sem_trywait (s=<optimized out>) at 
>> /usr/include/c++/8/bits/unique_ptr.h:342
>> #5  0x00001000012feb22 in PosixSemaphore::trywait() ()
>> #6  0x0000100000e19ebb in VM_HandshakeAllThreads::doit() ()
>> #7  0x0000100001575fd7 in VM_Operation::evaluate() ()
>> #8  0x000010000157bdb6 in VMThread::evaluate_operation(VM_Operation*) 
>> [clone .constprop.67] ()
>> #9  0x000010000157c50a in VMThread::loop() ()
>> #10 0x000010000157c6e3 in VMThread::run() ()
>> #11 0x000010000150479f in Thread::call_run() ()
>> #12 0x000010000122cbae in thread_native_entry(Thread*) ()
>> #13 0x000000004045ee26 in 
>> pthread_private::pthread::<lambda()>::operator() 
>> (__closure=0xffffa00002c7cf00) at libc/pthread.cc:114
>> #14 std::_Function_handler<void(), 
>> pthread_private::pthread::pthread(void* (*)(void*), void*, sigset_t, const 
>> pthread_private::thread_attr*)::<lambda()> >::_M_invoke(const 
>> std::_Any_data &) (
>>     __functor=...) at /usr/include/c++/8/bits/std_function.h:297
>> #15 0x0000000040401187 in sched::thread_main_c (t=0xffff800003195040) at 
>> arch/x64/arch-switch.hh:321
>> #16 0x00000000403a7113 in thread_main () at arch/x64/entry.S:113
>>
>> thread 0xffff80000383c040 Signal Dispatch
>>
>> #0  sched::thread::switch_to (this=0xffffffffffffffb0, 
>> this@entry=0xffff8000014b5040) at arch/x64/arch-switch.hh:108
>> #1  0x00000000403ff804 in sched::cpu::reschedule_from_interrupt 
>> (this=0xffff800000013040, called_from_yield=called_from_yield@entry=false, 
>> preempt_after=..., preempt_after@entry=...)
>>     at core/sched.cc:339
>> #2  0x00000000403ffcfc in sched::cpu::schedule () at 
>> include/osv/sched.hh:1310
>> #3  0x00000000404003e2 in sched::thread::wait 
>> (this=this@entry=0xffff80000383c040) at core/sched.cc:1214
>> #4  0x00000000403e35af in 
>> sched::thread::do_wait_until<sched::noninterruptible, lockfree::mutex, 
>> semaphore::wait(unsigned int, sched::timer*)::<lambda()> > (pred=..., 
>> mtx=...) at include/osv/mutex.h:41
>> #5  sched::thread::wait_until<semaphore::wait(unsigned int, 
>> sched::timer*)::<lambda()> > (pred=..., mtx=...) at 
>> include/osv/sched.hh:1084
>> #6  semaphore::wait (this=0xffffa00001f95680, units=units@entry=1, 
>> tmr=tmr@entry=0x0) at core/semaphore.cc:46
>> #7  0x0000000040465643 in sem_wait (s=<optimized out>) at 
>> /usr/include/c++/8/bits/unique_ptr.h:342
>> #8  0x00001000012feaf2 in PosixSemaphore::wait() ()
>> #9  0x00001000012263db in os::signal_wait() ()
>> #10 0x000010000121a66c in signal_thread_entry(JavaThread*, Thread*) ()
>> #11 0x0000100001507cdf in JavaThread::run() ()
>> #12 0x000010000150479f in Thread::call_run() ()
>> #13 0x000010000122cbae in thread_native_entry(Thread*) ()
>> #14 0x000000004045ee26 in 
>> pthread_private::pthread::<lambda()>::operator() 
>> (__closure=0xffffa0000365b200) at libc/pthread.cc:114
>> #15 std::_Function_handler<void(), 
>> pthread_private::pthread::pthread(void* (*)(void*), void*, sigset_t, const 
>> pthread_private::thread_attr*)::<lambda()> >::_M_invoke(const 
>> std::_Any_data &) (
>>     __functor=...) at /usr/include/c++/8/bits/std_function.h:297
>> #16 0x0000000040401187 in sched::thread_main_c (t=0xffff80000383c040) at 
>> arch/x64/arch-switch.hh:321
>> #17 0x00000000403a7113 in thread_main () at arch/x64/entry.S:113
>>
>> Shouldn't sem_trywait() return immediately per 
>> https://linux.die.net/man/3/sem_trywait, instead it seems to block?
>>
>> On Mon, Jul 15, 2019 at 6:06 PM Waldek Kozaczuk <jwkozac...@gmail.com> 
>> wrote:
>>
>> There is this thread that seems to be doing something related to signals:
>>
>> thread 0xffff80000383c040 Signal Dispatch
>>
>> #0  sched::thread::switch_to (this=0xffffffffffffffb0, 
>> this@entry=0xffff8000014b5040) at arch/x64/arch-switch.hh:108
>> #1  0x00000000403ff804 in sched::cpu::reschedule_from_interrupt 
>> (this=0xffff800000013040, called_from_yield=called_from_yield@entry=false, 
>> preempt_after=..., preempt_after@entry=...)
>>     at core/sched.cc:339
>> #2  0x00000000403ffcfc in sched::cpu::schedule () at 
>> include/osv/sched.hh:1310
>> #3  0x00000000404003e2 in sched::thread::wait 
>> (this=this@entry=0xffff80000383c040) at core/sched.cc:1214
>> #4  0x00000000403e35af in 
>> sched::thread::do_wait_until<sched::noninterruptible, lockfree::mutex, 
>> semaphore::wait(unsigned int, sched::timer*)::<lambda()> > (pred=..., 
>> mtx=...) at include/osv/mutex.h:41
>> #5  sched::thread::wait_until<semaphore::wait(unsigned int, 
>> sched::timer*)::<lambda()> > (pred=..., mtx=...) at 
>> include/osv/sched.hh:1084
>> #6  semaphore::wait (this=0xffffa00001f95680, units=units@entry=1, 
>> tmr=tmr@entry=0x0) at core/semaphore.cc:46
>> #7  0x0000000040465643 in sem_wait (s=<optimized out>) at 
>> /usr/include/c++/8/bits/unique_ptr.h:342
>> #8  0x00001000012feaf2 in PosixSemaphore::wait() ()
>> #9  0x00001000012263db in os::signal_wait() ()
>> #10 0x000010000121a66c in signal_thread_entry(JavaThread*, Thread*) ()
>> #11 0x0000100001507cdf in JavaThread::run() ()
>> #12 0x000010000150479f in Thread::call_run() ()
>> #13 0x000010000122cbae in thread_native_entry(Thread*) ()
>> #14 0x000000004045ee26 in 
>> pthread_private::pthread::<lambda()>::operator() 
>> (__closure=0xffffa0000365b200) at libc/pthread.cc:114
>> #15 std::_Function_handler<void(), 
>> pthread_private::pthread::pthread(void* (*)(void*), void*, sigset_t, const 
>> pthread_private::thread_attr*)::<lambda()> >::_M_invoke(const 
>> std::_Any_data &) (
>>     __functor=...) at /usr/include/c++/8/bits/std_function.h:297
>> #16 0x0000000040401187 in sched::thread_main_c (t=0xffff80000383c040) at 
>> arch/x64/arch-switch.hh:321
>> #17 0x00000000403a7113 in thread_main () at arch/x64/entry.S:113
>>
>> Could it be caused by some limitations of signal handling in OSv?
>>
>> On Monday, July 15, 2019 at 5:29:08 PM UTC-4, Waldek Kozaczuk wrote:
>>
>> Here is the full thread dump:
>>
>> (gdb) osv thread apply all bt
>> thread 0xffff80000000c040 reclaimer
>>
>> #0  sched::thread::switch_to (this=0xffffffffffffffb0, 
>> this@entry=0xffff800000068040) at arch/x64/arch-switch.hh:108
>> #1  0x00000000403ff804 in sched::cpu::reschedule_from_interrupt 
>> (this=0xffff800000013040, called_from_yield=called_from_yield@entry=false, 
>> preempt_after=..., preempt_after@entry=...)
>>     at core/sched.cc:339
>> #2  0x00000000403ffcfc in sched::cpu::schedule () at 
>> include/osv/sched.hh:1310
>> #3  0x00000000404003e2 in sched::thread::wait 
>> (this=this@entry=0xffff80000000c040) at core/sched.cc:1214
>> #4  0x00000000403e38df in 
>> sched::thread::do_wait_until<sched::noninterruptible, 
>> sched::thread::dummy_lock, waiter::wait(sched::timer*) 
>> const::{lambda()#1}>(sched::thread::dummy_lock&, waiter::wait(sched
>> #5  sched::thread::wait_until<waiter::wait(sched::timer*) 
>> const::{lambda()#1}>(waiter::wait(sched::timer*) const::{lambda()#1}) 
>> (pred=...) at include/osv/sched.hh:1077
>> #6  waiter::wait (tmr=0x0, this=0xffff900000012f00) at 
>> include/osv/wait_record.hh:46
>> #7  condvar::wait (this=this@entry=0x40904470 
>> <memory::reclaimer_thread+16>, user_mutex=user_mutex@entry=0x40904520 
>> <memory::free_page_ranges_lock>, tmr=tmr@entry=0x0) at core/condvar.cc:43
>> #8  0x00000000403edb3a in condvar::wait (tmr=0x0, user_mutex=..., 
>> this=0x40904470 <memory::reclaimer_thread+16>) at include/osv/condvar.h:226
>> #9  memory::reclaimer::_do_reclaim (this=0x40904460 
>> <memory::reclaimer_thread>) at core/mempool.cc:1005
>> #10 0x00000000403edc2c in memory::reclaimer::<lambda()>::operator() 
>> (__closure=<optimized out>) at core/mempool.cc:960
>> #11 std::_Function_handler<void(), 
>> memory::reclaimer::reclaimer()::<lambda()> >::_M_invoke(const 
>> std::_Any_data &) (__functor=...) at 
>> /usr/include/c++/8/bits/std_function.h:297
>> #12 0x0000000040401187 in sched::thread_main_c (t=0xffff80000000c040) at 
>> arch/x64/arch-switch.hh:321
>> #13 0x00000000403a7113 in thread_main () at arch/x64/entry.S:113
>>
>> thread 0xffff800000050040 page-access-sca
>>
>> #0  sched::thread::switch_to (this=0xffffffffffffffb0, 
>> this@entry=0xffff800003195040) at arch/x64/arch-switch.hh:108
>> #1  0x00000000403ff804 in sched::cpu::reschedule_from_interrupt 
>> (this=0xffff800000013040, called_from_yield=called_from_yield@entry=false, 
>> preempt_after=..., preempt_after@entry=...)
>>     at core/sched.cc:339
>> #2  0x00000000403ffcfc in sched::cpu::schedule () at 
>> include/osv/sched.hh:1310
>> #3  0x0000000040400c5a in sched::thread::wait (this=0xffff800000050040) 
>> at core/sched.cc:1214
>> #4  sched::thread::do_wait_until<sched::noninterruptible, 
>> sched::thread::dummy_lock, 
>> sched::thread::sleep_impl(sched::timer&)::<lambda()> > (mtx=<synthetic 
>> pointer>..., pred=...)
>>     at include/osv/sched.hh:1066
>> #5  
>> sched::thread::wait_until<sched::thread::sleep_impl(sched::timer&)::<lambda()>
>>  
>> > (pred=...) at include/osv/sched.hh:1077
>> #6  sched::thread::sleep_impl (t=...) at core/sched.cc:1370
>> #7  0x00000000403ebbb7 in sched::thread::sleep<long, std::ratio<1l, 
>> 1000000000l> > (duration=...) at /usr/include/c++/8/chrono:715
>> #8  pagecache::access_scanner::run (this=0x40903600 
>> <pagecache::s_access_scanner>) at core/pagecache.cc:593
>> #9  0x0000000040401187 in sched::thread_main_c (t=0xffff800000050040) at 
>> arch/x64/arch-switch.hh:321
>> #10 0x00000000403a7113 in thread_main () at arch/x64/entry.S:113
>>
>> thread 0xffff800000068040 page_pool_l2
>>
>> #0  sched::thread::switch_to (this=0xffffffffffffffb0, 
>> this@entry=0xffff8000014b5040) at arch/x64/arch-switch.hh:108
>> #1  0x00000000403ff804 in sched::cpu::reschedule_from_interrupt 
>> (this=0xffff800000013040, called_from_yield=called_from_yield@entry=false, 
>> preempt_after=..., preempt_after@entry=...)
>>     at core/sched.cc:339
>> #2  0x00000000403ffcfc in sched::cpu::schedule () at 
>> include/osv/sched.hh:1310
>> #3  0x00000000404003e2 in sched::thread::wait 
>> (this=this@entry=0xffff800000068040) at core/sched.cc:1214
>> #4  0x00000000403ef614 in 
>> sched::thread::do_wait_for<sched::thread::dummy_lock, 
>> sched::wait_object<memory::page_pool::l2::fill_thread()::<lambda()> > > 
>> (mtx=<synthetic pointer>...)
>>     at core/mempool.cc:1348
>> #5  
>> sched::thread::wait_for<memory::page_pool::l2::fill_thread()::<lambda()> > 
>> () at include/osv/sched.hh:1228
>> #6  memory::page_pool::l2::fill_thread (this=0x40904280 
>> <memory::page_pool::global_l2>) at core/mempool.cc:1346
>> #7  0x00000000403f2ebc in 
>> memory::page_pool::l2::l2()::{lambda()#1}::operator()() const 
>> (__closure=<optimized out>) at core/mempool.cc:1165
>> #8  std::_Function_handler<void (), 
>> memory::page_pool::l2::l2()::{lambda()#1}>::_M_invoke(std::_Any_data 
>> const&) (__functor=...) at /usr/include/c++/8/bits/std_function.h:297
>> #9  0x0000000040401187 in sched::thread_main_c (t=0xffff800000068040) at 
>> arch/x64/arch-switch.hh:321
>> #10 0x00000000403a7113 in thread_main () at arch/x64/entry.S:113
>>
>> thread 0xffff800000085040 itimer-real
>>
>> #0  thread_main () at arch/x64/entry.S:112
>>
>> thread 0xffff80000008c040 itimer-virt
>>
>> #0  thread_main () at arch/x64/entry.S:112
>>
>> thread 0xffff80000013f040 balancer0
>>
>> #0  sched::thread::switch_to (this=0xffffffffffffffb0, 
>> this@entry=0xffff800003195040) at arch/x64/arch-switch.hh:108
>> #1  0x00000000403ff804 in sched::cpu::reschedule_from_interrupt 
>> (this=0xffff800000013040, called_from_yield=called_from_yield@entry=false, 
>> preempt_after=..., preempt_after@entry=...)
>>     at core/sched.cc:339
>> #2  0x00000000403ffcfc in sched::cpu::schedule () at 
>> include/osv/sched.hh:1310
>> #3  0x00000000404013fa in sched::thread::wait (this=0xffff80000013f040) 
>> at core/sched.cc:1214
>> #4  sched::thread::do_wait_until<sched::noninterruptible, 
>> sched::thread::dummy_lock, sched::cpu::load_balance()::<lambda()> > 
>> (mtx=<synthetic pointer>..., pred=...) at include/osv/sched.hh:1066
>> #5  sched::thread::wait_until<sched::cpu::load_balance()::<lambda()> > 
>> (pred=...) at include/osv/sched.hh:1077
>> #6  sched::cpu::load_balance (this=<optimized out>) at core/sched.cc:677
>> #7  0x0000000040401187 in sched::thread_main_c (t=0xffff80000013f040) at 
>> arch/x64/arch-switch.hh:321
>> #8  0x00000000403a7113 in thread_main () at arch/x64/entry.S:113
>>
>> thread 0xffff800000156040 rcu0
>>
>> #0  sched::thread::switch_to (this=0xffffffffffffffb0, 
>> this@entry=0xffff80000016d040) at arch/x64/arch-switch.hh:108
>> #1  0x00000000403ff804 in sched::cpu::reschedule_from_interrupt 
>> (this=0xffff800000013040, called_from_yield=called_from_yield@entry=false, 
>> preempt_after=..., preempt_after@entry=...)
>>     at core/sched.cc:339
>> #2  0x00000000403ffcfc in sched::cpu::schedule () at 
>> include/osv/sched.hh:1310
>> #3  0x00000000404003e2 in sched::thread::wait 
>> (this=this@entry=0xffff800000156040) at core/sched.cc:1214
>> #4  0x00000000403e5908 in 
>> sched::thread::do_wait_until<sched::noninterruptible, 
>> sched::thread::dummy_lock, 
>> osv::rcu::cpu_quiescent_state_thread::do_work()::<lambda()> > 
>> (mtx=<synthetic pointer>..., 
>>     pred=...) at include/osv/percpu.hh:47
>> #5  
>> sched::thread::wait_until<osv::rcu::cpu_quiescent_state_thread::do_work()::<lambda()>
>>  
>> > (pred=...) at include/osv/sched.hh:1077
>> #6  osv::rcu::cpu_quiescent_state_thread::do_work 
>> (this=0xffffa00000095920) at core/rcu.cc:178
>> #7  0x00000000403e5c39 in osv::rcu::cpu_quiescent_state_thread::work 
>> (this=<optimized out>) at core/rcu.cc:113
>> #8  0x00000000403e5c4c in 
>> osv::rcu::cpu_quiescent_state_thread::<lambda()>::operator() 
>> (__closure=<optimized out>) at core/rcu.cc:67
>> #9  std::_Function_handler<void(), 
>> osv::rcu::cpu_quiescent_state_thread::cpu_quiescent_state_thread(sched::cpu*)::<lambda()>
>>  
>> >::_M_invoke(const std::_Any_data &) (__functor=...)
>>     at /usr/include/c++/8/bits/std_function.h:297
>> #10 0x0000000040401187 in sched::thread_main_c (t=0xffff800000156040) at 
>> arch/x64/arch-switch.hh:321
>> #11 0x00000000403a7113 in thread_main () at arch/x64/entry.S:113
>>
>> thread 0xffff80000016d040 page_pool_l1_0
>>
>> #0  sched::thread::switch_to (this=0xffffffffffffffb0, 
>> this@entry=0xffff800004a7b040) at arch/x64/arch-switch.hh:108
>> #1  0x00000000403ff804 in sched::cpu::reschedule_from_interrupt 
>> (this=0xffff800000013040, called_from_yield=called_from_yield@entry=false, 
>> preempt_after=..., preempt_after@entry=...)
>>     at core/sched.cc:339
>> #2  0x00000000403ffcfc in sched::cpu::schedule () at 
>> include/osv/sched.hh:1310
>> #3  0x00000000404003e2 in sched::thread::wait 
>> (this=this@entry=0xffff80000016d040) at core/sched.cc:1214
>> #4  0x00000000403ef361 in 
>> sched::thread::do_wait_until<sched::noninterruptible, 
>> sched::thread::dummy_lock, memory::page_pool::l1::fill_thread()::<lambda()> 
>> > (mtx=<synthetic pointer>..., pred=...)
>>     at arch/x64/arch.hh:98
>> #5  
>> sched::thread::wait_until<memory::page_pool::l1::fill_thread()::<lambda()> 
>> > (pred=...) at include/osv/sched.hh:1077
>> #6  memory::page_pool::l1::fill_thread () at core/mempool.cc:1258
>> #7  0x00000000403f2ea9 in 
>> memory::page_pool::l1::l1(sched::cpu*)::{lambda()#1}::operator()() const 
>> (__closure=<optimized out>) at core/mempool.cc:1087
>> #8  std::_Function_handler<void (), 
>> memory::page_pool::l1::l1(sched::cpu*)::{lambda()#1}>::_M_invoke(std::_Any_data
>>  
>> const&) (__functor=...) at /usr/include/c++/8/bits/std_function.h:297
>> #9  0x0000000040401187 in sched::thread_main_c (t=0xffff80000016d040) at 
>> arch/x64/arch-switch.hh:321
>> #10 0x00000000403a7113 in thread_main () at arch/x64/entry.S:113
>>
>> thread 0xffff800000184040 percpu0
>>
>> #0  sched::thread::switch_to (this=0xffffffffffffffb0, 
>> this@entry=0xffff80000019b040) at arch/x64/arch-switch.hh:108
>> #1  0x00000000403ff804 in sched::cpu::reschedule_from_interrupt 
>> (this=0xffff800000013040, called_from_yield=called_from_yield@entry=false, 
>> preempt_after=..., preempt_after@entry=...)
>>     at core/sched.cc:339
>> #2  0x00000000403ffcfc in sched::cpu::schedule () at 
>> include/osv/sched.hh:1310
>> #3  0x00000000404003e2 in sched::thread::wait 
>> (this=this@entry=0xffff800000184040) at core/sched.cc:1214
>> #4  0x00000000404227ad in 
>> sched::thread::do_wait_until<sched::noninterruptible, 
>> sched::thread::dummy_lock, workman::call_of_duty()::<lambda()> > 
>> (mtx=<synthetic pointer>..., pred=...)
>>     at /usr/include/c++/8/bits/atomic_base.h:390
>> #5  sched::thread::wait_until<workman::call_of_duty()::<lambda()> > 
>> (pred=...) at include/osv/sched.hh:1077
>> #6  workman::call_of_duty () at core/percpu-worker.cc:92
>> #7  0x0000000040422959 in workman::<lambda()>::operator() 
>> (__closure=<optimized out>) at core/percpu-worker.cc:124
>> #8  std::_Function_handler<void(), workman::pcpu_init()::<lambda()> 
>> >::_M_invoke(const std::_Any_data &) (__functor=...) at 
>> /usr/include/c++/8/bits/std_function.h:297
>> #9  0x0000000040401187 in sched::thread_main_c (t=0xffff800000184040) at 
>> arch/x64/arch-switch.hh:321
>> #10 0x00000000403a7113 in thread_main () at arch/x64/entry.S:113
>>
>> thread 0xffff80000019b040 async_worker0
>>
>> #0  sched::thread::switch_to (this=0xffffffffffffffb0, 
>> this@entry=0x408acdf0) at arch/x64/arch-switch.hh:108
>> #1  0x00000000403ff804 in sched::cpu::reschedule_from_interrupt 
>> (this=0xffff800000013040, called_from_yield=called_from_yield@entry=false, 
>> preempt_after=..., preempt_after@entry=...)
>>     at core/sched.cc:339
>> #2  0x00000000403ffcfc in sched::cpu::schedule () at 
>> include/osv/sched.hh:1310
>> #3  0x00000000404003e2 in sched::thread::wait 
>> (this=this@entry=0xffff80000019b040) at core/sched.cc:1214
>> #4  0x000000004042c1f4 in 
>> sched::thread::do_wait_until<sched::noninterruptible, 
>> sched::thread::dummy_lock, 
>> async::async_worker::run()::{lambda()#1}>(sched::thread::dummy_lock&, 
>> async::async_worker::run(
>> #5  
>> sched::thread::wait_until<async::async_worker::run()::{lambda()#1}>(async::async_worker::run()::{lambda()#1})
>>  
>> (pred=...) at include/osv/sched.hh:1077
>> #6  async::async_worker::run (this=0xffffa0000009c040) at 
>> core/async.cc:158
>> #7  0x0000000040401187 in sched::thread_main_c (t=0xffff80000019b040) at 
>> arch/x64/arch-switch.hh:321
>> #8  0x00000000403a7113 in thread_main () at arch/x64/entry.S:113
>>
>> thread 0xffff8000001b2040 idle0
>>
>> #0  sched::thread::switch_to (this=0xffffffffffffffb0, 
>> this@entry=0xffff8000012de040) at arch/x64/arch-switch.hh:108
>> #1  0x00000000403ff804 in sched::cpu::reschedule_from_interrupt 
>> (this=0xffff800000013040, called_from_yield=called_from_yield@entry=false, 
>> preempt_after=..., preempt_after@entry=...)
>>     at core/sched.cc:339
>> #2  0x00000000403ffcfc in sched::cpu::schedule () at 
>> include/osv/sched.hh:1310
>> #3  0x000000004040102d in sched::cpu::idle (this=0xffff800000013040) at 
>> core/sched.cc:425
>> #4  0x000000004040104c in sched::cpu::<lambda()>::operator() 
>> (__closure=<optimized out>) at core/sched.cc:165
>> #5  std::_Function_handler<void(), 
>> sched::cpu::init_idle_thread()::<lambda()> >::_M_invoke(const 
>> std::_Any_data &) (__functor=...) at 
>> /usr/include/c++/8/bits/std_function.h:297
>> #6  0x0000000040401187 in sched::thread_main_c (t=0xffff8000001b2040) at 
>> arch/x64/arch-switch.hh:321
>> #7  0x00000000403a7113 in thread_main () at arch/x64/entry.S:113
>>
>> thread 0xffff800000afb040 >init
>>
>> #0  sched::thread::switch_to (this=0xffffffffffffffb0, 
>> this@entry=0x408acdf0) at arch/x64/arch-switch.hh:108
>> #1  0x00000000403ff804 in sched::cpu::reschedule_from_interrupt 
>> (this=0xffff800000013040, called_from_yield=called_from_yield@entry=false, 
>> preempt_after=..., preempt_after@entry=...)
>>     at core/sched.cc:339
>> #2  0x00000000403ffcfc in sched::cpu::schedule () at 
>> include/osv/sched.hh:1310
>> #3  0x00000000404003e2 in sched::thread::wait 
>> (this=this@entry=0xffff800000afb040) at core/sched.cc:1214
>> #4  0x0000000040388ff8 in 
>> sched::thread::do_wait_for<sched::thread::dummy_lock, 
>> sched::wait_object<osv::acpi_interrupt::process_interrupts()::{lambda()#1}>, 
>> sched::wait_object<osv::acpi_interrupt::proce
>> #5  
>> sched::thread::wait_for<osv::acpi_interrupt::process_interrupts()::{lambda()#1},
>>  
>> osv::acpi_interrupt::process_interrupts()::{lambda()#2}>(osv::acpi_interrupt::process_interrupts()::{lambda()#1}&&,
>>  
>> o
>> #6  osv::acpi_interrupt::process_interrupts (this=0xffffa00000958380) at 
>> drivers/acpi.cc:242
>> #7  osv::acpi_interrupt::acpi_interrupt(unsigned int, unsigned int 
>> (*)(void*), void*)::{lambda()#1}::operator()() const (__closure=<optimized 
>> out>) at drivers/acpi.cc:228
>> #8  std::_Function_handler<void (), 
>> osv::acpi_interrupt::acpi_interrupt(unsigned int, unsigned int (*)(void*), 
>> void*)::{lambda()#1}>::_M_invoke(std::_Any_data const&) (__functor=...)
>>     at /usr/include/c++/8/bits/std_function.h:297
>> #9  0x0000000040401187 in sched::thread_main_c (t=0xffff800000afb040) at 
>> arch/x64/arch-switch.hh:321
>> #10 0x00000000403a7113 in thread_main () at arch/x64/entry.S:113
>>
>> thread 0xffff800000b12040 >init
>>
>> #0  sched::thread::switch_to (this=0xffffffffffffffb0, 
>> this@entry=0x408acdf0) at arch/x64/arch-switch.hh:108
>> #1  0x00000000403ff804 in sched::cpu::reschedule_from_interrupt 
>> (this=0xffff800000013040, called_from_yield=called_from_yield@entry=false, 
>> preempt_after=..., preempt_after@entry=...)
>>     at core/sched.cc:339
>> #2  0x00000000403ffcfc in sched::cpu::schedule () at 
>> include/osv/sched.hh:1310
>> #3  0x0000000040400dd2 in sched::thread::wait (this=0xffff800000b12040) 
>> at core/sched.cc:1214
>> #4  sched::thread::do_wait_until<sched::noninterruptible, 
>> lockfree::mutex, sched::thread::reaper::reap()::<lambda()> > (pred=..., 
>> mtx=...) at include/osv/sched.hh:1066
>> #5  sched::thread::wait_until<sched::thread::reaper::reap()::<lambda()> > 
>> (pred=..., mtx=...) at include/osv/sched.hh:1084
>> #6  sched::thread::reaper::reap (this=0xffffa000001ff400) at 
>> core/sched.cc:1553
>> #7  0x0000000040400f4c in sched::thread::reaper::<lambda()>::operator() 
>> (__closure=<optimized out>) at core/sched.cc:1544
>> #8  std::_Function_handler<void(), 
>> sched::thread::reaper::reaper()::<lambda()> >::_M_invoke(const 
>> std::_Any_data &) (__functor=...) at 
>> /usr/include/c++/8/bits/std_function.h:297
>> #9  0x0000000040401187 in sched::thread_main_c (t=0xffff800000b12040) at 
>> arch/x64/arch-switch.hh:321
>> #10 0x00000000403a7113 in thread_main () at arch/x64/entry.S:113
>>
>> thread 0xffff800000b29040 thread taskq
>>
>> #0  sched::thread::switch_to (this=0xffffffffffffffb0, 
>> this@entry=0x408acdf0) at arch/x64/arch-switch.hh:108
>> #1  0x00000000403ff804 in sched::cpu::reschedule_from_interrupt 
>> (this=0xffff800000013040, called_from_yield=called_from_yield@entry=false, 
>> preempt_after=..., preempt_after@entry=...)
>>     at core/sched.cc:339
>> #2  0x00000000403ffcfc in sched::cpu::schedule () at 
>> include/osv/sched.hh:1310
>> #3  0x00000000404003e2 in sched::thread::wait 
>> (this=this@entry=0xffff800000b29040) at core/sched.cc:1214
>> #4  0x000000004026355a in 
>> sched::thread::do_wait_until<sched::interruptible, 
>> sched::thread::dummy_lock, synch_port::_msleep(void*, mtx*, int, char 
>> const*, int)::<lambda()> > (
>>     mtx=<synthetic pointer>..., pred=...) at 
>> /usr/include/c++/8/bits/atomic_base.h:390
>> #5  sched::thread::wait_until_interruptible<synch_port::_msleep(void*, 
>> mtx*, int, char const*, int)::<lambda()> > (pred=...) at 
>> include/osv/sched.hh:1099
>> #6  synch_port::_msleep (this=0xffffa000001ff500, chan=<optimized out>, 
>> mtx=0xffffa000001ff4b0, priority=<optimized out>, wmesg=<optimized out>, 
>> timo_hz=0) at bsd/porting/synch.cc:101
>> #7  0x000000004025db0b in TQ_SLEEP (tq=0xffffa000001ff480, t=0, 
>> wm=0x406ab8fd "-", pri=0, m=0xffffa000001ff4b0, p=0xffffa000001ff480) at 
>> bsd/sys/kern/subr_taskqueue.c:474
>> #8  taskqueue_thread_loop (arg=<optimized out>) at 
>> bsd/sys/kern/subr_taskqueue.c:474
>> #9  0x0000000040401187 in sched::thread_main_c (t=0xffff800000b29040) at 
>> arch/x64/arch-switch.hh:321
>> #10 0x00000000403a7113 in thread_main () at arch/x64/entry.S:113
>>
>> thread 0xffff800000b34040 callout
>>
>> #0  sched::thread::switch_to (this=0xffffffffffffffb0, 
>> this@entry=0xffff800003195040) at arch/x64/arch-switch.hh:108
>> #1  0x00000000403ff804 in sched::cpu::reschedule_from_interrupt 
>> (this=0xffff800000013040, called_from_yield=called_from_yield@entry=false, 
>> preempt_after=..., preempt_after@entry=...)
>>     at core/sched.cc:339
>> #2  0x00000000403ffcfc in sched::cpu::schedule () at 
>> include/osv/sched.hh:1310
>> #3  0x00000000404003e2 in sched::thread::wait 
>> (this=this@entry=0xffff800000b34040) at core/sched.cc:1214
>> #4  0x00000000402625e9 in 
>> sched::thread::do_wait_until<sched::noninterruptible, lockfree::mutex, 
>> _callout_thread()::<lambda()> > (mtx=..., pred=...) at 
>> include/osv/mutex.h:41
>> #5  sched::thread::wait_until<_callout_thread()::<lambda()> > (pred=..., 
>> mtx=...) at include/osv/sched.hh:1084
>> #6  _callout_thread () at bsd/porting/callout.cc:138
>> #7  0x0000000040401187 in sched::thread_main_c (t=0xffff800000b34040) at 
>> arch/x64/arch-switch.hh:321
>> #8  0x00000000403a7113 in thread_main () at arch/x64/entry.S:113
>>
>> thread 0xffff800000b4d040 system_taskq_0
>>
>> #0  sched::thread::switch_to (this=0xffffffffffffffb0, 
>> this@entry=0x408acdf0) at arch/x64/arch-switch.hh:108
>> #1  0x00000000403ff804 in sched::cpu::reschedule_from_interrupt 
>> (this=0xffff800000013040, called_from_yield=called_from_yield@entry=false, 
>> preempt_after=..., preempt_after@entry=...)
>>     at core/sched.cc:339
>> #2  0x00000000403ffcfc in sched::cpu::schedule () at 
>> include/osv/sched.hh:1310
>> #3  0x00000000404003e2 in sched::thread::wait 
>> (this=this@entry=0xffff800000b4d040) at core/sched.cc:1214
>> #4  0x000000004026355a in 
>> sched::thread::do_wait_until<sched::interruptible, 
>> sched::thread::dummy_lock, synch_port::_msleep(void*, mtx*, int, char 
>> const*, int)::<lambda()> > (
>>     mtx=<synthetic pointer>..., pred=...) at 
>> /usr/include/c++/8/bits/atomic_base.h:390
>> #5  sched::thread::wait_until_interruptible<synch_port::_msleep(void*, 
>> mtx*, int, char const*, int)::<lambda()> > (pred=...) at 
>> include/osv/sched.hh:1099
>> #6  synch_port::_msleep (this=0xffffa000001ff500, chan=<optimized out>, 
>> mtx=0xffffa000001ff630, priority=<optimized out>, wmesg=<optimized out>, 
>> timo_hz=0) at bsd/porting/synch.cc:101
>> #7  0x000000004025db0b in TQ_SLEEP (tq=0xffffa000001ff600, t=0, 
>> wm=0x406ab8fd "-", pri=0, m=0xffffa000001ff630, p=0xffffa000001ff600) at 
>> bsd/sys/kern/subr_taskqueue.c:474
>> #8  taskqueue_thread_loop (arg=<optimized out>) at 
>> bsd/sys/kern/subr_taskqueue.c:474
>> #9  0x0000000040401187 in sched::thread_main_c (t=0xffff800000b4d040) at 
>> arch/x64/arch-switch.hh:321
>> #10 0x00000000403a7113 in thread_main () at arch/x64/entry.S:113
>>
>> thread 0xffff800000b58040 system_taskq_1
>>
>> #0  sched::thread::switch_to (this=0xffffffffffffffb0, 
>> this@entry=0x408acdf0) at arch/x64/arch-switch.hh:108
>> #1  0x00000000403ff804 in sched::cpu::reschedule_from_interrupt 
>> (this=0xffff800000013040, called_from_yield=called_from_yield@entry=false, 
>> preempt_after=..., preempt_after@entry=...)
>>     at core/sched.cc:339
>> #2  0x00000000403ffcfc in sched::cpu::schedule () at 
>> include/osv/sched.hh:1310
>> #3  0x00000000404003e2 in sched::thread::wait 
>> (this=this@entry=0xffff800000b58040) at core/sched.cc:1214
>> #4  0x000000004026355a in 
>> sched::thread::do_wait_until<sched::interruptible, 
>> sched::thread::dummy_lock, synch_port::_msleep(void*, mtx*, int, char 
>> const*, int)::<lambda()> > (
>>     mtx=<synthetic pointer>..., pred=...) at 
>> /usr/include/c++/8/bits/atomic_base.h:390
>> #5  sched::thread::wait_until_interruptible<synch_port::_msleep(void*, 
>> mtx*, int, char const*, int)::<lambda()> > (pred=...) at 
>> include/osv/sched.hh:1099
>> #6  synch_port::_msleep (this=0xffffa000001ff500, chan=<optimized out>, 
>> mtx=0xffffa000001ff630, priority=<optimized out>, wmesg=<optimized out>, 
>> timo_hz=0) at bsd/porting/synch.cc:101
>> #7  0x000000004025db0b in TQ_SLEEP (tq=0xffffa000001ff600, t=0, 
>> wm=0x406ab8fd "-", pri=0, m=0xffffa000001ff630, p=0xffffa000001ff600) at 
>> bsd/sys/kern/subr_taskqueue.c:474
>> #8  taskqueue_thread_loop (arg=<optimized out>) at 
>> bsd/sys/kern/subr_taskqueue.c:474
>> #9  0x0000000040401187 in sched::thread_main_c (t=0xffff800000b58040) at 
>> arch/x64/arch-switch.hh:321
>> #10 0x00000000403a7113 in thread_main () at arch/x64/entry.S:113
>>
>> thread 0xffff800000b63040 system_taskq_2
>>
>> #0  sched::thread::switch_to (this=0xffffffffffffffb0, 
>> this@entry=0x408acdf0) at arch/x64/arch-switch.hh:108
>> #1  0x00000000403ff804 in sched::cpu::reschedule_from_interrupt 
>> (this=0xffff800000013040, called_from_yield=called_from_yield@entry=false, 
>> preempt_after=..., preempt_after@entry=...)
>>     at core/sched.cc:339
>> #2  0x00000000403ffcfc in sched::cpu::schedule () at 
>> include/osv/sched.hh:1310
>> #3  0x00000000404003e2 in sched::thread::wait 
>> (this=this@entry=0xffff800000b63040) at core/sched.cc:1214
>> #4  0x000000004026355a in 
>> sched::thread::do_wait_until<sched::interruptible, 
>> sched::thread::dummy_lock, synch_port::_msleep(void*, mtx*, int, char 
>> const*, int)::<lambda()> > (
>>     mtx=<synthetic pointer>..., pred=...) at 
>> /usr/include/c++/8/bits/atomic_base.h:390
>> #5  sched::thread::wait_until_interruptible<synch_port::_msleep(void*, 
>> mtx*, int, char const*, int)::<lambda()> > (pred=...) at 
>> include/osv/sched.hh:1099
>> #6  synch_port::_msleep (this=0xffffa000001ff500, chan=<optimized out>, 
>> mtx=0xffffa000001ff630, priority=<optimized out>, wmesg=<optimized out>, 
>> timo_hz=0) at bsd/porting/synch.cc:101
>> #7  0x000000004025db0b in TQ_SLEEP (tq=0xffffa000001ff600, t=0, 
>> wm=0x406ab8fd "-", pri=0, m=0xffffa000001ff630, p=0xffffa000001ff600) at 
>> bsd/sys/kern/subr_taskqueue.c:474
>> #8  taskqueue_thread_loop (arg=<optimized out>) at 
>> bsd/sys/kern/subr_taskqueue.c:474
>> #9  0x0000000040401187 in sched::thread_main_c (t=0xffff800000b63040) at 
>> arch/x64/arch-switch.hh:321
>> #10 0x00000000403a7113 in thread_main () at arch/x64/entry.S:113
>>
>> thread 0xffff800000b6e040 system_taskq_3
>>
>> #0  sched::thread::switch_to (this=0xffffffffffffffb0, 
>> this@entry=0x408acdf0) at arch/x64/arch-switch.hh:108
>> #1  0x00000000403ff804 in sched::cpu::reschedule_from_interrupt 
>> (this=0xffff800000013040, called_from_yield=called_from_yield@entry=false, 
>> preempt_after=..., preempt_after@entry=...)
>>     at core/sched.cc:339
>> #2  0x00000000403ffcfc in sched::cpu::schedule () at 
>> include/osv/sched.hh:1310
>> #3  0x00000000404003e2 in sched::thread::wait 
>> (this=this@entry=0xffff800000b6e040) at core/sched.cc:1214
>> #4  0x000000004026355a in 
>> sched::thread::do_wait_until<sched::interruptible, 
>> sched::thread::dummy_lock, synch_port::_msleep(void*, mtx*, int, char 
>> const*, int)::<lambda()> > (
>>     mtx=<synthetic pointer>..., pred=...) at 
>> /usr/include/c++/8/bits/atomic_base.h:390
>> #5  sched::thread::wait_until_interruptible<synch_port::_msleep(void*, 
>> mtx*, int, char const*, int)::<lambda()> > (pred=...) at 
>> include/osv/sched.hh:1099
>> #6  synch_port::_msleep (this=0xffffa000001ff500, chan=<optimized out>, 
>> mtx=0xffffa000001ff630, priority=<optimized out>, wmesg=<optimized out>, 
>> timo_hz=0) at bsd/porting/synch.cc:101
>> #7  0x000000004025db0b in TQ_SLEEP (tq=0xffffa000001ff600, t=0, 
>> wm=0x406ab8fd "-", pri=0, m=0xffffa000001ff630, p=0xffffa000001ff600) at 
>> bsd/sys/kern/subr_taskqueue.c:474
>> #8  taskqueue_thread_loop (arg=<optimized out>) at 
>> bsd/sys/kern/subr_taskqueue.c:474
>> #9  0x0000000040401187 in sched::thread_main_c (t=0xffff800000b6e040) at 
>> arch/x64/arch-switch.hh:321
>> #10 0x00000000403a7113 in thread_main () at arch/x64/entry.S:113
>>
>> thread 0xffff800000b79040 system_taskq_4
>>
>> #0  sched::thread::switch_to (this=0xffffffffffffffb0, 
>> this@entry=0x408acdf0) at arch/x64/arch-switch.hh:108
>> #1  0x00000000403ff804 in sched::cpu::reschedule_from_interrupt 
>> (this=0xffff800000013040, called_from_yield=called_from_yield@entry=false, 
>> preempt_after=..., preempt_after@entry=...)
>>     at core/sched.cc:339
>> #2  0x00000000403ffcfc in sched::cpu::schedule () at 
>> include/osv/sched.hh:1310
>> #3  0x00000000404003e2 in sched::thread::wait 
>> (this=this@entry=0xffff800000b79040) at core/sched.cc:1214
>> #4  0x000000004026355a in 
>> sched::thread::do_wait_until<sched::interruptible, 
>> sched::thread::dummy_lock, synch_port::_msleep(void*, mtx*, int, char 
>> const*, int)::<lambda()> > (
>>     mtx=<synthetic pointer>..., pred=...) at 
>> /usr/include/c++/8/bits/atomic_base.h:390
>> #5  sched::thread::wait_until_interruptible<synch_port::_msleep(void*, 
>> mtx*, int, char const*, int)::<lambda()> > (pred=...) at 
>> include/osv/sched.hh:1099
>> #6  synch_port::_msleep (this=0xffffa000001ff500, chan=<optimized out>, 
>> mtx=0xffffa000001ff630, priority=<optimized out>, wmesg=<optimized out>, 
>> timo_hz=0) at bsd/porting/synch.cc:101
>> #7  0x000000004025db0b in TQ_SLEEP (tq=0xffffa000001ff600, t=0, 
>> wm=0x406ab8fd "-", pri=0, m=0xffffa000001ff630, p=0xffffa000001ff600) at 
>> bsd/sys/kern/subr_taskqueue.c:474
>> #8  taskqueue_thread_loop (arg=<optimized out>) at 
>> bsd/sys/kern/subr_taskqueue.c:474
>> #9  0x0000000040401187 in sched::thread_main_c (t=0xffff800000b79040) at 
>> arch/x64/arch-switch.hh:321
>> #10 0x00000000403a7113 in thread_main () at arch/x64/entry.S:113
>>
>> thread 0xffff800000b84040 system_taskq_5
>>
>> #0  sched::thread::switch_to (this=0xffffffffffffffb0, 
>> this@entry=0x408acdf0) at arch/x64/arch-switch.hh:108
>> #1  0x00000000403ff804 in sched::cpu::reschedule_from_interrupt 
>> (this=0xffff800000013040, called_from_yield=called_from_yield@entry=false, 
>> preempt_after=..., preempt_after@entry=...)
>>     at core/sched.cc:339
>> #2  0x00000000403ffcfc in sched::cpu::schedule () at 
>> include/osv/sched.hh:1310
>> #3  0x00000000404003e2 in sched::thread::wait 
>> (this=this@entry=0xffff800000b84040) at core/sched.cc:1214
>> #4  0x000000004026355a in 
>> sched::thread::do_wait_until<sched::interruptible, 
>> sched::thread::dummy_lock, synch_port::_msleep(void*, mtx*, int, char 
>> const*, int)::<lambda()> > (
>>     mtx=<synthetic pointer>..., pred=...) at 
>> /usr/include/c++/8/bits/atomic_base.h:390
>> #5  sched::thread::wait_until_interruptible<synch_port::_msleep(void*, 
>> mtx*, int, char const*, int)::<lambda()> > (pred=...) at 
>> include/osv/sched.hh:1099
>> #6  synch_port::_msleep (this=0xffffa000001ff500, chan=<optimized out>, 
>> mtx=0xffffa000001ff630, priority=<optimized out>, wmesg=<optimized out>, 
>> timo_hz=0) at bsd/porting/synch.cc:101
>> #7  0x000000004025db0b in TQ_SLEEP (tq=0xffffa000001ff600, t=0, 
>> wm=0x406ab8fd "-", pri=0, m=0xffffa000001ff630, p=0xffffa000001ff600) at 
>> bsd/sys/kern/subr_taskqueue.c:474
>> #8  taskqueue_thread_loop (arg=<optimized out>) at 
>> bsd/sys/kern/subr_taskqueue.c:474
>> #9  0x0000000040401187 in sched::thread_main_c (t=0xffff800000b84040) at 
>> arch/x64/arch-switch.hh:321
>> #10 0x00000000403a7113 in thread_main () at arch/x64/entry.S:113
>>
>> thread 0xffff800000b8f040 system_taskq_6
>>
>> #0  sched::thread::switch_to (this=0xffffffffffffffb0, 
>> this@entry=0x408acdf0) at arch/x64/arch-switch.hh:108
>> #1  0x00000000403ff804 in sched::cpu::reschedule_from_interrupt 
>> (this=0xffff800000013040, called_from_yield=called_from_yield@entry=false, 
>> preempt_after=..., preempt_after@entry=...)
>>     at core/sched.cc:339
>> #2  0x00000000403ffcfc in sched::cpu::schedule () at 
>> include/osv/sched.hh:1310
>> #3  0x00000000404003e2 in sched::thread::wait 
>> (this=this@entry=0xffff800000b8f040) at core/sched.cc:1214
>> #4  0x000000004026355a in 
>> sched::thread::do_wait_until<sched::interruptible, 
>> sched::thread::dummy_lock, synch_port::_msleep(void*, mtx*, int, char 
>> const*, int)::<lambda()> > (
>>     mtx=<synthetic pointer>..., pred=...) at 
>> /usr/include/c++/8/bits/atomic_base.h:390
>> #5  sched::thread::wait_until_interruptible<synch_port::_msleep(void*, 
>> mtx*, int, char const*, int)::<lambda()> > (pred=...) at 
>> include/osv/sched.hh:1099
>> #6  synch_port::_msleep (this=0xffffa000001ff500, chan=<optimized out>, 
>> mtx=0xffffa000001ff630, priority=<optimized out>, wmesg=<optimized out>, 
>> timo_hz=0) at bsd/porting/synch.cc:101
>> #7  0x000000004025db0b in TQ_SLEEP (tq=0xffffa000001ff600, t=0, 
>> wm=0x406ab8fd "-", pri=0, m=0xffffa000001ff630, p=0xffffa000001ff600) at 
>> bsd/sys/kern/subr_taskqueue.c:474
>> #8  taskqueue_thread_loop (arg=<optimized out>) at 
>> bsd/sys/kern/subr_taskqueue.c:474
>> #9  0x0000000040401187 in sched::thread_main_c (t=0xffff800000b8f040) at 
>> arch/x64/arch-switch.hh:321
>> #10 0x00000000403a7113 in thread_main () at arch/x64/entry.S:113
>>
>> thread 0xffff800000b9a040 system_taskq_7
>>
>> #0  sched::thread::switch_to (this=0xffffffffffffffb0, 
>> this@entry=0x408acdf0) at arch/x64/arch-switch.hh:108
>> #1  0x00000000403ff804 in sched::cpu::reschedule_from_interrupt 
>> (this=0xffff800000013040, called_from_yield=called_from_yield@entry=false, 
>> preempt_after=..., preempt_after@entry=...)
>>     at core/sched.cc:339
>> #2  0x00000000403ffcfc in sched::cpu::schedule () at 
>> include/osv/sched.hh:1310
>> #3  0x00000000404003e2 in sched::thread::wait 
>> (this=this@entry=0xffff800000b9a040) at core/sched.cc:1214
>> #4  0x000000004026355a in 
>> sched::thread::do_wait_until<sched::interruptible, 
>> sched::thread::dummy_lock, synch_port::_msleep(void*, mtx*, int, char 
>> const*, int)::<lambda()> > (
>>     mtx=<synthetic pointer>..., pred=...) at 
>> /usr/include/c++/8/bits/atomic_base.h:390
>> #5  sched::thread::wait_until_interruptible<synch_port::_msleep(void*, 
>> mtx*, int, char const*, int)::<lambda()> > (pred=...) at 
>> include/osv/sched.hh:1099
>> #6  synch_port::_msleep (this=0xffffa000001ff500, chan=<optimized out>, 
>> mtx=0xffffa000001ff630, priority=<optimized out>, wmesg=<optimized out>, 
>> timo_hz=0) at bsd/porting/synch.cc:101
>> #7  0x000000004025db0b in TQ_SLEEP (tq=0xffffa000001ff600, t=0, 
>> wm=0x406ab8fd "-", pri=0, m=0xffffa000001ff630, p=0xffffa000001ff600) at 
>> bsd/sys/kern/subr_taskqueue.c:474
>> #8  taskqueue_thread_loop (arg=<optimized out>) at 
>> bsd/sys/kern/subr_taskqueue.c:474
>> #9  0x0000000040401187 in sched::thread_main_c (t=0xffff800000b9a040) at 
>> arch/x64/arch-switch.hh:321
>> #10 0x00000000403a7113 in thread_main () at arch/x64/entry.S:113
>>
>> thread 0xffff800000fe9040 solthread-0x402
>>
>> #0  sched::thread::switch_to (this=0xffffffffffffffb0, 
>> this@entry=0xffff800000ff4040) at arch/x64/arch-switch.hh:108
>> #1  0x00000000403ff804 in sched::cpu::reschedule_from_interrupt 
>> (this=0xffff800000013040, called_from_yield=called_from_yield@entry=false, 
>> preempt_after=..., preempt_after@entry=...)
>>
>> ...
>
>

-- 
You received this message because you are subscribed to the Google Groups "OSv 
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to osv-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/osv-dev/e24a4a3a-17be-4013-9d7b-491558092743%40googlegroups.com.

Reply via email to