Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Workaround false alarm stack-use-after-scope from Asan with operator<<.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Tue, 4 May 2021 07:19:13 +0000 (09:19 +0200)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Tue, 4 May 2021 12:15:35 +0000 (14:15 +0200)
Seen with tesh-s4u-activity-lifecycle:

==3411378==ERROR: AddressSanitizer: stack-use-after-scope on address 0x7fd4787b5f60 at pc 0x7fd4869e2acb bp 0x7fd4787b5530 sp 0x7fd4787b4ce0
READ of size 5 at 0x7fd4787b5f60 thread T0
    #0 0x7fd4869e2aca in printf_common ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors_format.inc:490
    #1 0x7fd4869e4115 in __interceptor_vsnprintf ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:1647
    #2 0x7fd4858f932e  (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xea32e)
    #3 0x7fd4859272eb in std::ostreambuf_iterator<char, std::char_traits<char> > std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::_M_insert_float<double>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, char, double) const (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0x1182eb)
    #4 0x7fd4859347b9 in std::ostream& std::ostream::_M_insert<double>(double) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0x1257b9)
    #5 0x55a66a474e0a in std::ostream::operator<<(double) /usr/include/c++/10/ostream:221
    #6 0x55a66a474e0a in Catch::ReusableStringStream& Catch::ReusableStringStream::operator<< <double>(double const&) ../src/include/catch.hpp:1449
    #7 0x55a66a474e0a in Catch::MessageBuilder& Catch::MessageBuilder::operator<< <double>(double const&) ../src/include/catch.hpp:2632
    #8 0x55a66a474e0a in bool tester_wait<0, boost::intrusive_ptr<simgrid::s4u::Exec> >(boost::intrusive_ptr<simgrid::s4u::Exec> const&) ../teshsuite/s4u/activity-lifecycle/testing_test-wait.cpp:44
    #9 0x55a66a63f0af in operator() ../teshsuite/s4u/activity-lifecycle/testing_test-wait.cpp:129
    #10 0x7fd485d7bd51 in std::function<void ()>::operator()() const /usr/include/c++/10/bits/std_function.h:622
    #11 0x7fd485d7bd51 in simgrid::kernel::context::Context::operator()() const ../src/kernel/context/Context.hpp:65
    #12 0x7fd485d7bd51 in smx_ctx_wrapper ../src/kernel/context/ContextSwapped.cpp:51
    #13 0x7fd485e09e48 in simgrid::kernel::context::BoostContext::wrapper(boost::context::detail::transfer_t) ../src/kernel/context/ContextBoost.cpp:49
    #14 0x7fd4854be19e in make_fcontext (/usr/lib/x86_64-linux-gnu/libboost_context.so.1.74.0+0x119e)

teshsuite/s4u/activity-lifecycle/testing_test-wait.cpp

index 2668936..2b8f82f 100644 (file)
@@ -41,7 +41,7 @@ template <int Duration, typename Activity> bool tester_wait(const Activity& acti
     ret = true;
   } catch (const simgrid::TimeoutException& e) {
     XBT_DEBUG("wait_for() timed out (%s)", e.what());
-    INFO("wait_for() timeout should expire at expected date: " << timeout);
+    INFO("wait_for() timeout should expire at expected date: " + std::to_string(timeout));
     REQUIRE(simgrid::s4u::Engine::get_clock() == Approx(timeout));
     ret = false;
   } catch (const simgrid::Exception& e) {