Open xanderdunn opened 3 years ago
Hey @xanderdunn ,
Thanks for sharing this log. We have to take a closer look at this.
This but seems to show even when running the unit tests under valgrind (memcheck): ( commit 2f975359c55d6eb37bc0aef1afdc2abfcf031552 )
==187850== Memcheck, a memory error detector
==187850== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==187850== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info
==187850== Command: ./test/oatppAllTests
==187850==
[...]
==187850== Thread 23:
==187850== Conditional jump or move depends on uninitialised value(s)
==187850== at 0x4C254EB: oatpp::async::worker::IOEventWorker::waitEvents() (in /home/falko/lib/oat++/oatpp/src/liboatpp.so)
==187850== by 0x4C23DF9: oatpp::async::worker::IOEventWorker::run() (in /home/falko/lib/oat++/oatpp/src/liboatpp.so)
==187850== by 0x4C24996: void std::__invoke_impl<void, void (oatpp::async::worker::IOEventWorker::*)(), oatpp::async::worker::IOEventWorker*>(std::__invoke_memfun_deref, void (oatpp::async::worker::IOEventWorker::*&&)(), oatpp::async::worker::IOEventWorker*&&) (in /home/falko/lib/oat++/oatpp/src/liboatpp.so)
==187850== by 0x4C248F4: std::__invoke_result<void (oatpp::async::worker::IOEventWorker::*)(), oatpp::async::worker::IOEventWorker*>::type std::__invoke<void (oatpp::async::worker::IOEventWorker::*)(), oatpp::async::worker::IOEventWorker*>(void (oatpp::async::worker::IOEventWorker::*&&)(), oatpp::async::worker::IOEventWorker*&&) (in /home/falko/lib/oat++/oatpp/src/liboatpp.so)
==187850== by 0x4C24864: void std::thread::_Invoker<std::tuple<void (oatpp::async::worker::IOEventWorker::*)(), oatpp::async::worker::IOEventWorker*> >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) (in /home/falko/lib/oat++/oatpp/src/liboatpp.so)
==187850== by 0x4C2481D: std::thread::_Invoker<std::tuple<void (oatpp::async::worker::IOEventWorker::*)(), oatpp::async::worker::IOEventWorker*> >::operator()() (in /home/falko/lib/oat++/oatpp/src/liboatpp.so)
==187850== by 0x4C24801: std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (oatpp::async::worker::IOEventWorker::*)(), oatpp::async::worker::IOEventWorker*> > >::_M_run() (in /home/falko/lib/oat++/oatpp/src/liboatpp.so)
==187850== by 0x4F128F3: execute_native_thread_routine (thread.cc:82)
==187850== by 0x4E11EA6: start_thread (pthread_create.c:477)
==187850== by 0x52A7DEE: clone (clone.S:95)
==187850==
==187850== Conditional jump or move depends on uninitialised value(s)
==187850== at 0x4C25501: oatpp::async::worker::IOEventWorker::waitEvents() (in /home/falko/lib/oat++/oatpp/src/liboatpp.so)
==187850== by 0x4C23DF9: oatpp::async::worker::IOEventWorker::run() (in /home/falko/lib/oat++/oatpp/src/liboatpp.so)
==187850== by 0x4C24996: void std::__invoke_impl<void, void (oatpp::async::worker::IOEventWorker::*)(), oatpp::async::worker::IOEventWorker*>(std::__invoke_memfun_deref, void (oatpp::async::worker::IOEventWorker::*&&)(), oatpp::async::worker::IOEventWorker*&&) (in /home/falko/lib/oat++/oatpp/src/liboatpp.so)
==187850== by 0x4C248F4: std::__invoke_result<void (oatpp::async::worker::IOEventWorker::*)(), oatpp::async::worker::IOEventWorker*>::type std::__invoke<void (oatpp::async::worker::IOEventWorker::*)(), oatpp::async::worker::IOEventWorker*>(void (oatpp::async::worker::IOEventWorker::*&&)(), oatpp::async::worker::IOEventWorker*&&) (in /home/falko/lib/oat++/oatpp/src/liboatpp.so)
==187850== by 0x4C24864: void std::thread::_Invoker<std::tuple<void (oatpp::async::worker::IOEventWorker::*)(), oatpp::async::worker::IOEventWorker*> >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) (in /home/falko/lib/oat++/oatpp/src/liboatpp.so)
==187850== by 0x4C2481D: std::thread::_Invoker<std::tuple<void (oatpp::async::worker::IOEventWorker::*)(), oatpp::async::worker::IOEventWorker*> >::operator()() (in /home/falko/lib/oat++/oatpp/src/liboatpp.so)
==187850== by 0x4C24801: std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (oatpp::async::worker::IOEventWorker::*)(), oatpp::async::worker::IOEventWorker*> > >::_M_run() (in /home/falko/lib/oat++/oatpp/src/liboatpp.so)
==187850== by 0x4F128F3: execute_native_thread_routine (thread.cc:82)
==187850== by 0x4E11EA6: start_thread (pthread_create.c:477)
==187850== by 0x52A7DEE: clone (clone.S:95)
==187850==
==187850== Conditional jump or move depends on uninitialised value(s)
==187850== at 0x4C25517: oatpp::async::worker::IOEventWorker::waitEvents() (in /home/falko/lib/oat++/oatpp/src/liboatpp.so)
==187850== by 0x4C23DF9: oatpp::async::worker::IOEventWorker::run() (in /home/falko/lib/oat++/oatpp/src/liboatpp.so)
==187850== by 0x4C24996: void std::__invoke_impl<void, void (oatpp::async::worker::IOEventWorker::*)(), oatpp::async::worker::IOEventWorker*>(std::__invoke_memfun_deref, void (oatpp::async::worker::IOEventWorker::*&&)(), oatpp::async::worker::IOEventWorker*&&) (in /home/falko/lib/oat++/oatpp/src/liboatpp.so)
==187850== by 0x4C248F4: std::__invoke_result<void (oatpp::async::worker::IOEventWorker::*)(), oatpp::async::worker::IOEventWorker*>::type std::__invoke<void (oatpp::async::worker::IOEventWorker::*)(), oatpp::async::worker::IOEventWorker*>(void (oatpp::async::worker::IOEventWorker::*&&)(), oatpp::async::worker::IOEventWorker*&&) (in /home/falko/lib/oat++/oatpp/src/liboatpp.so)
==187850== by 0x4C24864: void std::thread::_Invoker<std::tuple<void (oatpp::async::worker::IOEventWorker::*)(), oatpp::async::worker::IOEventWorker*> >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) (in /home/falko/lib/oat++/oatpp/src/liboatpp.so)
==187850== by 0x4C2481D: std::thread::_Invoker<std::tuple<void (oatpp::async::worker::IOEventWorker::*)(), oatpp::async::worker::IOEventWorker*> >::operator()() (in /home/falko/lib/oat++/oatpp/src/liboatpp.so)
==187850== by 0x4C24801: std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (oatpp::async::worker::IOEventWorker::*)(), oatpp::async::worker::IOEventWorker*> > >::_M_run() (in /home/falko/lib/oat++/oatpp/src/liboatpp.so)
==187850== by 0x4F128F3: execute_native_thread_routine (thread.cc:82)
==187850== by 0x4E11EA6: start_thread (pthread_create.c:477)
==187850== by 0x52A7DEE: clone (clone.S:95)
==187850==
I'm running the async API to make about 700 websocket connections, and I'm seeing these thread sanitizer warnings over and over many hundreds of times in the first minute of execution:
I did not see these thread sanitizer warnings a short time ago. I recently upgraded from 1.2.0 to 1.2.5. Is this new as of 1.2.5?