Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Runtime error with scheduled actors and timeouts #1772

Open
Neverlord opened this issue Feb 24, 2024 · 0 comments
Open

Runtime error with scheduled actors and timeouts #1772

Neverlord opened this issue Feb 24, 2024 · 0 comments
Assignees
Labels
Milestone

Comments

@Neverlord
Copy link
Member

This has been reported by two users in chat with the following UBSan output and stack traces:

/build/_deps/caf-src/libcaf_core/caf/behavior.hpp:85:19: runtime error: member call on address 0x50400004d610 which does not point to an object of type 'caf::detail::behavior_impl'
0x50400004d610: note: object has invalid vptr
 0a 00 00 00  bb 10 00 00 06 00 00 00  01 00 00 00 00 00 00 00  ff ff ff ff ff ff ff 7f  c0 0e 00 00
              ^~~~~~~~~~~~~~~~~~~~~~~
              invalid vptr
    #0 0x55ccfc4f4823 in caf::behavior::timeout() const /build/_deps/caf-src/libcaf_core/caf/behavior.hpp:85:19
    #1 0x55ccfc8602ad in caf::scheduled_actor::set_receive_timeout() /build/_deps/caf-src/libcaf_core/caf/scheduled_actor.cpp:363:39
    #2 0x55ccfc85e532 in caf::scheduled_actor::resume(caf::execution_unit*, unsigned long)::$_2::operator()() const /build/_deps/caf-src/libcaf_core/caf/scheduled_actor.cpp:282:7
    #3 0x55ccfc85e532 in caf::scheduled_actor::resume(caf::execution_unit*, unsigned long) /build/_deps/caf-src/libcaf_core/caf/scheduled_actor.cpp:289:9
    #4 0x55ccfc46ec39 in caf::scheduler::worker<caf::policy::work_stealing>::run() /build/_deps/caf-src/libcaf_core/caf/scheduler/worker.hpp:98:23
    #5 0x55ccfc46e878 in caf::scheduler::worker<caf::policy::work_stealing>::start()::'lambda'()::operator()() const /build/_deps/caf-src/libcaf_core/caf/scheduler/worker.hpp:42:52
    #6 0x55ccfc46e878 in auto std::thread caf::actor_system::launch_thread<caf::scheduler::worker<caf::policy::work_stealing>::start()::'lambda'()>(char const*, caf::thread_owner, caf::scheduler::worker<caf::policy::work_stealing>::start()::'lambda'())::'lambda'(caf::scheduler::worker<caf::policy::work_stealing>::start()::'lambda'())::operator()<caf::intrusive_ptr<caf::ref_counted>>(caf::scheduler::worker<caf::policy::work_stealing>::start()::'lambda'()) const /build/_deps/caf-src/libcaf_core/caf/actor_system.hpp:587:7
    #7 0x55ccfc46e5dd in caf::scheduler::worker<caf::policy::work_stealing>::start()::'lambda'() std::__invoke_impl<void, std::thread caf::actor_system::launch_thread<caf::scheduler::worker<caf::policy::work_stealing>::start()::'lambda'()>(char const*, caf::thread_owner, caf::scheduler::worker<caf::policy::work_stealing>::start()::'lambda'())::'lambda'(caf::scheduler::worker<caf::policy::work_stealing>::start()::'lambda'()), caf::intrusive_ptr<caf::ref_counted>>(std::__invoke_other, std::thread caf::actor_system::launch_thread<caf::scheduler::worker<caf::policy::work_stealing>::start()::'lambda'()>(char const*, caf::thread_owner, caf::scheduler::worker<caf::policy::work_stealing>::start()::'lambda'())::'lambda'(caf::scheduler::worker<caf::policy::work_stealing>::start()::'lambda'())&&, caf::intrusive_ptr<caf::ref_counted>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:61:14
    #8 0x7f89e7f122b2  (/lib/x86_64-linux-gnu/libstdc++.so.6+0xe62b2) (BuildId: 2db998bd67acbfb235c464c0275d4070061695fb)
    #9 0x55ccfafaf65a in asan_thread_start(void*) crtstuff.c
    #10 0x7f89e7c5fac2  (/lib/x86_64-linux-gnu/libc.so.6+0x94ac2) (BuildId: c289da5071a3399de893d2af81d6a30c62646e1e)
    #11 0x7f89e7cf0a03 in __clone (/lib/x86_64-linux-gnu/libc.so.6+0x125a03) (BuildId: c289da5071a3399de893d2af81d6a30c62646e1e)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /build/_deps/caf-src/libcaf_core/caf/behavior.hpp:85:19 in
