MSAN error in repeat_n
laramiel opened this issue · 6 comments
I'm getting an MSAN error in test/exec/test_repeat_n.cpp. Ideas?
TEST_CASE("repeat_n forwards set_error calls of other types", "[adaptors][repeat_n]") {
int count = 0;
auto snd = let_value(
just(),
[&] {
++count;
return just_error(std::string("error"));
})
| exec::repeat_n(10);
auto op = ex::connect(std::move(snd), expect_error_receiver{std::string("error")});
start(op);
CHECK(count == 1);
}
==430==WARNING: MemorySanitizer: use-of-uninitialized-value
#0 0x7f45ed02f535 in ~basic_string third_party/crosstool/v18/stable/toolchain/bin/../include/c++/v1/string:1104:9
#1 0x7f45ed02f535 in __complete<stdexec::__receivers::set_error_t, std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> > > third_party/stdexec/include/exec/repeat_n.hpp:139:11
#2 0x7f45ed02f535 in tag_invoke<stdexec::__receivers::set_error_t, std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> > > third_party/stdexec/include/exec/repeat_n.hpp:56:28
#3 0x7f45ed02f535 in tag_invoke<stdexec::__receivers::set_error_t, stdexec::__let::__receiver_with_sched<exec::__repeat_n::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >::__t, exec::__trampoline::__scheduler>, std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> > > third_party/stdexec/include/stdexec/execution.hpp:3406:9
#4 0x7f45ed02f535 in operator()<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> > > third_party/stdexec/include/stdexec/execution.hpp:2059:13
#5 0x7f45ed02f535 in operator()<(lambda at ./third_party/stdexec/include/stdexec/execution.hpp:2058:11), stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long, 0UL> *, std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> > > &, 0UL, std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> > > third_party/stdexec/include/stdexec/__detail/__tuple.hpp:87:16
#6 0x7f45ed02f535 in operator()<stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long, 0UL> *, std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> > >, stdexec::__let::__receiver_with_sched<exec::__repeat_n::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >::__t, exec::__trampoline::__scheduler> > third_party/stdexec/include/stdexec/execution.hpp:2057:9
#7 0x7f45ed02f535 in operator()<> third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:380:13
#8 0x7f45ed02f535 in operator()<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:379:11), stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long> *> &> third_party/stdexec/include/stdexec/__detail/__tuple.hpp:87:16
#9 0x7f45ed02f535 in __bind<stdexec::__let::__let_state<stdexec::__let::__receiver_with_sched<exec::__repeat_n::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >::__t, exec::__trampoline::__scheduler>, (lambda at third_party/stdexec/test/exec/test_repeat_n.cpp:91:18), stdexec::__receivers::set_value_t, stdexec::__none_such, std::__msan::tuple<> >, stdexec::__let::__receiver_with_sched<exec::__repeat_n::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >::__t, exec::__trampoline::__scheduler> > third_party/stdexec/include/stdexec/execution.hpp:3711:11
#10 0x7f45ed02f535 in operator()<stdexec::__let::__let_state<stdexec::__let::__receiver_with_sched<exec::__repeat_n::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >::__t, exec::__trampoline::__scheduler>, (lambda at third_party/stdexec/test/exec/test_repeat_n.cpp:91:18), stdexec::__receivers::set_value_t, stdexec::__none_such, std::__msan::tuple<> >, stdexec::__let::__receiver_with_sched<exec::__repeat_n::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >::__t, exec::__trampoline::__scheduler>, stdexec::__receivers::set_value_t> third_party/stdexec/include/stdexec/execution.hpp:3725:11
#11 0x7f45ed02f535 in operator()<> third_party/stdexec/include/stdexec/execution.hpp:2059:13
#12 0x7f45ed02f535 in operator()<(lambda at ./third_party/stdexec/include/stdexec/execution.hpp:2058:11), stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long> *> &> third_party/stdexec/include/stdexec/__detail/__tuple.hpp:87:16
#13 0x7f45ed02f535 in operator()<stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long> *>, stdexec::__detail::__receiver<stdexec::_Id<stdexec::__let::__receiver_with_sched<exec::__repeat_n::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >::__t, exec::__trampoline::__scheduler> >, stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::__mconstant_<0UL> *>::__t> third_party/stdexec/include/stdexec/execution.hpp:2057:9
#14 0x7f45ed02f535 in operator()<> third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:380:13
#15 0x7f45ed02f535 in operator()<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:379:11), stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long> *> &> third_party/stdexec/include/stdexec/__detail/__tuple.hpp:87:16
#16 0x7f45ed02f535 in operator()<stdexec::__start::start_t, stdexec::__detail::__op_state<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::__detail::__receiver<stdexec::_Id<stdexec::__let::__receiver_with_sched<exec::__repeat_n::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >::__t, exec::__trampoline::__scheduler> >, stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::__mconstant_<0UL> *>::__t> > third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:202:8
#17 0x7f45ed02f535 in operator()<stdexec::__detail::__op_state<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::__detail::__receiver<stdexec::_Id<stdexec::__let::__receiver_with_sched<exec::__repeat_n::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >::__t, exec::__trampoline::__scheduler> >, stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::__mconstant_<0UL> *>::__t> > third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:380:13
#18 0x7f45ed02f535 in operator()<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:379:11), stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long, 0UL> *, stdexec::__detail::__op_state<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::__detail::__receiver<stdexec::_Id<stdexec::__let::__receiver_with_sched<exec::__repeat_n::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >::__t, exec::__trampoline::__scheduler> >, stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::__mconstant_<0UL> *>::__t> > &, 0UL, stdexec::__detail::__op_state<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::__detail::__receiver<stdexec::_Id<stdexec::__let::__receiver_with_sched<exec::__repeat_n::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >::__t, exec::__trampoline::__scheduler> >, stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::__mconstant_<0UL> *>::__t> > third_party/stdexec/include/stdexec/__detail/__tuple.hpp:87:16
#19 0x7f45ed02f535 in __bind<stdexec::__let::__let_state<exec::__repeat_n::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >::__t, stdexec::__detail::__always<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::__sexpr<stdexec::__let::__let_t<stdexec::__receivers::set_value_t, stdexec::default_domain>, (lambda at third_party/stdexec/test/exec/test_repeat_n.cpp:91:18), stdexec::__sexpr<stdexec::__just::just_t, stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long> *> > > >, stdexec::__receivers::set_value_t, exec::__trampoline::__scheduler, std::__msan::tuple<> >, exec::__repeat_n::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >::__t> third_party/stdexec/include/stdexec/execution.hpp:3711:11
#20 0x7f45ed02f535 in operator()<stdexec::__let::__let_state<exec::__repeat_n::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >::__t, stdexec::__detail::__always<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::__sexpr<stdexec::__let::__let_t<stdexec::__receivers::set_value_t, stdexec::default_domain>, (lambda at third_party/stdexec/test/exec/test_repeat_n.cpp:91:18), stdexec::__sexpr<stdexec::__just::just_t, stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long> *> > > >, stdexec::__receivers::set_value_t, exec::__trampoline::__scheduler, std::__msan::tuple<> >, exec::__repeat_n::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >::__t, stdexec::__receivers::set_value_t> third_party/stdexec/include/stdexec/execution.hpp:3725:11
#21 0x7f45ed02f535 in exec::__trampoline::__scheduler::__operation<stdexec::__detail::__receiver<exec::__repeat_n::__receiver<stdexec::__sexpr<auto stdexec::__detail::(anonymous namespace)::$_0::operator()<exec::__repeat_n::__repeat_n_tag, exec::__repeat_n::__child_count_pair<stdexec::__sexpr<auto stdexec::__detail::(anonymous namespace)::$_0::operator()<stdexec::__let::__let_t<stdexec::__receivers::set_value_t, stdexec::default_domain>, (anonymous namespace)::C_A_T_C_H_T_E_S_T_14()::$_0, stdexec::__sexpr<auto stdexec::__detail::(anonymous namespace)::$_0::operator()<stdexec::__just::just_t, stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long>*>>(stdexec::__just::just_t, stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long>*>&&) const::'lambda'<typename $T, typename $T0>(stdexec::__just::just_t, $T0&&)>>(stdexec::__just::just_t, stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long>*>&&) const::'lambda'<typename $T1, typename $T2>(stdexec::__just::just_t, $T0&&)>>>(stdexec::__just::just_t, stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long>*>&&) const::'lambda'<typename $T3, typename $T4>(stdexec::__just::just_t, $T0&&)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char>>, stdexec::__env::empty_env>>>, stdexec::__sexpr<auto stdexec::__detail::(anonymous namespace)::$_0::operator()<stdexec::__let::__let_t<stdexec::__receivers::set_value_t, stdexec::default_domain>, stdexec::__detail::__always<stdexec::__sexpr<auto stdexec::__detail::(anonymous namespace)::$_0::operator()<stdexec::__let::__let_t<stdexec::__receivers::set_value_t, stdexec::default_domain>, (anonymous namespace)::C_A_T_C_H_T_E_S_T_14()::$_0, stdexec::__sexpr<auto stdexec::__detail::(anonymous namespace)::$_0::operator()<stdexec::__just::just_t, stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long>*>>(stdexec::__just::just_t, stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long>*>&&) const::'lambda'<typename $T, typename $T0>(stdexec::__just::just_t, $T0&&)>>(stdexec::__just::just_t, stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long>*>&&) const::'lambda'<typename $T1, typename $T2>(stdexec::__just::just_t, $T0&&)>, stdexec::__sexpr<stdexec::__let::__let_t<stdexec::__receivers::set_value_t, stdexec::default_domain>, (anonymous namespace)::C_A_T_C_H_T_E_S_T_14()::$_0, stdexec::__sexpr<stdexec::__just::just_t, stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long>*>>>>, exec::__trampoline::__scheduler::__schedule_sender>(stdexec::__just::just_t, stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long>*>&&) const::'lambda'<typename $T5, typename $T6>(stdexec::__just::just_t, $T0&&)>, stdexec::__mconstant_<0ul>*>>::__t::__execute_impl(exec::__trampoline::__scheduler::__operation_base*) third_party/stdexec/include/exec/trampoline_scheduler.hpp:115:15
#22 0x7f45ed02c076 in __execute third_party/stdexec/include/exec/trampoline_scheduler.hpp:74:11
#23 0x7f45ed02c076 in exec::__trampoline::tag_invoke(stdexec::__start::start_t, exec::__trampoline::__scheduler::__operation_base&) third_party/stdexec/include/exec/trampoline_scheduler.hpp:81:20
#24 0x7f45ed02a072 in operator()<stdexec::__start::start_t, exec::__trampoline::__scheduler::__operation<stdexec::__detail::__receiver<exec::__repeat_n::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >, stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::__mconstant_<0UL> *> >::__t> third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:202:8
#25 0x7f45ed02a072 in operator()<exec::__trampoline::__scheduler::__operation<stdexec::__detail::__receiver<exec::__repeat_n::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >, stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::__mconstant_<0UL> *> >::__t> third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:380:13
#26 0x7f45ed02a072 in operator()<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:379:11), stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long, 0UL> *, exec::__trampoline::__scheduler::__operation<stdexec::__detail::__receiver<exec::__repeat_n::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >, stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::__mconstant_<0UL> *> >::__t> &, 0UL, exec::__trampoline::__scheduler::__operation<stdexec::__detail::__receiver<exec::__repeat_n::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >, stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::__mconstant_<0UL> *> >::__t> third_party/stdexec/include/stdexec/__detail/__tuple.hpp:87:16
#27 0x7f45ed02a072 in __start third_party/stdexec/include/exec/repeat_n.hpp:119:11
#28 0x7f45ed02a072 in operator()<exec::__repeat_n::__repeat_n_state<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, (anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > > third_party/stdexec/include/exec/repeat_n.hpp:185:17
#29 0x7f45ed02a072 in operator()<> third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:380:13
#30 0x7f45ed02a072 in operator()<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:379:11), stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long> *> &> third_party/stdexec/include/stdexec/__detail/__tuple.hpp:87:16
#31 0x7f45ed02a072 in (anonymous namespace)::C_A_T_C_H_T_E_S_T_14() third_party/stdexec/test/exec/test_repeat_n.cpp:97:5
...
SUMMARY: MemorySanitizer: use-of-uninitialized-value third_party/stdexec/include/exec/repeat_n.hpp:139:11 in __complete<stdexec::__receivers::set_error_t, std::__msan::basic_string<char, std::__msan::char_traits, std::__msan::allocator > >
Thanks for the report. I'll look into it.
Did you build and link libc++ and libc++abi with -fsanitize=memory
like it says to do here: https://github.com/google/sanitizers/wiki/MemorySanitizerLibcxxHowTo. That pages says that if you don't do that you'll get lots of false positives.
This is my import into a google third_party directory running our internal msan testing; I assume that it's correct, but I don't have all the precise invocation flags. I can attempt a loca repro and try to verify that as well.
There is one additional msan failure in this run.
==6982==WARNING: MemorySanitizer: use-of-uninitialized-value
#0 0x7f881efd9252 in ~basic_string third_party/crosstool/v18/stable/toolchain/bin/../include/c++/v1/string:1104:9
#1 0x7f881efd9252 in __complete<stdexec::__receivers::set_error_t, std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> > > third_party/stdexec/include/exec/repeat_effect_until.hpp:124:11
#2 0x7f881efd9252 in tag_invoke<stdexec::__receivers::set_error_t, std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> > > third_party/stdexec/include/exec/repeat_effect_until.hpp:55:28
#3 0x7f881efd9252 in tag_invoke<stdexec::__receivers::set_error_t, stdexec::__let::__receiver_with_sched<exec::__repeat_effect_until::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >::__t, exec::__trampoline::__scheduler>, std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> > > third_party/stdexec/include/stdexec/execution.hpp:3406:9
#4 0x7f881efd9252 in operator()<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> > > third_party/stdexec/include/stdexec/execution.hpp:2059:13
#5 0x7f881efd9252 in operator()<(lambda at ./third_party/stdexec/include/stdexec/execution.hpp:2058:11), stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long, 0UL> *, std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> > > &, 0UL, std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> > > third_party/stdexec/include/stdexec/__detail/__tuple.hpp:87:16
#6 0x7f881efd9252 in operator()<stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long, 0UL> *, std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> > >, stdexec::__let::__receiver_with_sched<exec::__repeat_effect_until::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >::__t, exec::__trampoline::__scheduler> > third_party/stdexec/include/stdexec/execution.hpp:2057:9
#7 0x7f881efd9252 in operator()<> third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:380:13
#8 0x7f881efd9252 in operator()<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:379:11), stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long> *> &> third_party/stdexec/include/stdexec/__detail/__tuple.hpp:87:16
#9 0x7f881efd9252 in __bind<stdexec::__let::__let_state<exec::__repeat_effect_until::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >::__t, stdexec::__detail::__always<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::__sexpr<stdexec::__just::just_error_t, stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long, 0UL> *, std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> > > > >, stdexec::__receivers::set_value_t, exec::__trampoline::__scheduler, std::__msan::tuple<> >, exec::__repeat_effect_until::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >::__t> third_party/stdexec/include/stdexec/execution.hpp:3711:11
#10 0x7f881efd9252 in operator()<stdexec::__let::__let_state<exec::__repeat_effect_until::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >::__t, stdexec::__detail::__always<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::__sexpr<stdexec::__just::just_error_t, stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long, 0UL> *, std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> > > > >, stdexec::__receivers::set_value_t, exec::__trampoline::__scheduler, std::__msan::tuple<> >, exec::__repeat_effect_until::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >::__t, stdexec::__receivers::set_value_t> third_party/stdexec/include/stdexec/execution.hpp:3725:11
#11 0x7f881efd9252 in exec::__trampoline::__scheduler::__operation<stdexec::__detail::__receiver<exec::__repeat_effect_until::__receiver<stdexec::__sexpr<auto stdexec::__detail::(anonymous namespace)::$_0::operator()<exec::__repeat_effect_until::__repeat_effect_until_tag, stdexec::__sexpr<auto stdexec::__detail::(anonymous namespace)::$_0::operator()<stdexec::__just::just_error_t, stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long, 0ul>*, std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char>>>>(stdexec::__just::just_error_t, stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long, 0ul>*, std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char>>>&&) const::'lambda'<typename $T, typename $T0>(stdexec::__just::just_error_t, $T0&&)>>(stdexec::__just::just_error_t, stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long, 0ul>*, std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char>>>&&) const::'lambda'<typename $T1, typename $T2>(stdexec::__just::just_error_t, $T0&&)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char>>, stdexec::__env::empty_env>>>, stdexec::__sexpr<auto stdexec::__detail::(anonymous namespace)::$_0::operator()<stdexec::__let::__let_t<stdexec::__receivers::set_value_t, stdexec::default_domain>, stdexec::__detail::__always<stdexec::__sexpr<auto stdexec::__detail::(anonymous namespace)::$_0::operator()<stdexec::__just::just_error_t, stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long, 0ul>*, std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char>>>>(stdexec::__just::just_error_t, stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long, 0ul>*, std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char>>>&&) const::'lambda'<typename $T, typename $T0>(stdexec::__just::just_error_t, $T0&&)>, stdexec::__sexpr<stdexec::__just::just_error_t, stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long, 0ul>*, std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char>>>>>, exec::__trampoline::__scheduler::__schedule_sender>(stdexec::__just::just_error_t, stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long, 0ul>*, std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char>>>&&) const::'lambda'<typename $T3, typename $T4>(stdexec::__just::just_error_t, $T0&&)>, stdexec::__mconstant_<0ul>*>>::__t::__execute_impl(exec::__trampoline::__scheduler::__operation_base*) third_party/stdexec/include/exec/trampoline_scheduler.hpp:115:15
#12 0x7f881efd5a46 in __execute third_party/stdexec/include/exec/trampoline_scheduler.hpp:74:11
#13 0x7f881efd5a46 in exec::__trampoline::tag_invoke(stdexec::__start::start_t, exec::__trampoline::__scheduler::__operation_base&) third_party/stdexec/include/exec/trampoline_scheduler.hpp:81:20
#14 0x7f881efd4522 in operator()<stdexec::__start::start_t, exec::__trampoline::__scheduler::__operation<stdexec::__detail::__receiver<exec::__repeat_effect_until::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >, stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::__mconstant_<0UL> *> >::__t> third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:202:8
#15 0x7f881efd4522 in operator()<exec::__trampoline::__scheduler::__operation<stdexec::__detail::__receiver<exec::__repeat_effect_until::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >, stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::__mconstant_<0UL> *> >::__t> third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:380:13
#16 0x7f881efd4522 in operator()<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:379:11), stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long, 0UL> *, exec::__trampoline::__scheduler::__operation<stdexec::__detail::__receiver<exec::__repeat_effect_until::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >, stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::__mconstant_<0UL> *> >::__t> &, 0UL, exec::__trampoline::__scheduler::__operation<stdexec::__detail::__receiver<exec::__repeat_effect_until::__receiver<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::_Id<(anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > >, stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, stdexec::__mconstant_<0UL> *> >::__t> third_party/stdexec/include/stdexec/__detail/__tuple.hpp:87:16
#17 0x7f881efd4522 in __start third_party/stdexec/include/exec/repeat_effect_until.hpp:104:9
#18 0x7f881efd4522 in operator()<exec::__repeat_effect_until::__repeat_effect_state<stdexec::__sexpr<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:594:18)>, (anonymous namespace)::expect_error_receiver<std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> >, stdexec::__env::empty_env> > > third_party/stdexec/include/exec/repeat_effect_until.hpp:170:17
#19 0x7f881efd4522 in operator()<> third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:380:13
#20 0x7f881efd4522 in operator()<(lambda at ./third_party/stdexec/include/stdexec/__detail/__basic_sender.hpp:379:11), stdexec::__tup::__tuple<std::__msan::integer_sequence<unsigned long> *> &> third_party/stdexec/include/stdexec/__detail/__tuple.hpp:87:16
#21 0x7f881efd4522 in (anonymous namespace)::C_A_T_C_H_T_E_S_T_14() third_party/stdexec/test/exec/test_repeat_effect_until.cpp:132:5
...
SUMMARY: MemorySanitizer: use-of-uninitialized-value third_party/stdexec/include/exec/repeat_effect_until.hpp:124:11 in __complete<stdexec::__receivers::set_error_t, std::__msan::basic_string<char, std::__msan::char_traits<char>, std::__msan::allocator<char> > >
Exiting
I can repeat this on a docker image; I have pushed (I think) most of what's required to duplicate it here:
Basically, the steps are:
- Build a docker container with the latest clang10 build (see
Dockerfile.msan
; move it to some other location). - Run the stdexec tests using
./build_msan.sh
With this I see the following error output:
==================== Test output for //test:exec_test_repeat_n:
==36401==WARNING: MemorySanitizer: use-of-uninitialized-value
#0 0x7fd4b170bfc0 (/opt/llvm/libcxx-msan/lib/libc++.so.1+0x7ffc0)
#1 0x564473babe96 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x226e96)
#2 0x564473bab714 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x226714)
#3 0x564473bab4da (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x2264da)
#4 0x564473baaeb4 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x225eb4)
#5 0x564473baa86a (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x22586a)
#6 0x564473baa635 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x225635)
#7 0x564473baa1b1 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x2251b1)
#8 0x564473baa003 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x225003)
#9 0x564473ba46b2 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x21f6b2)
#10 0x564473ba2fda (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x21dfda)
#11 0x564473ba2d89 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x21dd89)
#12 0x564473ba2503 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x21d503)
#13 0x564473ba2325 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x21d325)
#14 0x564473ba1ea5 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x21cea5)
#15 0x564473ba1d03 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x21cd03)
#16 0x564473ba1a5a (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x21ca5a)
#17 0x564473ba10c0 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x21c0c0)
#18 0x564473ba0c3a (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x21bc3a)
#19 0x564473b9089e (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x20b89e)
#20 0x564473b8eeba (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x209eba)
#21 0x564473b8ec6e (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x209c6e)
#22 0x564473ca1ae9 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x31cae9)
#23 0x564473ca1374 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x31c374)
#24 0x564473bbf929 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x23a929)
#25 0x564473bbf500 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x23a500)
#26 0x564473bbf07a (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x23a07a)
#27 0x564473bbe79c (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x23979c)
#28 0x564473bbda9f (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x238a9f)
#29 0x564473bbd940 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x238940)
#30 0x564473bbd693 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x238693)
#31 0x564473a70aca (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0xebaca)
#32 0x7fd4b0e1407c (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/../_solib_k8/libtest_Slibtest_Ucommon.so+0x10d07c)
#33 0x7fd4b0df5722 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/../_solib_k8/libtest_Slibtest_Ucommon.so+0xee722)
#34 0x7fd4b0df54af (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/../_solib_k8/libtest_Slibtest_Ucommon.so+0xee4af)
#35 0x7fd4b0dec933 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/../_solib_k8/libtest_Slibtest_Ucommon.so+0xe5933)
#36 0x7fd4b0de9691 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/../_solib_k8/libtest_Slibtest_Ucommon.so+0xe2691)
#37 0x7fd4b0e019d5 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/../_solib_k8/libtest_Slibtest_Ucommon.so+0xfa9d5)
#38 0x7fd4b0dfdf36 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/../_solib_k8/libtest_Slibtest_Ucommon.so+0xf6f36)
#39 0x7fd4b0dfd304 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/../_solib_k8/libtest_Slibtest_Ucommon.so+0xf6304)
#40 0x7fd4b0f36987 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/../_solib_k8/libtest_Slibtest_Ucommon.so+0x22f987)
#41 0x7fd4b0e67617 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/../_solib_k8/libtest_Slibtest_Ucommon.so+0x160617)
#42 0x7fd4b08b71c9 (/lib/x86_64-linux-gnu/libc.so.6+0x271c9) (BuildId: 51657f818beb1ae70372216a99b7412b8a100a20)
#43 0x7fd4b08b7284 (/lib/x86_64-linux-gnu/libc.so.6+0x27284) (BuildId: 51657f818beb1ae70372216a99b7412b8a100a20)
#44 0x5644739d4f70 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_n+0x4ff70)
SUMMARY: MemorySanitizer: use-of-uninitialized-value (/opt/llvm/libcxx-msan/lib/libc++.so.1+0x7ffc0)
ORIGIN: invalid (0). Might be a bug in MemorySanitizer origin tracking.
This could still be a bug in your code, too!
Exiting
================================================================================
(02:57:32) FAIL: //test:exec_test_repeat_effect_until (see /root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/testlogs/test/exec_test_repeat_effect_until/test.log)
(02:57:32) INFO: From Testing //test:exec_test_repeat_effect_until:
==================== Test output for //test:exec_test_repeat_effect_until:
==36407==WARNING: MemorySanitizer: use-of-uninitialized-value
#0 0x7ff4fe0f0fc0 (/opt/llvm/libcxx-msan/lib/libc++.so.1+0x7ffc0)
#1 0x563cbae4b444 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_effect_until+0x1e8444)
#2 0x563cbae4adb4 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_effect_until+0x1e7db4)
#3 0x563cbae4ab7a (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_effect_until+0x1e7b7a)
#4 0x563cbae4a554 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_effect_until+0x1e7554)
#5 0x563cbae49f0a (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_effect_until+0x1e6f0a)
#6 0x563cbae49cd5 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_effect_until+0x1e6cd5)
#7 0x563cbae49851 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_effect_until+0x1e6851)
#8 0x563cbae496a3 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_effect_until+0x1e66a3)
#9 0x563cbae424f3 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_effect_until+0x1df4f3)
#10 0x563cbae40d1a (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_effect_until+0x1ddd1a)
#11 0x563cbae40ace (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_effect_until+0x1ddace)
#12 0x563cbaf206f9 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_effect_until+0x2bd6f9)
#13 0x563cbaf1ff84 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_effect_until+0x2bcf84)
#14 0x563cbae56e19 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_effect_until+0x1f3e19)
#15 0x563cbae569f0 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_effect_until+0x1f39f0)
#16 0x563cbae5656a (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_effect_until+0x1f356a)
#17 0x563cbae56272 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_effect_until+0x1f3272)
#18 0x563cbae558cf (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_effect_until+0x1f28cf)
#19 0x563cbae55770 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_effect_until+0x1f2770)
#20 0x563cbae554c3 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_effect_until+0x1f24c3)
#21 0x563cbad47978 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_effect_until+0xe4978)
#22 0x7ff4fd7f907c (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/../_solib_k8/libtest_Slibtest_Ucommon.so+0x10d07c)
#23 0x7ff4fd7da722 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/../_solib_k8/libtest_Slibtest_Ucommon.so+0xee722)
#24 0x7ff4fd7da4af (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/../_solib_k8/libtest_Slibtest_Ucommon.so+0xee4af)
#25 0x7ff4fd7d1933 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/../_solib_k8/libtest_Slibtest_Ucommon.so+0xe5933)
#26 0x7ff4fd7ce691 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/../_solib_k8/libtest_Slibtest_Ucommon.so+0xe2691)
#27 0x7ff4fd7e69d5 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/../_solib_k8/libtest_Slibtest_Ucommon.so+0xfa9d5)
#28 0x7ff4fd7e2f36 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/../_solib_k8/libtest_Slibtest_Ucommon.so+0xf6f36)
#29 0x7ff4fd7e2304 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/../_solib_k8/libtest_Slibtest_Ucommon.so+0xf6304)
#30 0x7ff4fd91b987 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/../_solib_k8/libtest_Slibtest_Ucommon.so+0x22f987)
#31 0x7ff4fd84c617 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/../_solib_k8/libtest_Slibtest_Ucommon.so+0x160617)
#32 0x7ff4fd29c1c9 (/lib/x86_64-linux-gnu/libc.so.6+0x271c9) (BuildId: 51657f818beb1ae70372216a99b7412b8a100a20)
#33 0x7ff4fd29c284 (/lib/x86_64-linux-gnu/libc.so.6+0x27284) (BuildId: 51657f818beb1ae70372216a99b7412b8a100a20)
#34 0x563cbacb3040 (/root/.cache/bazel/_bazel_root/26a64e8d80c92da3a7972d64d2e9c597/execroot/stdexec/bazel-out/k8-msan-dbg/bin/test/exec_test_repeat_effect_until+0x50040)
SUMMARY: MemorySanitizer: use-of-uninitialized-value (/opt/llvm/libcxx-msan/lib/libc++.so.1+0x7ffc0)
ORIGIN: invalid (0). Might be a bug in MemorySanitizer origin tracking.
This could still be a bug in your code, too!
I patched it in and the MSAN error no longer occurs. Thanks!