Created
April 28, 2021 21:07
-
-
Save kennyyu/2d58c41b95e592bbfd8db9ca6dbd5027 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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