[helloworld] caf::intrusive_ptr::operator-> intrusive_ptr.hpp:149
[helloworld] caf::behavior::timeout behavior.hpp:85
[helloworld] caf::scheduled_actor::set_receive_timeout scheduled_actor.cpp:363
[helloworld] <lambda>::operator()(void) const scheduled_actor.cpp:282
[helloworld] caf::scheduled_actor::resume scheduled_actor.cpp:289
[helloworld] caf::scheduler::worker::run worker.hpp:98
[helloworld] <lambda#1>::operator()() const worker.hpp:42
[helloworld] caf::actor_system::launch_thread<caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1}>(char const*, caf::thread_owner, caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1})::{lambda(auto:1)#1}::operator()<caf::intrusive_ptr<caf::ref_counted> >(caf::intrusive_ptr<caf::ref_counted>) const actor_system.hpp:587
[helloworld] std::__invoke_impl<void, caf::actor_system::launch_thread<caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1}>(char const*, caf::thread_owner, caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1})::{lambda(auto:1)#1}, caf::intrusive_ptr<caf::ref_counted> >(std::__invoke_other, caf::actor_system::launch_thread<caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1}>(char const*, caf::thread_owner, caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1})::{lambda(auto:1)#1}&&, caf::intrusive_ptr<caf::ref_counted>&&) invoke.h:60
[helloworld] std::__invoke<caf::actor_system::launch_thread<caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1}>(char const*, caf::thread_owner, caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1})::{lambda(auto:1)#1}, caf::intrusive_ptr<caf::ref_counted> >(caf::actor_system::launch_thread<caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1}>(char const*, caf::thread_owner, caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1})::{lambda(auto:1)#1}&&, caf::intrusive_ptr<caf::ref_counted>&&) invoke.h:95
[helloworld] std::thread::_Invoker<std::tuple<caf::actor_system::launch_thread<caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1}>(char const*, caf::thread_owner, caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1})::{lambda(auto:1)#1}, caf::intrusive_ptr<caf::ref_counted> > >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) thread:244
[helloworld] std::thread::_Invoker<std::tuple<caf::actor_system::launch_thread<caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1}>(char const*, caf::thread_owner, caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1})::{lambda(auto:1)#1}, caf::intrusive_ptr<caf::ref_counted> > >::operator()() thread:251
[helloworld] std::thread::_State_impl<std::thread::_Invoker<std::tuple<caf::actor_system::launch_thread<caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1}>(char const*, caf::thread_owner, caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1})::{lambda(auto:1)#1}, caf::intrusive_ptr<caf::ref_counted> > > >::_M_run() thread:195
[libstdc++.so.6] <unknown> 0x00007ffff6da9df4
[libpthread.so.0] start_thread 0x00007ffff7554609
[libc.so.6] clone 0x00007ffff6127353
[libc.so.6] __GI_raise 0x00007ffff604b00b
[libc.so.6] __GI_abort 0x00007ffff602a859
[helloworld] caf::detail::behavior_stack::back behavior_stack.hpp:41
[helloworld] caf::scheduled_actor::set_receive_timeout scheduled_actor.cpp:363
[helloworld] <lambda>::operator()(void) const scheduled_actor.cpp:282
[helloworld] caf::scheduled_actor::resume scheduled_actor.cpp:289
[helloworld] caf::scheduler::worker::run worker.hpp:98
[helloworld] <lambda#1>::operator()() const worker.hpp:42
[helloworld] caf::actor_system::launch_thread<caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1}>(char const*, caf::thread_owner, caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1})::{lambda(auto:1)#1}::operator()<caf::intrusive_ptr<caf::ref_counted> >(caf::intrusive_ptr<caf::ref_counted>) const actor_system.hpp:587
[helloworld] std::__invoke_impl<void, caf::actor_system::launch_thread<caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1}>(char const*, caf::thread_owner, caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1})::{lambda(auto:1)#1}, caf::intrusive_ptr<caf::ref_counted> >(std::__invoke_other, caf::actor_system::launch_thread<caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1}>(char const*, caf::thread_owner, caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1})::{lambda(auto:1)#1}&&, caf::intrusive_ptr<caf::ref_counted>&&) invoke.h:60
[helloworld] std::__invoke<caf::actor_system::launch_thread<caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1}>(char const*, caf::thread_owner, caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1})::{lambda(auto:1)#1}, caf::intrusive_ptr<caf::ref_counted> >(caf::actor_system::launch_thread<caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1}>(char const*, caf::thread_owner, caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1})::{lambda(auto:1)#1}&&, caf::intrusive_ptr<caf::ref_counted>&&) invoke.h:95
[helloworld] std::thread::_Invoker<std::tuple<caf::actor_system::launch_thread<caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1}>(char const*, caf::thread_owner, caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1})::{lambda(auto:1)#1}, caf::intrusive_ptr<caf::ref_counted> > >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) thread:244
[helloworld] std::thread::_Invoker<std::tuple<caf::actor_system::launch_thread<caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1}>(char const*, caf::thread_owner, caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1})::{lambda(auto:1)#1}, caf::intrusive_ptr<caf::ref_counted> > >::operator()() thread:251
[helloworld] std::thread::_State_impl<std::thread::_Invoker<std::tuple<caf::actor_system::launch_thread<caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1}>(char const*, caf::thread_owner, caf::scheduler::worker<caf::policy::work_stealing>::start()::{lambda()#1})::{lambda(auto:1)#1}, caf::intrusive_ptr<caf::ref_counted> > > >::_M_run() thread:195
[libstdc++.so.6] <unknown> 0x00007ffff6da9df4
[libpthread.so.0] start_thread 0x00007ffff7554609
[libc.so.6] clone 0x00007ffff6127353
@Neverlord Neverlord added the bug label Feb 24, 2024
@Neverlord Neverlord added this to the 1.0.0 milestone Feb 24, 2024
@Neverlord Neverlord self-assigned this Feb 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant