Can not destructure a sender with multiple value
SamGaaWaa opened this issue · 0 comments
SamGaaWaa commented
exec::task<void> test(){
auto [x, ptr] = co_await ex::just(2, std::make_unique<int>(2));
std::cout << x << ' ' << *ptr << '\n';
}
AddressSanitizer:DEADLYSIGNAL
=================================================================
==1==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x000000404d66 bp 0x7ffc00bd50d0 sp 0x7ffc00bd5050 T0)
==1==The signal is caused by a READ memory access.
==1==Hint: address points to the zero page.
#0 0x404d66 in test /app/example.cpp:10
#1 0x410a3f in std::__n4861::coroutine_handle<void>::resume() const /opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/coroutine:135
#2 0x424911 in void stdexec::__as_awaitable::tag_invoke<stdexec::__receivers::set_value_t, int, std::unique_ptr<int, std::default_delete<int> > >(stdexec::__receivers::set_value_t, stdexec::__as_awaitable::__receiver_base<std::tuple<int&&, std::unique_ptr<int, std::default_delete<int> >&&> >&&, int&&, std::unique_ptr<int, std::default_delete<int> >&&) /opt/compiler-explorer/libs/stdexec/trunk/include/stdexec/execution.hpp:1520
#3 0x40e154 in decltype (tag_invoke((__declval<stdexec::__receivers::set_value_t>)(), (__declval<stdexec::__as_awaitable::__receiver<stdexec::_Id<exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >::__promise>, std::tuple<int&&, std::unique_ptr<int, std::default_delete<int> >&&> >::__t>)(), (__declval<int>)(), (__declval<std::unique_ptr<int, std::default_delete<int> > >)())) stdexec::__tag_invoke::tag_invoke_t::operator()<stdexec::__receivers::set_value_t, stdexec::__as_awaitable::__receiver<stdexec::_Id<exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >::__promise>, std::tuple<int&&, std::unique_ptr<int, std::default_delete<int> >&&> >::__t, int, std::unique_ptr<int, std::default_delete<int> > >(stdexec::__receivers::set_value_t, stdexec::__as_awaitable::__receiver<stdexec::_Id<exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >::__promise>, std::tuple<int&&, std::unique_ptr<int, std::default_delete<int> >&&> >::__t&&, int&&, std::unique_ptr<int, std::default_delete<int> >&&) const /opt/compiler-explorer/libs/stdexec/trunk/include/stdexec/functional.hpp:349
#4 0x40e154 in void stdexec::__receivers::set_value_t::operator()<stdexec::__as_awaitable::__receiver<stdexec::_Id<exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >::__promise>, std::tuple<int&&, std::unique_ptr<int, std::default_delete<int> >&&> >::__t, int, std::unique_ptr<int, std::default_delete<int> > >(stdexec::__as_awaitable::__receiver<stdexec::_Id<exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >::__promise>, std::tuple<int&&, std::unique_ptr<int, std::default_delete<int> >&&> >::__t&&, int&&, std::unique_ptr<int, std::default_delete<int> >&&) const /opt/compiler-explorer/libs/stdexec/trunk/include/stdexec/execution.hpp:84
#5 0x40e154 in operator()<int, std::unique_ptr<int, std::default_delete<int> >, stdexec::__receivers::set_value_t> /opt/compiler-explorer/libs/stdexec/trunk/include/stdexec/execution.hpp:4161
#6 0x40d72b in operator()<stdexec::__schedule_from::__receiver2<exec::any_receiver_ref<stdexec::completion_signatures<stdexec::__receivers::set_error_t(std::__exception_ptr::exception_ptr), stdexec::__receivers::set_stopped_t()> >::any_sender<>::any_scheduler<>, stdexec::__sexpr<<lambda closure object>stdexec::(anonymous namespace)::<lambda()>(), stdexec::(anonymous namespace)::__anon>, stdexec::__as_awaitable::__receiver<stdexec::_Id<exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >::__promise>, std::tuple<int&&, std::unique_ptr<int, std::default_delete<int> >&&> >::__t>::set_value() &&::<lambda(_Tup&)>::<lambda(auto:65, _Args& ...)>, stdexec::__receivers::set_value_t&, int&, std::unique_ptr<int, std::default_delete<int> >&> /opt/compiler-explorer/libs/stdexec/trunk/include/stdexec/functional.hpp:115
#7 0x40d72b in operator()<stdexec::__schedule_from::__receiver2<exec::any_receiver_ref<stdexec::completion_signatures<stdexec::__receivers::set_error_t(std::__exception_ptr::exception_ptr), stdexec::__receivers::set_stopped_t()> >::any_sender<>::any_scheduler<>, stdexec::__sexpr<<lambda closure object>stdexec::(anonymous namespace)::<lambda()>(), stdexec::(anonymous namespace)::__anon>, stdexec::__as_awaitable::__receiver<stdexec::_Id<exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >::__promise>, std::tuple<int&&, std::unique_ptr<int, std::default_delete<int> >&&> >::__t>::set_value() &&::<lambda(_Tup&)>::<lambda(auto:65, _Args& ...)>, stdexec::__receivers::set_value_t&, int&, std::unique_ptr<int, std::default_delete<int> >&> /opt/compiler-explorer/libs/stdexec/trunk/include/stdexec/functional.hpp:216
#8 0x40d72b in __impl<0, 1, 2, stdexec::__schedule_from::__receiver2<exec::any_receiver_ref<stdexec::completion_signatures<stdexec::__receivers::set_error_t(std::__exception_ptr::exception_ptr), stdexec::__receivers::set_stopped_t()> >::any_sender<>::any_scheduler<>, stdexec::__sexpr<<lambda closure object>stdexec::(anonymous namespace)::<lambda()>(), stdexec::(anonymous namespace)::__anon>, stdexec::__as_awaitable::__receiver<stdexec::_Id<exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >::__promise>, std::tuple<int&&, std::unique_ptr<int, std::default_delete<int> >&&> >::__t>::set_value() &&::<lambda(_Tup&)>::<lambda(auto:65, _Args& ...)>, std::tuple<stdexec::__receivers::set_value_t, int, std::unique_ptr<int, std::default_delete<int> > >&> /opt/compiler-explorer/libs/stdexec/trunk/include/stdexec/functional.hpp:247
#9 0x40d72b in operator()<stdexec::__schedule_from::__receiver2<exec::any_receiver_ref<stdexec::completion_signatures<stdexec::__receivers::set_error_t(std::__exception_ptr::exception_ptr), stdexec::__receivers::set_stopped_t()> >::any_sender<>::any_scheduler<>, stdexec::__sexpr<<lambda closure object>stdexec::(anonymous namespace)::<lambda()>(), stdexec::(anonymous namespace)::__anon>, stdexec::__as_awaitable::__receiver<stdexec::_Id<exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >::__promise>, std::tuple<int&&, std::unique_ptr<int, std::default_delete<int> >&&> >::__t>::set_value() &&::<lambda(_Tup&)>::<lambda(auto:65, _Args& ...)>, std::tuple<stdexec::__receivers::set_value_t, int, std::unique_ptr<int, std::default_delete<int> > >&> /opt/compiler-explorer/libs/stdexec/trunk/include/stdexec/functional.hpp:277
#10 0x40d72b in operator()<std::tuple<stdexec::__receivers::set_value_t, int, std::unique_ptr<int, std::default_delete<int> > > > /opt/compiler-explorer/libs/stdexec/trunk/include/stdexec/execution.hpp:4159
#11 0x40cf7c in __invoke_impl<void, stdexec::__schedule_from::__receiver2<exec::any_receiver_ref<stdexec::completion_signatures<stdexec::__receivers::set_error_t(std::__exception_ptr::exception_ptr), stdexec::__receivers::set_stopped_t()> >::any_sender<>::any_scheduler<>, stdexec::__sexpr<<lambda closure object>stdexec::(anonymous namespace)::<lambda()>(), stdexec::(anonymous namespace)::__anon>, stdexec::__as_awaitable::__receiver<stdexec::_Id<exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >::__promise>, std::tuple<int&&, std::unique_ptr<int, std::default_delete<int> >&&> >::__t>::set_value() &&::<lambda(_Tup&)>, std::tuple<stdexec::__receivers::set_value_t, int, std::unique_ptr<int, std::default_delete<int> > >&> /opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/invoke.h:61
#12 0x40cb3c in __invoke<stdexec::__schedule_from::__receiver2<exec::any_receiver_ref<stdexec::completion_signatures<stdexec::__receivers::set_error_t(std::__exception_ptr::exception_ptr), stdexec::__receivers::set_stopped_t()> >::any_sender<>::any_scheduler<>, stdexec::__sexpr<<lambda closure object>stdexec::(anonymous namespace)::<lambda()>(), stdexec::(anonymous namespace)::__anon>, stdexec::__as_awaitable::__receiver<stdexec::_Id<exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >::__promise>, std::tuple<int&&, std::unique_ptr<int, std::default_delete<int> >&&> >::__t>::set_value() &&::<lambda(_Tup&)>, std::tuple<stdexec::__receivers::set_value_t, int, std::unique_ptr<int, std::default_delete<int> > >&> /opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/invoke.h:96
#13 0x40c6a5 in __visit_invoke /opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/variant:1031
#14 0x40c7a6 in __do_visit<std::__detail::__variant::__deduce_visit_result<void>, stdexec::__schedule_from::__receiver2<exec::any_receiver_ref<stdexec::completion_signatures<stdexec::__receivers::set_error_t(std::__exception_ptr::exception_ptr), stdexec::__receivers::set_stopped_t()> >::any_sender<>::any_scheduler<>, stdexec::__sexpr<<lambda closure object>stdexec::(anonymous namespace)::<lambda()>(), stdexec::(anonymous namespace)::__anon>, stdexec::__as_awaitable::__receiver<stdexec::_Id<exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >::__promise>, std::tuple<int&&, std::unique_ptr<int, std::default_delete<int> >&&> >::__t>::set_value() &&::<lambda(_Tup&)>, std::variant<std::monostate, std::tuple<stdexec::__receivers::set_value_t, int, std::unique_ptr<int, std::default_delete<int> > > >&> /opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/variant:1784
#15 0x40c865 in visit<stdexec::__schedule_from::__receiver2<exec::any_receiver_ref<stdexec::completion_signatures<stdexec::__receivers::set_error_t(std::__exception_ptr::exception_ptr), stdexec::__receivers::set_stopped_t()> >::any_sender<>::any_scheduler<>, stdexec::__sexpr<<lambda closure object>stdexec::(anonymous namespace)::<lambda()>(), stdexec::(anonymous namespace)::__anon>, stdexec::__as_awaitable::__receiver<stdexec::_Id<exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >::__promise>, std::tuple<int&&, std::unique_ptr<int, std::default_delete<int> >&&> >::__t>::set_value() &&::<lambda(_Tup&)>, std::variant<std::monostate, std::tuple<stdexec::__receivers::set_value_t, int, std::unique_ptr<int, std::default_delete<int> > > >&> /opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/variant:1846
#16 0x40bb9f in set_value /opt/compiler-explorer/libs/stdexec/trunk/include/stdexec/execution.hpp:4154
#17 0x40979e in __call_set_value<stdexec::__schedule_from::__receiver2<exec::any_receiver_ref<stdexec::completion_signatures<stdexec::__receivers::set_error_t(std::__exception_ptr::exception_ptr), stdexec::__receivers::set_stopped_t()> >::any_sender<>::any_scheduler<>, stdexec::__sexpr<<lambda closure object>stdexec::(anonymous namespace)::<lambda()>(), stdexec::(anonymous namespace)::__anon>, stdexec::__as_awaitable::__receiver<stdexec::_Id<exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >::__promise>, std::tuple<int&&, std::unique_ptr<int, std::default_delete<int> >&&> >::__t> > /opt/compiler-explorer/libs/stdexec/trunk/include/stdexec/execution.hpp:2344
#18 0x40979e in tag_invoke<stdexec::__receivers::set_value_t> /opt/compiler-explorer/libs/stdexec/trunk/include/stdexec/execution.hpp:2378
#19 0x40979e in operator()<stdexec::__receivers::set_value_t, stdexec::__schedule_from::__receiver2<exec::any_receiver_ref<stdexec::completion_signatures<stdexec::__receivers::set_error_t(std::__exception_ptr::exception_ptr), stdexec::__receivers::set_stopped_t()> >::any_sender<>::any_scheduler<>, stdexec::__sexpr<<lambda closure object>stdexec::(anonymous namespace)::<lambda()>(), stdexec::(anonymous namespace)::__anon>, stdexec::__as_awaitable::__receiver<stdexec::_Id<exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >::__promise>, std::tuple<int&&, std::unique_ptr<int, std::default_delete<int> >&&> >::__t> > /opt/compiler-explorer/libs/stdexec/trunk/include/stdexec/functional.hpp:349
#20 0x40979e in operator()<stdexec::__schedule_from::__receiver2<exec::any_receiver_ref<stdexec::completion_signatures<stdexec::__receivers::set_error_t(std::__exception_ptr::exception_ptr), stdexec::__receivers::set_stopped_t()> >::any_sender<>::any_scheduler<>, stdexec::__sexpr<<lambda closure object>stdexec::(anonymous namespace)::<lambda()>(), stdexec::(anonymous namespace)::__anon>, stdexec::__as_awaitable::__receiver<stdexec::_Id<exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >::__promise>, std::tuple<int&&, std::unique_ptr<int, std::default_delete<int> >&&> >::__t> > /opt/compiler-explorer/libs/stdexec/trunk/include/stdexec/execution.hpp:84
#21 0x40979e in tag_invoke<stdexec::__receivers::set_value_t, exec::__any::__stoppable_receiver<stdexec::_Id<stdexec::__schedule_from::__receiver2<exec::any_receiver_ref<stdexec::completion_signatures<stdexec::__receivers::set_error_t(std::__exception_ptr::exception_ptr), stdexec::__receivers::set_stopped_t()> >::any_sender<>::any_scheduler<>, stdexec::__sexpr<<lambda closure object>stdexec::(anonymous namespace)::<lambda()>(), stdexec::(anonymous namespace)::__anon>, stdexec::__as_awaitable::__receiver<stdexec::_Id<exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >::__promise>, std::tuple<int&&, std::unique_ptr<int, std::default_delete<int> >&&> >::__t> > >::__t> /opt/compiler-explorer/libs/stdexec/trunk/include/exec/any_sender_of.hpp:814
#22 0x4089aa in operator()<stdexec::__receivers::set_value_t, exec::__any::__stoppable_receiver<stdexec::_Id<stdexec::__schedule_from::__receiver2<exec::any_receiver_ref<stdexec::completion_signatures<stdexec::__receivers::set_error_t(std::__exception_ptr::exception_ptr), stdexec::__receivers::set_stopped_t()> >::any_sender<>::any_scheduler<>, stdexec::__sexpr<<lambda closure object>stdexec::(anonymous namespace)::<lambda()>(), stdexec::(anonymous namespace)::__anon>, stdexec::__as_awaitable::__receiver<stdexec::_Id<exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >::__promise>, std::tuple<int&&, std::unique_ptr<int, std::default_delete<int> >&&> >::__t> > >::__t> /opt/compiler-explorer/libs/stdexec/trunk/include/stdexec/functional.hpp:349
#23 0x4089aa in operator()<exec::__any::__stoppable_receiver<stdexec::_Id<stdexec::__schedule_from::__receiver2<exec::any_receiver_ref<stdexec::completion_signatures<stdexec::__receivers::set_error_t(std::__exception_ptr::exception_ptr), stdexec::__receivers::set_stopped_t()> >::any_sender<>::any_scheduler<>, stdexec::__sexpr<<lambda closure object>stdexec::(anonymous namespace)::<lambda()>(), stdexec::(anonymous namespace)::__anon>, stdexec::__as_awaitable::__receiver<stdexec::_Id<exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >::__promise>, std::tuple<int&&, std::unique_ptr<int, std::default_delete<int> >&&> >::__t> > >::__t> /opt/compiler-explorer/libs/stdexec/trunk/include/stdexec/execution.hpp:84
#24 0x4089aa in operator() /opt/compiler-explorer/libs/stdexec/trunk/include/exec/any_sender_of.hpp:609
#25 0x408a08 in _FUN /opt/compiler-explorer/libs/stdexec/trunk/include/exec/any_sender_of.hpp:608
#26 0x422697 in void exec::__any::__rec::tag_invoke<stdexec::__receivers::set_value_t, exec::__any::__rec::__ref<stdexec::completion_signatures<stdexec::__receivers::set_error_t (std::__exception_ptr::exception_ptr), stdexec::__receivers::set_stopped_t (), stdexec::__receivers::set_value_t ()>>>(stdexec::__receivers::set_value_t, exec::__any::__rec::__ref<stdexec::completion_signatures<stdexec::__receivers::set_error_t (std::__exception_ptr::exception_ptr), stdexec::__receivers::set_stopped_t (), stdexec::__receivers::set_value_t ()>>&&) /opt/compiler-explorer/libs/stdexec/trunk/include/exec/any_sender_of.hpp:680
#27 0x424f5a in decltype (tag_invoke((__declval<stdexec::__receivers::set_value_t>)(), (__declval<exec::__any::__rec::__ref<stdexec::completion_signatures<stdexec::__receivers::set_error_t (std::__exception_ptr::exception_ptr), stdexec::__receivers::set_stopped_t (), stdexec::__receivers::set_value_t ()>> >)())) stdexec::__tag_invoke::tag_invoke_t::operator()<stdexec::__receivers::set_value_t, exec::__any::__rec::__ref<stdexec::completion_signatures<stdexec::__receivers::set_error_t (std::__exception_ptr::exception_ptr), stdexec::__receivers::set_stopped_t (), stdexec::__receivers::set_value_t ()>> >(stdexec::__receivers::set_value_t, exec::__any::__rec::__ref<stdexec::completion_signatures<stdexec::__receivers::set_error_t (std::__exception_ptr::exception_ptr), stdexec::__receivers::set_stopped_t (), stdexec::__receivers::set_value_t ()>>&&) const /opt/compiler-explorer/libs/stdexec/trunk/include/stdexec/functional.hpp:349
#28 0x424f5a in void stdexec::__receivers::set_value_t::operator()<exec::__any::__rec::__ref<stdexec::completion_signatures<stdexec::__receivers::set_error_t (std::__exception_ptr::exception_ptr), stdexec::__receivers::set_stopped_t (), stdexec::__receivers::set_value_t ()>>>(exec::__any::__rec::__ref<stdexec::completion_signatures<stdexec::__receivers::set_error_t (std::__exception_ptr::exception_ptr), stdexec::__receivers::set_stopped_t (), stdexec::__receivers::set_value_t ()>>&&) const /opt/compiler-explorer/libs/stdexec/trunk/include/stdexec/execution.hpp:84
#29 0x424f5a in stdexec::__loop::__operation<exec::__any::__rec::__ref<stdexec::completion_signatures<stdexec::__receivers::set_error_t (std::__exception_ptr::exception_ptr), stdexec::__receivers::set_stopped_t (), stdexec::__receivers::set_value_t ()>> >::__t::__execute_impl(stdexec::__loop::__task*) /opt/compiler-explorer/libs/stdexec/trunk/include/stdexec/execution.hpp:3873
#30 0x411149 in stdexec::__loop::__task::__execute() /opt/compiler-explorer/libs/stdexec/trunk/include/stdexec/execution.hpp:3853
#31 0x41143b in stdexec::__loop::run_loop::run() /opt/compiler-explorer/libs/stdexec/trunk/include/stdexec/execution.hpp:4019
#32 0x41501e in std::optional<stdexec::__i<_Ok<exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >, stdexec::__q<std::tuple> > >::__g<stdexec::__mtry_catch<stdexec::__mtry_eval_<stdexec::__sync_wait::__sync_wait_result_impl>, stdexec::_WITH_META_FUNCTION_T_<stdexec::__sync_wait::__sync_wait_result_impl> >::__f, exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >, stdexec::__q<std::tuple> > > stdexec::__sync_wait::sync_wait_t::apply_sender<exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> > >(exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >&&) const /opt/compiler-explorer/libs/stdexec/trunk/include/stdexec/execution.hpp:5618
#33 0x41539f in decltype(auto) stdexec::default_domain::apply_sender<stdexec::__sync_wait::sync_wait_t, exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >>(stdexec::__sync_wait::sync_wait_t, exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >&&) const /opt/compiler-explorer/libs/stdexec/trunk/include/stdexec/__detail/__domain.hpp:119
#34 0x41539f in decltype(auto) stdexec::apply_sender_t::operator()<stdexec::default_domain, stdexec::__sync_wait::sync_wait_t, exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >>(stdexec::default_domain, stdexec::__sync_wait::sync_wait_t, exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >&&) const /opt/compiler-explorer/libs/stdexec/trunk/include/stdexec/execution.hpp:670
#35 0x41539f in std::optional<stdexec::__sync_wait::__value_tuple_for<exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> > >::__t> stdexec::__sync_wait::sync_wait_t::operator()<exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> > >(exec::__task::basic_task<void, exec::__task::__default_task_context_impl<(exec::__task::__scheduler_affinity)1> >&&) const /opt/compiler-explorer/libs/stdexec/trunk/include/stdexec/execution.hpp:5585
#36 0x405e6a in main /app/example.cpp:20
#37 0x7f6632829d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)
#38 0x7f6632829e3f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e3f)
#39 0x402404 in _start (/app/output.s+0x402404)
AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV /app/example.cpp:10 in test
==1==ABORTING
but if explicitly define the result type, it works fine.
exec::task<void> test2(){
std::tuple<int, std::unique_ptr<int>> res = co_await ex::just(2, std::make_unique<int>(2));
std::cout << std::get<0>(res) << ' ' << *std::get<1>(res) << '\n';
}