Skip to content

Instantly share code, notes, and snippets.

@kennyyu
Created April 28, 2021 21:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kennyyu/2d58c41b95e592bbfd8db9ca6dbd5027 to your computer and use it in GitHub Desktop.
Save kennyyu/2d58c41b95e592bbfd8db9ca6dbd5027 to your computer and use it in GitHub Desktop.
#include <folly/executors/CPUThreadPoolExecutor.h>
#include <folly/experimental/coro/BlockingWait.h>
#include <folly/experimental/coro/Task.h>
#include <folly/init/Init.h>
#include <folly/synchronization/Baton.h>
#include <glog/logging.h>
namespace {
// Disallow inlining of the functions below so that we can see the functions
// in the stack straces.
FOLLY_NOINLINE void funcF() {
LOG(INFO) << __FUNCTION__;
LOG(FATAL) << "Crash";
}
FOLLY_NOINLINE void funcE() {
LOG(INFO) << __FUNCTION__;
funcF();
}
FOLLY_NOINLINE folly::coro::Task<void> co_funcD() {
LOG(INFO) << __FUNCTION__;
funcE();
co_return;
}
FOLLY_NOINLINE folly::coro::Task<void> co_funcC() {
LOG(INFO) << __FUNCTION__;
co_await co_funcD();
}
FOLLY_NOINLINE void funcB2_blocking() {
LOG(INFO) << __FUNCTION__;
// This should trigger a new AsyncStackRoot
folly::coro::blockingWait(co_funcC());
}
FOLLY_NOINLINE void funcB1() {
LOG(INFO) << __FUNCTION__;
funcB2_blocking();
}
FOLLY_NOINLINE folly::coro::Task<void> co_funcB() {
LOG(INFO) << __FUNCTION__;
funcB1();
co_return;
}
FOLLY_NOINLINE folly::coro::Task<void> co_funcA2() {
LOG(INFO) << __FUNCTION__;
co_await co_funcB();
}
FOLLY_NOINLINE folly::coro::Task<void> co_funcA1() {
LOG(INFO) << __FUNCTION__;
co_await co_funcA2();
}
FOLLY_NOINLINE folly::coro::Task<void> co_funcA(folly::Baton<>& baton) {
LOG(INFO) << __FUNCTION__;
co_await co_funcA1();
baton.post();
}
} // namespace
int main(int argc, char** argv) {
folly::init(&argc, &argv);
folly::CPUThreadPoolExecutor executor(1);
folly::Baton<> baton;
// Starts the first AsyncStackRoot
co_funcA(baton).scheduleOn(&executor).start();
baton.wait();
return 0;
}
I0428 14:06:31.563745 297081 main.cpp:62] co_funcA
I0428 14:06:31.563987 297081 main.cpp:57] co_funcA1
I0428 14:06:31.564036 297081 main.cpp:52] co_funcA2
I0428 14:06:31.564088 297081 main.cpp:46] co_funcB
I0428 14:06:31.564147 297081 main.cpp:41] funcB1
I0428 14:06:31.564198 297081 main.cpp:35] funcB2_blocking
I0428 14:06:31.564533 297081 main.cpp:30] co_funcC
I0428 14:06:31.564572 297081 main.cpp:24] co_funcD
I0428 14:06:31.564615 297081 main.cpp:19] funcE
I0428 14:06:31.564643 297081 main.cpp:14] funcF
F0428 14:06:31.564657 297081 main.cpp:15] Crash
*** Check failure stack trace: ***
*** Aborted at 1619643991 (Unix time, try 'date -d @1619643991') ***
*** Signal 6 (SIGABRT) (0x1cd10004819e) received by PID 295326 (pthread TID 0x7f88c6245700) (linux TID 297081) (maybe from PID 295326, UID 7377) (code: -6), stack trace: ***
@ 00000000000189fb folly::symbolizer::(anonymous namespace)::innerSignalHandler(int, siginfo_t*, void*)
./folly/experimental/symbolizer/SignalHandler.cpp:449
@ 00000000000101eb folly::symbolizer::(anonymous namespace)::signalHandler(int, siginfo_t*, void*)
./folly/experimental/symbolizer/SignalHandler.cpp:470
@ 0000000000000000 (unknown)
@ 000000000003e570 __GI_raise
@ 00000000000254ec __GI_abort
@ 000000000000dbac google::LogMessage::Fail()
/home/engshare/third-party2/glog/0.3.2_fb/src/glog-0.3.2/src/logging.cc:1519
@ 00000000000109f2 google::LogMessage::SendToLog()
/home/engshare/third-party2/glog/0.3.2_fb/src/glog-0.3.2/src/logging.cc:1473
@ 000000000000d7f2 google::LogMessage::Flush()
/home/engshare/third-party2/glog/0.3.2_fb/src/glog-0.3.2/src/logging.cc:1346
@ 000000000000eaa8 google::LogMessageFatal::~LogMessageFatal()
/home/engshare/third-party2/glog/0.3.2_fb/src/glog-0.3.2/src/logging.cc:2013
@ 00000000002b8490 (anonymous namespace)::funcF()
./scripts/kennyyu/coroutines/main.cpp:15
@ 00000000002b8250 (anonymous namespace)::funcE()
./scripts/kennyyu/coroutines/main.cpp:20
@ 00000000002c6d53 (anonymous namespace)::co_funcD() [clone .resume]
./scripts/kennyyu/coroutines/main.cpp:25
@ 0000000000004c39 std::__n4861::coroutine_handle<void>::resume() const
./third-party-buck/platform009/build/libgcc/include/c++/9.x/coroutine:127
-> ./folly/tracing/AsyncStack.cpp
@ 0000000000004af9 folly::resumeCoroutineWithNewAsyncStackRoot(std::__n4861::coroutine_handle<void>, folly::AsyncStackFrame&)
./folly/tracing/AsyncStack.cpp:178
@ 00000000002b6752 void folly::resumeCoroutineWithNewAsyncStackRoot<folly::coro::detail::BlockingWaitPromise<void> >(std::__n4861::coroutine_handle<folly::coro::detail::BlockingWaitPromise<void> >)
./buck-out/dev/gen/aab7ed39/folly/tracing/async_stack#header-mode-symlink-tree-with-header-map,headers/folly/tracing/AsyncStack-inl.h:88
-> ./scripts/kennyyu/coroutines/main.cpp
@ 00000000002b6531 folly::coro::detail::BlockingWaitTask<void>::getVia(folly::DrivableExecutor*, folly::AsyncStackFrame&) &&::{lambda()#1}::operator()()
./buck-out/dev/gen/aab7ed39/folly/experimental/coro/blocking_wait#header-mode-symlink-tree-with-header-map,headers/folly/experimental/coro/BlockingWait.h:233
-> ./scripts/kennyyu/coroutines/main.cpp
@ 00000000002b60cc void folly::detail::function::FunctionTraits<void ()>::callSmall<folly::coro::detail::BlockingWaitTask<void>::getVia(folly::DrivableExecutor*, folly::AsyncStackFrame&) &&::{lambda()#1}>(folly::detail::function::Data&)
./buck-out/dev/gen/aab7ed39/folly/function#header-mode-symlink-tree-with-header-map,headers/folly/Function.h:371
-> ./scripts/kennyyu/coroutines/main.cpp
@ 00000000002afceb folly::detail::function::FunctionTraits<void ()>::operator()()
./buck-out/dev/gen/aab7ed39/folly/function#header-mode-symlink-tree-with-header-map,headers/folly/Function.h:400
-> ./scripts/kennyyu/coroutines/main.cpp
@ 00000000002af892 folly::coro::detail::BlockingWaitExecutor::drive()::{lambda()#1}::operator()() const
./buck-out/dev/gen/aab7ed39/folly/experimental/coro/blocking_wait#header-mode-symlink-tree-with-header-map,headers/folly/experimental/coro/BlockingWait.h:328
-> ./scripts/kennyyu/coroutines/main.cpp
@ 00000000002af144 folly::invoke_detail::traits<folly::coro::detail::BlockingWaitExecutor::drive()::{lambda()#1}>::result<> folly::fibers::(anonymous namespace)::runNoInline<folly::coro::detail::BlockingWaitExecutor::drive()::{lambda()#1}>(folly::invoke_detail::traits&&)
./buck-out/dev/gen/aab7ed39/folly/fibers/core#header-mode-symlink-tree-with-header-map,headers/folly/fibers/FiberManagerInternal-inl.h:52
-> ./scripts/kennyyu/coroutines/main.cpp
@ 00000000002af0b0 folly::invoke_detail::traits<folly::coro::detail::BlockingWaitExecutor::drive()::{lambda()#1}>::result<> folly::fibers::runInMainContext<folly::coro::detail::BlockingWaitExecutor::drive()::{lambda()#1}>(folly::invoke_detail::traits&&)
./buck-out/dev/gen/aab7ed39/folly/fibers/core#header-mode-symlink-tree-with-header-map,headers/folly/fibers/FiberManagerInternal-inl.h:655
-> ./scripts/kennyyu/coroutines/main.cpp
@ 00000000002ab32e folly::coro::detail::BlockingWaitExecutor::drive()
./buck-out/dev/gen/aab7ed39/folly/experimental/coro/blocking_wait#header-mode-symlink-tree-with-header-map,headers/folly/experimental/coro/BlockingWait.h:324
-> ./scripts/kennyyu/coroutines/main.cpp
@ 00000000002b32f3 folly::coro::detail::BlockingWaitTask<void>::getVia(folly::DrivableExecutor*, folly::AsyncStackFrame&) &&
./buck-out/dev/gen/aab7ed39/folly/experimental/coro/blocking_wait#header-mode-symlink-tree-with-header-map,headers/folly/experimental/coro/BlockingWait.h:236
-> ./scripts/kennyyu/coroutines/main.cpp
@ 00000000002a8cc0 _ZNK5folly4coro16blocking_wait_fnclINS0_4TaskIvEEEENS0_6detail22decay_rvalue_referenceINS0_12await_resultIDTclL_ZNS0_11folly_cpo__13co_viaIfAsyncEEclL_ZSt7declvalINS_8Executor9KeepAliveISA_EEEDTcl9__declvalIT_ELi0EEEvEEclsr3stdE7declvalISD_EEEEvE4typeEE4typeEOSD_PNS_16DrivableExecutorE
./buck-out/dev/gen/aab7ed39/folly/experimental/coro/blocking_wait#header-mode-symlink-tree-with-header-map,headers/folly/experimental/coro/BlockingWait.h:416
-> ./scripts/kennyyu/coroutines/main.cpp
@ 00000000002a7ae4 _ZNK5folly4coro16blocking_wait_fnclINS0_4TaskIvEELi0EEENS0_6detail22decay_rvalue_referenceINS0_12await_resultIDTclL_ZNS0_11folly_cpo__13co_viaIfAsyncEEclL_ZSt7declvalINS_8Executor9KeepAliveISA_EEEDTcl9__declvalIT_ELi0EEEvEEclsr3stdE7declvalISD_EEEEvE4typeEE4typeEOSD_
./buck-out/dev/gen/aab7ed39/folly/experimental/coro/blocking_wait#header-mode-symlink-tree-with-header-map,headers/folly/experimental/coro/BlockingWait.h:428
-> ./scripts/kennyyu/coroutines/main.cpp
@ 00000000002a783d (anonymous namespace)::funcB2_blocking()
./scripts/kennyyu/coroutines/main.cpp:37
@ 00000000002a7630 (anonymous namespace)::funcB1()
./scripts/kennyyu/coroutines/main.cpp:42
@ 00000000002cb3d3 (anonymous namespace)::co_funcB() [clone .resume]
./scripts/kennyyu/coroutines/main.cpp:47
@ 0000000000004c39 std::__n4861::coroutine_handle<void>::resume() const
./third-party-buck/platform009/build/libgcc/include/c++/9.x/coroutine:127
-> ./folly/tracing/AsyncStack.cpp
@ 0000000000004af9 folly::resumeCoroutineWithNewAsyncStackRoot(std::__n4861::coroutine_handle<void>, folly::AsyncStackFrame&)
./folly/tracing/AsyncStack.cpp:178
@ 00000000002c5872 void folly::resumeCoroutineWithNewAsyncStackRoot<folly::coro::detail::TaskPromise<void> >(std::__n4861::coroutine_handle<folly::coro::detail::TaskPromise<void> >)
./buck-out/dev/gen/aab7ed39/folly/tracing/async_stack#header-mode-symlink-tree-with-header-map,headers/folly/tracing/AsyncStack-inl.h:88
-> ./scripts/kennyyu/coroutines/main.cpp
@ 00000000002c5691 folly::coro::TaskWithExecutor<void>::Awaiter::await_suspend<folly::coro::detail::InlineTaskDetached::promise_type>(std::__n4861::coroutine_handle<folly::coro::detail::InlineTaskDetached::promise_type>)::{lambda()#1}::operator()()
./buck-out/dev/gen/aab7ed39/folly/experimental/coro/task#header-mode-symlink-tree-with-header-map,headers/folly/experimental/coro/Task.h:432
-> ./scripts/kennyyu/coroutines/main.cpp
@ 00000000002c548c void folly::detail::function::FunctionTraits<void ()>::callSmall<folly::coro::TaskWithExecutor<void>::Awaiter::await_suspend<folly::coro::detail::InlineTaskDetached::promise_type>(std::__n4861::coroutine_handle<folly::coro::detail::InlineTaskDetached::promise_type>)::{lambda()#1}>(folly::detail::function::Data&)
./buck-out/dev/gen/aab7ed39/folly/function#header-mode-symlink-tree-with-header-map,headers/folly/Function.h:371
-> ./scripts/kennyyu/coroutines/main.cpp
@ 000000000006c5fb folly::detail::function::FunctionTraits<void ()>::operator()()
./buck-out/dev/gen/aab7ed39/folly/function#header-mode-symlink-tree-with-header-map,headers/folly/Function.h:400
-> ./folly/executors/ThreadPoolExecutor.cpp
@ 000000000006c50e folly::Executor::invokeCatchingExns<folly::Function<void ()> >(char const*, folly::Function<void ()>)::{lambda()#1}::operator()() const
./buck-out/dev/gen/aab7ed39/folly/lang/exception#header-mode-symlink-tree-with-header-map,headers/folly/lang/Exception.h:214
-> ./folly/executors/ThreadPoolExecutor.cpp
@ 000000000002faaf folly::ThreadPoolExecutor::runTask(std::shared_ptr<folly::ThreadPoolExecutor::Thread> const&, folly::ThreadPoolExecutor::Task&&)
./buck-out/dev/gen/aab7ed39/folly/lang/exception#header-mode-symlink-tree-with-header-map,headers/folly/lang/Exception.h:253
-> ./folly/executors/ThreadPoolExecutor.cpp
@ 0000000000063e1a folly::CPUThreadPoolExecutor::threadRun(std::shared_ptr<folly::ThreadPoolExecutor::Thread>)
./folly/executors/CPUThreadPoolExecutor.cpp:279
@ 000000000007200c void std::__invoke_impl<void, void (folly::ThreadPoolExecutor::*&)(std::shared_ptr<folly::ThreadPoolExecutor::Thread>), folly::ThreadPoolExecutor*&, std::shared_ptr<folly::ThreadPoolExecutor::Thread>&>(std::__invoke_memfun_deref, void (folly::ThreadPoolExecutor::*&)(std::shared_ptr<folly::ThreadPoolExecutor::Thread>), folly::ThreadPoolExecutor*&, std::shared_ptr<folly::ThreadPoolExecutor::Thread>&)
./third-party-buck/platform009/build/libgcc/include/c++/9.x/bits/invoke.h:73
-> ./folly/executors/ThreadPoolExecutor.cpp
@ 0000000000071d26 std::__invoke_result<void (folly::ThreadPoolExecutor::*&)(std::shared_ptr<folly::ThreadPoolExecutor::Thread>), folly::ThreadPoolExecutor*&, std::shared_ptr<folly::ThreadPoolExecutor::Thread>&>::type std::__invoke<void (folly::ThreadPoolExecutor::*&)(std::shared_ptr<folly::ThreadPoolExecutor::Thread>), folly::ThreadPoolExecutor*&, std::shared_ptr<folly::ThreadPoolExecutor::Thread>&>(void (folly::ThreadPoolExecutor::*&)(std::shared_ptr<folly::ThreadPoolExecutor::Thread>), folly::ThreadPoolExecutor*&, std::shared_ptr<folly::ThreadPoolExecutor::Thread>&)
./third-party-buck/platform009/build/libgcc/include/c++/9.x/bits/invoke.h:95
-> ./folly/executors/ThreadPoolExecutor.cpp
@ 0000000000071c6b void std::_Bind<void (folly::ThreadPoolExecutor::*(folly::ThreadPoolExecutor*, std::shared_ptr<folly::ThreadPoolExecutor::Thread>))(std::shared_ptr<folly::ThreadPoolExecutor::Thread>)>::__call<void, , 0ul, 1ul>(std::tuple<>&&, std::_Index_tuple<0ul, 1ul>)
./third-party-buck/platform009/build/libgcc/include/c++/9.x/functional:400
-> ./folly/executors/ThreadPoolExecutor.cpp
@ 0000000000071ab7 void std::_Bind<void (folly::ThreadPoolExecutor::*(folly::ThreadPoolExecutor*, std::shared_ptr<folly::ThreadPoolExecutor::Thread>))(std::shared_ptr<folly::ThreadPoolExecutor::Thread>)>::operator()<, void>()
./third-party-buck/platform009/build/libgcc/include/c++/9.x/functional:482
-> ./folly/executors/ThreadPoolExecutor.cpp
@ 0000000000071654 void folly::detail::function::FunctionTraits<void ()>::callBig<std::_Bind<void (folly::ThreadPoolExecutor::*(folly::ThreadPoolExecutor*, std::shared_ptr<folly::ThreadPoolExecutor::Thread>))(std::shared_ptr<folly::ThreadPoolExecutor::Thread>)> >(folly::detail::function::Data&)
./buck-out/dev/gen/aab7ed39/folly/function#header-mode-symlink-tree-with-header-map,headers/folly/Function.h:385
-> ./folly/executors/ThreadPoolExecutor.cpp
@ 00000000001014bb folly::detail::function::FunctionTraits<void ()>::operator()()
./buck-out/dev/gen/aab7ed39/folly/function#header-mode-symlink-tree-with-header-map,headers/folly/Function.h:400
-> ./folly/executors/CPUThreadPoolExecutor.cpp
@ 0000000000101305 folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}::operator()()
./buck-out/dev/gen/aab7ed39/folly/executors/thread_factory/named_thread_factory#header-mode-symlink-tree-with-header-map,headers/folly/executors/thread_factory/NamedThreadFactory.h:40
-> ./folly/executors/CPUThreadPoolExecutor.cpp
@ 000000000010118c void std::__invoke_impl<void, folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}>(std::__invoke_other, folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}&&)
./third-party-buck/platform009/build/libgcc/include/c++/9.x/bits/invoke.h:60
-> ./folly/executors/CPUThreadPoolExecutor.cpp
@ 000000000010111c std::__invoke_result<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}>::type std::__invoke<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}>(std::__invoke_result&&, (folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}&&)...)
./third-party-buck/platform009/build/libgcc/include/c++/9.x/bits/invoke.h:95
-> ./folly/executors/CPUThreadPoolExecutor.cpp
@ 00000000001010f4 void std::thread::_Invoker<std::tuple<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}> >::_M_invoke<0ul>(std::_Index_tuple<0ul>)
./third-party-buck/platform009/build/libgcc/include/c++/9.x/thread:244
-> ./folly/executors/CPUThreadPoolExecutor.cpp
@ 00000000001010c4 std::thread::_Invoker<std::tuple<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}> >::operator()()
./third-party-buck/platform009/build/libgcc/include/c++/9.x/thread:251
-> ./folly/executors/CPUThreadPoolExecutor.cpp
@ 0000000000100f4d std::thread::_State_impl<std::thread::_Invoker<std::tuple<folly::NamedThreadFactory::newThread(folly::Function<void ()>&&)::{lambda()#1}> > >::_M_run()
./third-party-buck/platform009/build/libgcc/include/c++/9.x/thread:195
-> ./folly/executors/CPUThreadPoolExecutor.cpp
@ 00000000000d9800 execute_native_thread_routine
@ 000000000000920b start_thread
@ 000000000011881e __GI___clone
*** Check failure async stack trace: ***
*** First async stack root: 0x7f88c503a4c0, normal stack frame pointer holding async stack root: 0x7f88c6242cb0, return address: 0x2b6753 ***
*** First async stack frame pointer: 0x60b000005908, return address: 0x2c802a, async stack trace: ***
@ 00000000000101ec folly::symbolizer::(anonymous namespace)::signalHandler(int, siginfo_t*, void*)
./folly/experimental/symbolizer/SignalHandler.cpp:470
@ 0000000000000000 (unknown)
@ 0000000000000000 (unknown)
@ 00000000000109f3 google::LogMessage::SendToLog()
/home/engshare/third-party2/glog/0.3.2_fb/src/glog-0.3.2/src/logging.cc:1473
@ 000000000000d7f3 google::LogMessage::Flush()
/home/engshare/third-party2/glog/0.3.2_fb/src/glog-0.3.2/src/logging.cc:1347
@ 000000000000eaa9 google::LogMessageFatal::~LogMessageFatal()
/home/engshare/third-party2/glog/0.3.2_fb/src/glog-0.3.2/src/logging.cc:2014
@ 00000000002b8491 (anonymous namespace)::funcF()
./scripts/kennyyu/coroutines/main.cpp:15
@ 00000000002b8251 (anonymous namespace)::funcE()
./scripts/kennyyu/coroutines/main.cpp:20
@ 00000000002c6d54 (anonymous namespace)::co_funcD() [clone .resume]
./scripts/kennyyu/coroutines/main.cpp:25
@ 0000000000004c3a std::__n4861::coroutine_handle<void>::resume() const
./third-party-buck/platform009/build/libgcc/include/c++/9.x/coroutine:127
-> ./folly/tracing/AsyncStack.cpp
@ 00000000002c802a (anonymous namespace)::co_funcC() [clone .resume]
./scripts/kennyyu/coroutines/main.cpp:31
@ 00000000002c9ccd folly::coro::detail::BlockingWaitTask<void> folly::coro::detail::makeRefBlockingWaitTask<folly::coro::Task<void>::Awaiter, void, 0>(folly::coro::Task<void>::Awaiter&&) [clone .resume]
./buck-out/dev/gen/aab7ed39/folly/experimental/coro/blocking_wait#header-mode-symlink-tree-with-header-map,headers/folly/experimental/coro/BlockingWait.h:288
-> ./scripts/kennyyu/coroutines/main.cpp
@ 00000000002a8cc1 _ZNK5folly4coro16blocking_wait_fnclINS0_4TaskIvEEEENS0_6detail22decay_rvalue_referenceINS0_12await_resultIDTclL_ZNS0_11folly_cpo__13co_viaIfAsyncEEclL_ZSt7declvalINS_8Executor9KeepAliveISA_EEEDTcl9__declvalIT_ELi0EEEvEEclsr3stdE7declvalISD_EEEEvE4typeEE4typeEOSD_PNS_16DrivableExecutorE
./buck-out/dev/gen/aab7ed39/folly/experimental/coro/blocking_wait#header-mode-symlink-tree-with-header-map,headers/folly/experimental/coro/BlockingWait.h:416
-> ./scripts/kennyyu/coroutines/main.cpp
@ 00000000002a7ae5 _ZNK5folly4coro16blocking_wait_fnclINS0_4TaskIvEELi0EEENS0_6detail22decay_rvalue_referenceINS0_12await_resultIDTclL_ZNS0_11folly_cpo__13co_viaIfAsyncEEclL_ZSt7declvalINS_8Executor9KeepAliveISA_EEEDTcl9__declvalIT_ELi0EEEvEEclsr3stdE7declvalISD_EEEEvE4typeEE4typeEOSD_
./buck-out/dev/gen/aab7ed39/folly/experimental/coro/blocking_wait#header-mode-symlink-tree-with-header-map,headers/folly/experimental/coro/BlockingWait.h:428
-> ./scripts/kennyyu/coroutines/main.cpp
@ 00000000002a783e (anonymous namespace)::funcB2_blocking()
./scripts/kennyyu/coroutines/main.cpp:37
@ 00000000002a7631 (anonymous namespace)::funcB1()
./scripts/kennyyu/coroutines/main.cpp:42
@ 00000000002cb3d4 (anonymous namespace)::co_funcB() [clone .resume]
./scripts/kennyyu/coroutines/main.cpp:47
@ 0000000000004c3a std::__n4861::coroutine_handle<void>::resume() const
./third-party-buck/platform009/build/libgcc/include/c++/9.x/coroutine:127
-> ./folly/tracing/AsyncStack.cpp
@ 00000000002cc6aa (anonymous namespace)::co_funcA2() [clone .resume]
./scripts/kennyyu/coroutines/main.cpp:53
@ 00000000002ce3ca (anonymous namespace)::co_funcA1() [clone .resume]
./scripts/kennyyu/coroutines/main.cpp:58
@ 00000000002d0101 (anonymous namespace)::co_funcA(folly::Baton<true, std::atomic>&) [clone .resume]
./scripts/kennyyu/coroutines/main.cpp:63
@ 00000000002c2747 decltype ((((std::declval<folly::coro::TaskWithExecutor<void>::Awaiter&>)()).await_suspend)({parm#1})) folly::coro::detail::TryAwaiter<folly::coro::TaskWithExecutor<void> >::await_suspend<folly::coro::detail::InlineTaskDetached::promise_type>(std::__n4861::coroutine_handle<folly::coro::detail::InlineTaskDetached::promise_type>)
./buck-out/dev/gen/aab7ed39/folly/experimental/coro/via_if_async#header-mode-symlink-tree-with-header-map,headers/folly/experimental/coro/ViaIfAsync.h:511
-> ./scripts/kennyyu/coroutines/main.cpp
@ 0000000000297562 main
./scripts/kennyyu/coroutines/main.cpp:75
@ 00000000000062ed folly::detached_task()
./folly/tracing/AsyncStack.cpp:145
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment