NVIDIA/stdexec

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:

laramiel@6afa6cc

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!

@laramiel could you pls try #1239 and let me know if it fixes the error you're seeing?

I patched it in and the MSAN error no longer occurs. Thanks!