Skip to content

POSIX wait_for - stack overflow #232

@fsmoke

Description

@fsmoke

I've got stack overflow in my video project. Please see log below:

Piece of log ``` #261918 0x000000000050af69 in boost::process::detail::posix::wait_until > >(boost::process::detail::posix::child_handle const&, int&, std::chrono::time_point > > const&, std::error_code&)::signal_interceptor_t::handler_func(int) (val=58487) at /usr/local/include/boost/process/detail/posix/wait_for_exit.hpp:69 #261919 0x000000000050af69 in boost::process::detail::posix::wait_until > >(boost::process::detail::posix::child_handle const&, int&, std::chrono::time_point > > const&, std::error_code&)::signal_interceptor_t::handler_func(int) (val=58487) at /usr/local/include/boost/process/detail/posix/wait_for_exit.hpp:69 #261920 0x000000000050af69 in boost::process::detail::posix::wait_until > >(boost::process::detail::posix::child_handle const&, int&, std::chrono::time_point > > const&, std::error_code&)::signal_interceptor_t::handler_func(int) (val=58487) at /usr/local/include/boost/process/detail/posix/wait_for_exit.hpp:69 #261921 0x000000000050af69 in boost::process::detail::posix::wait_until > >(boost::process::detail::posix::child_handle const&, int&, std::chrono::time_point > > const&, std::error_code&)::signal_interceptor_t::handler_func(int) (val=58487) at /usr/local/include/boost/process/detail/posix/wait_for_exit.hpp:69 #261922 0x000000000050af69 in boost::process::detail::posix::wait_until > >(boost::process::detail::posix::child_handle const&, int&, std::chrono::time_point > > const&, std::error_code&)::signal_interceptor_t::handler_func(int) (val=58487) at /usr/local/include/boost/process/detail/posix/wait_for_exit.hpp:69 #261923 0x000000000050af69 in boost::process::detail::posix::wait_until > >(boost::process::detail::posix::child_handle const&, int&, std::chrono::time_point > > const&, std::error_code&)::signal_interceptor_t::handler_func(int) (val=58487) at /usr/local/include/boost/process/detail/posix/wait_for_exit.hpp:69 #261924 0x000000000050af69 in boost::process::detail::posix::wait_until > >(boost::process::detail::posix::child_handle const&, int&, std::chrono::time_point > > const&, std::error_code&)::signal_interceptor_t::handler_func(int) (val=58487) at /usr/local/include/boost/process/detail/posix/wait_for_exit.hpp:69 #261925 0x000000000050af69 in boost::process::detail::posix::wait_until > >(boost::process::detail::posix::child_handle const&, int&, std::chrono::time_point > > const&, std::error_code&)::signal_interceptor_t::handler_func(int) (val=58487) at /usr/local/include/boost/process/detail/posix/wait_for_exit.hpp:69 #261926 0x000000000050b21d in boost::process::detail::posix::wait_until > > (p=..., exit_code=@0x7aa4f44ef680: 0, time_out=..., ec=...) at /usr/local/include/boost/process/detail/posix/wait_for_exit.hpp:117 #261927 0x0000000000503ce8 in boost::process::child::wait_until > > (this=0x7aa68400aaa0, timeout_time=..., ec=...) at /usr/local/include/boost/process/detail/child_decl.hpp:193 #261928 0x000000000051302d in boost::process::child::wait_for > (this=0x7aa68400aaa0, rel_time=..., ec=...) at /usr/local/include/boost/process/detail/child_decl.hpp:184 #261929 0x000000000050ad31 in boost::process::child::wait_for > (this=0x7aa68400aaa0, rel_time=...) at /usr/local/include/boost/process/detail/child_decl.hpp:132 #261930 0x0000000000514da7 in process_launcher::start_process, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)> >(arcturus::core_object_m, std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda(auto:1 const&)#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda()#1}::operator()() (this=0x7aa68400aa70) at /home/user/projects/arcturus/trunk/src/projects/components/modules/video_subsystem/build/vs2019/../../include/process_launcher.hpp:255 #261931 0x00000000005552c9 in std::__invoke_impl, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)> >(arcturus::core_object_m, std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda(auto:1 const&)#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda()#1}>(std::__invoke_other, process_launcher::start_process, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)> >(arcturus::core_object_m, std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda(auto:1 const&)#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda()#1}&&) (__f=...) at /usr/local/gcc-10/include/c++/10.3.0/bits/invoke.h:60 #261932 0x0000000000554f6e in std::__invoke, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)> >(arcturus::core_object_m, std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda(auto:1 const&)#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda()#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&) (__fn=...) at /usr/local/gcc-10/include/c++/10.3.0/bits/invoke.h:95 #261933 0x0000000000554994 in std::thread::_Invoker, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)> >(arcturus::core_object_m, std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda(auto:1 const&)#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda()#1}> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (this=0x7aa68400af78) at /usr/local/gcc-10/include/c++/10.3.0/thread:264 #261934 0x0000000000554254 in std::thread::_Invoker, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)> >(arcturus::core_object_m, std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda(auto:1 const&)#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda()#1}> >::operator()() (this=0x7aa68400af78) at /usr/local/gcc-10/include/c++/10.3.0/thread:271 #261935 0x0000000000553a2f in std::__future_base::_Task_setter, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)> >(arcturus::core_object_m, std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda(auto:1 const&)#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda()#1}> >, void>::operator()() const (this=0x7aa4f44efdd0) at /usr/local/gcc-10/include/c++/10.3.0/future:1373 #261936 0x00000000005531ee in std::__invoke_impl, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_setter, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)> >(arcturus::core_object_m, std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda(auto:1 const&)#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda()#1}> >, void>&>(std::__invoke_other, std::__future_base::_Task_setter, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)> >(arcturus::core_object_m, std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda(auto:1 const&)#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda()#1}> >, void>&) (__f=...) at /usr/local/gcc-10/include/c++/10.3.0/bits/invoke.h:60 #261937 0x0000000000552577 in std::__invoke_r, std::__future_base::_Task_setter, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)> >(arcturus::core_object_m, std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda(auto:1 const&)#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda()#1}> >, void>&>(std::__future_base::_Task_setter, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)> >(arcturus::core_object_m, std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda(auto:1 const&)#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda()#1}> >, void>&) (__fn=...) at /usr/local/gcc-10/include/c++/10.3.0/bits/invoke.h:115 #261938 0x00000000005515c8 in std::_Function_handler (), std::__future_base::_Task_setter, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)> >(arcturus::core_object_m, std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda(auto:1 const&)#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda()#1}> >, void> >::_M_invoke(std::_Any_data const&) (__functor=...) at /usr/local/gcc-10/include/c++/10.3.0/bits/std_function.h:292 #261939 0x00000000004fa143 in std::function ()>::operator()() const (this=0x7aa4f44efdd0) at /usr/local/gcc-10/include/c++/10.3.0/bits/std_function.h:622 #261940 0x00000000004f262d in std::__future_base::_State_baseV2::_M_do_set(std::function ()>*, bool*) (this=0x7aa68400af40, __f=0x7aa4f44efdd0, __did_set=0x7aa4f44efd47) at /usr/local/gcc-10/include/c++/10.3.0/future:572 #261941 0x0000000000508da1 in std::__invoke_impl ()>*, bool*), std::__future_base::_State_baseV2*, std::function ()>*, bool*>(std::__invoke_memfun_deref, void (std::__future_base::_State_baseV2::*&&)(std::function ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function ()>*&&, bool*&&) (__f=@0x7aa4f44efd60: (void (std::__future_base::_State_baseV2::*)(std::__future_base::_State_baseV2 * const, std::function()> *, bool *)) 0x4f2606 ()>*, bool*)>, __t=@0x7aa4f44efd58: 0x7aa68400af40) at /usr/local/gcc-10/include/c++/10.3.0/bits/invoke.h:73 #261942 0x00000000005017c1 in std::__invoke ()>*, bool*), std::__future_base::_State_baseV2*, std::function ()>*, bool*>(void (std::__future_base::_State_baseV2::*&&)(std::function ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function ()>*&&, bool*&&) (__fn=@0x7aa4f44efd60: (void (std::__future_base::_State_baseV2::*)(std::__future_base::_State_baseV2 * const, std::function()> *, bool *)) 0x4f2606 ()>*, bool*)>) at /usr/local/gcc-10/include/c++/10.3.0/bits/invoke.h:95 #261943 0x00000000004f9f0e in std::call_once ()>*, bool*), std::__future_base::_State_baseV2*, std::function ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function ()>*&&, bool*&&)::{lambda()#1}::operator()() const (this=0x7aa4f44efce0) at /usr/local/gcc-10/include/c++/10.3.0/mutex:717 #261944 0x00000000004f9f39 in std::call_once ()>*, bool*), std::__future_base::_State_baseV2*, std::function ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function ()>*&&, bool*&&)::{lambda()#2}::operator()() const (this=0x0) at /usr/local/gcc-10/include/c++/10.3.0/mutex:722 #261945 0x00000000004f9f4a in std::call_once ()>*, bool*), std::__future_base::_State_baseV2*, std::function ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function ()>*&&, bool*&&)::{lambda()#2}::_FUN() () at /usr/local/gcc-10/include/c++/10.3.0/mutex:722 #261946 0x00007aa6aa58b759 in __pthread_once_slow () from /lib/x86_64-linux-gnu/libpthread.so.0 #261947 0x00000000004e0bba in __gthread_once (__once=0x7aa68400af58, __func=0x4115a0 <__once_proxy@plt>) at /usr/local/gcc-10/include/c++/10.3.0/x86_64-linux-gnu/bits/gthr-default.h:700 #261948 0x00000000004f9fd6 in std::call_once ()>*, bool*), std::__future_base::_State_baseV2*, std::function ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function ()>*&&, bool*&&) (__once=..., __f=@0x7aa4f44efd60: (void (std::__future_base::_State_baseV2::*)(std::__future_base::_State_baseV2 * const, std::function()> *, bool *)) 0x4f2606 ()>*, bool*)>) at /usr/local/gcc-10/include/c++/10.3.0/mutex:729 #261949 0x00000000004f2457 in std::__future_base::_State_baseV2::_M_set_result(std::function ()>, bool) (this=0x7aa68400af40, __res=..., __ignore_failure=false) at /usr/local/gcc-10/include/c++/10.3.0/future:412 #261950 0x000000000054e7f7 in std::__future_base::_Async_state_impl, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)> >(arcturus::core_object_m, std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda(auto:1 const&)#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda()#1}> >, void>::_Async_state_impl(std::thread::_Invoker, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)> >(arcturus::core_object_m, std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda(auto:1 const&)#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda()#1}> >&&)::{lambda()#1}::operator()() const (this=0x7aa68400af40) at /usr/local/gcc-10/include/c++/10.3.0/future:1682 #261951 0x0000000000556faf in std::__invoke_impl, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)> >(arcturus::core_object_m, std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda(auto:1 const&)#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda()#1}> >, void>::_Async_state_impl(std::thread::_Invoker, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)> >(arcturus::core_object_m, std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda(auto:1 const&)#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda()#1}> >&&)::{lambda()#1}>(std::__invoke_other, std::__future_base::_Async_state_impl, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)> >(arcturus::core_object_m, std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda(auto:1 const&)#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda()#1}> >, void>::_Async_state_impl(std::thread::_Invoker, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)> >(arcturus::core_object_m, std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda(auto:1 const&)#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda()#1}> >&&)::{lambda()#1}&&) (__f=...) at /usr/local/gcc-10/include/c++/10.3.0/bits/invoke.h:60 #261952 0x0000000000556f20 in std::__invoke, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)> >(arcturus::core_object_m, std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda(auto:1 const&)#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda()#1}> >, void>::_Async_state_impl(std::thread::_Invoker, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)> >(arcturus::core_object_m, std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda(auto:1 const&)#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda()#1}> >&&)::{lambda()#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&) (__fn=...) at /usr/local/gcc-10/include/c++/10.3.0/bits/invoke.h:95 #261953 0x0000000000556df0 in std::thread::_Invoker, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)> >(arcturus::core_object_m, std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda(auto:1 const&)#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda()#1}> >, void>::_Async_state_impl(std::thread::_Invoker, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)> >(arcturus::core_object_m, std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda(auto:1 const&)#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda()#1}> >&&)::{lambda()#1}> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (this=0x7aa684004878) at /usr/local/gcc-10/include/c++/10.3.0/thread:264 #261954 0x0000000000556b80 in std::thread::_Invoker, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)> >(arcturus::core_object_m, std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda(auto:1 const&)#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda()#1}> >, void>::_Async_state_impl(std::thread::_Invoker, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)> >(arcturus::core_object_m, std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda(auto:1 const&)#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda()#1}> >&&)::{lambda()#1}> >::operator()() (this=0x7aa684004878) at /usr/local/gcc-10/include/c++/10.3.0/thread:271 #261955 0x0000000000555ac8 in std::thread::_State_impl, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)> >(arcturus::core_object_m, std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda(auto:1 const&)#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda()#1}> >, void>::_Async_state_impl(std::thread::_Invoker, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)> >(arcturus::core_object_m, std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda(auto:1 const&)#1}>(std::_Bind, boost::uuids::uuid))(std::span const&, boost::uuids::uuid const&)>&&)::{lambda()#1}> >&&)::{lambda()#1}> > >::_M_run() (this=0x7aa684004870) at /usr/local/gcc-10/include/c++/10.3.0/thread:215 #261956 0x00007aa6a9c1c830 in ?? () from /usr/local/gcc-10/lib64/libstdc++.so.6 #261957 0x00007aa6aa5844a4 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0 #261958 0x00007aa6a937cd0f in clone () from /lib/x86_64-linux-gnu/libc.so.6 (gdb) ```

Error in line /usr/local/include/boost/process/detail/posix/wait_for_exit.hpp:69

 static void handler_func(int val)
        {
            if ((sigchld_handler != SIG_DFL) && (sigchld_handler != SIG_IGN))
                sigchld_handler(val); //THIS ONE
        }

It seems somehow sigchld_handler became set to handler_func - i.e. it calls itself

PS
Boost 1.76

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions