tracel-ai / burn

Burn is a new comprehensive dynamic Deep Learning Framework built using Rust with extreme flexibility, compute efficiency and portability as its primary goals.
https://burn.dev
Apache License 2.0
8.43k stars 414 forks source link

Data race in `burn-ndarray` #1015

Open Luni-4 opened 9 months ago

Luni-4 commented 9 months ago

Describe the bug

ThreadSanitizer found a data race in burn-ndarray during a CI run

WARNING: ThreadSanitizer: data race (pid=15776)
  Write of size 4 at 0x7b54000102a4 by thread T13:
    #0 core::ops::function::impls::<impl core::ops::function::FnMut<A> for &F>::call_mut :? (burn_ndarray-51399133c42fa29e+0x1db73d) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #1 rayon::iter::plumbing::bridge_producer_consumer::helper :? (burn_ndarray-51399133c42fa29e+0x25062a) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #2 std::panicking::try::do_call burn_ndarray.901f863f1cbc3d57-cgu.08:? (burn_ndarray-51399133c42fa29e+0x24634f) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #3 std::panicking::try::do_call burn_ndarray.901f863f1cbc3d57-cgu.08:? (burn_ndarray-51399133c42fa29e+0x24634f) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #4 __rust_try.llvm.8478776680530700365 :? (burn_ndarray-51399133c42fa29e+0x257de1) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #5 _ZN10rayon_core4join12join_context28_$u7b$$u7b$closure$u7d$$u7d$17h93b9553cbbe82af7E.llvm.8478776680530700365 :? (burn_ndarray-51399133c42fa29e+0x23257b) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #6 rayon::iter::plumbing::bridge_producer_consumer::helper :? (burn_ndarray-51399133c42fa29e+0x250709) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #7 _ZN3std9panicking3try7do_call17h7d4c6747735fe6a6E.llvm.8478776680530700365 ??:? (burn_ndarray-51399133c42fa29e+0x24732d) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #8 __rust_try.llvm.8478776680530700365 :? (burn_ndarray-51399133c42fa29e+0x257de1) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #9 std::panicking::try :? (burn_ndarray-51399133c42fa29e+0x2431de) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #10 <rayon_core::job::StackJob<L,F,R> as rayon_core::job::Job>::execute ??:? (burn_ndarray-51399133c42fa29e+0x3245aa) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #11 rayon_core::registry::WorkerThread::wait_until_cold ??:? (burn_ndarray-51399133c42fa29e+0x45713) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #12 rayon_core::registry::ThreadBuilder::run ??:? (burn_ndarray-51399133c42fa29e+0x3e14aa) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #13 std::sys_common::backtrace::__rust_begin_short_backtrace :? (burn_ndarray-51399133c42fa29e+0x3eaf5f) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #14 _ZN3std9panicking3try7do_call17h6db1bd312721e32eE.llvm.4690975474636679939 ??:? (burn_ndarray-51399133c42fa29e+0x3e863e) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #15 __rust_try.llvm.4690975474636679939 :? (burn_ndarray-51399133c42fa29e+0x3e88e1) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #16 std::panicking::try :? (burn_ndarray-51399133c42fa29e+0x3e843c) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #17 core::ops::function::FnOnce::call_once{{vtable.shim}} rayon_core.3cdeec2b208d0fd2-cgu.03:? (burn_ndarray-51399133c42fa29e+0x3e61d3) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #18 <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once :? (burn_ndarray-51399133c42fa29e+0x4103fd) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #19 std::sys::unix::thread::Thread::new::thread_start std.ef3b3c2a2c925d54-cgu.13:? (burn_ndarray-51399133c42fa29e+0x43120c) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)

  Previous write of size 4 at 0x7b54000102a4 by thread T11:
    #0 core::ops::function::impls::<impl core::ops::function::FnMut<A> for &F>::call_mut :? (burn_ndarray-51399133c42fa29e+0x1db73d) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #1 rayon::iter::plumbing::bridge_producer_consumer::helper :? (burn_ndarray-51399133c42fa29e+0x25062a) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #2 std::panicking::try::do_call burn_ndarray.901f863f1cbc3d57-cgu.08:? (burn_ndarray-51399133c42fa29e+0x24634f) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #3 std::panicking::try::do_call burn_ndarray.901f863f1cbc3d57-cgu.08:? (burn_ndarray-51399133c42fa29e+0x24634f) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #4 __rust_try.llvm.8478776680530700365 :? (burn_ndarray-51399133c42fa29e+0x257de1) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #5 _ZN10rayon_core4join12join_context28_$u7b$$u7b$closure$u7d$$u7d$17h93b9553cbbe82af7E.llvm.8478776680530700365 :? (burn_ndarray-51399133c42fa29e+0x23257b) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #6 rayon::iter::plumbing::bridge_producer_consumer::helper :? (burn_ndarray-51399133c42fa29e+0x250709) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #7 std::panicking::try::do_call burn_ndarray.901f863f1cbc3d57-cgu.08:? (burn_ndarray-51399133c42fa29e+0x24634f) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #8 __rust_try.llvm.8478776680530700365 :? (burn_ndarray-51399133c42fa29e+0x257de1) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #9 _ZN10rayon_core4join12join_context28_$u7b$$u7b$closure$u7d$$u7d$17h93b9553cbbe82af7E.llvm.8478776680530700365 :? (burn_ndarray-51399133c42fa29e+0x23257b) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #10 rayon::iter::plumbing::bridge_producer_consumer::helper :? (burn_ndarray-51399133c42fa29e+0x250709) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #11 _ZN3std9panicking3try7do_call17h7d4c6747735fe6a6E.llvm.8478776680530700365 ??:? (burn_ndarray-51399133c42fa29e+0x24732d) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #12 __rust_try.llvm.8478776680530700365 :? (burn_ndarray-51399133c42fa29e+0x257de1) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #13 std::panicking::try :? (burn_ndarray-51399133c42fa29e+0x2431de) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #14 <rayon_core::job::StackJob<L,F,R> as rayon_core::job::Job>::execute ??:? (burn_ndarray-51399133c42fa29e+0x3245aa) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #15 rayon_core::registry::WorkerThread::wait_until_cold ??:? (burn_ndarray-51399133c42fa29e+0x45713) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #16 rayon_core::registry::ThreadBuilder::run ??:? (burn_ndarray-51399133c42fa29e+0x3e14aa) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #17 std::sys_common::backtrace::__rust_begin_short_backtrace :? (burn_ndarray-51399133c42fa29e+0x3eaf5f) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #18 _ZN3std9panicking3try7do_call17h6db1bd312721e32eE.llvm.4690975474636679939 ??:? (burn_ndarray-51399133c42fa29e+0x3e863e) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #19 __rust_try.llvm.4690975474636679939 :? (burn_ndarray-51399133c42fa29e+0x3e88e1) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #20 std::panicking::try :? (burn_ndarray-51399133c42fa29e+0x3e843c) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #21 core::ops::function::FnOnce::call_once{{vtable.shim}} rayon_core.3cdeec2b208d0fd2-cgu.03:? (burn_ndarray-51399133c42fa29e+0x3e61d3) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #22 <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once :? (burn_ndarray-51399133c42fa29e+0x4103fd) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #23 std::sys::unix::thread::Thread::new::thread_start std.ef3b3c2a2c925d54-cgu.13:? (burn_ndarray-51399133c42fa29e+0x43120c) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)

  Location is heap block of size 576 at 0x7b5400010180 allocated by thread T59:
    #0 calloc ??:? (burn_ndarray-51399133c42fa29e+0x508e6) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #1 __rdl_alloc_zeroed :? (burn_ndarray-51399133c42fa29e+0x43ff21) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #2 ndarray::impl_constructors::<impl ndarray::ArrayBase<S,D>>::zeros :? (burn_ndarray-51399133c42fa29e+0x1160a6) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #3 burn_ndarray::ops::conv::conv_transpose2d :? (burn_ndarray-51399133c42fa29e+0x1ea79c) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #4 burn_ndarray::ops::conv::conv_transpose2d :? (burn_ndarray-51399133c42fa29e+0x1ea79c) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #5 _ZN11burn_tensor6tensor3ops7modules4base9ModuleOps16conv_transpose1d17h9301b1adafe9179dE.llvm.15491920304318846839 :? (burn_ndarray-51399133c42fa29e+0x281e7b) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #6 burn_tensor::tensor::module::conv_transpose1d :? (burn_ndarray-51399133c42fa29e+0x2849ea) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #7 burn_ndarray::tests::ad_conv_transpose1d::tests::ConvTranspose1dTestCase::assert_grads burn_ndarray.901f863f1cbc3d57-cgu.15:? (burn_ndarray-51399133c42fa29e+0x331082) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #8 burn_ndarray::tests::ad_conv_transpose1d::tests::test_conv_transpose1d_complex :? (burn_ndarray-51399133c42fa29e+0x33209c) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #9 core::ops::function::FnOnce::call_once burn_ndarray.901f863f1cbc3d57-cgu.04:? (burn_ndarray-51399133c42fa29e+0x1a7ad8) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #10 test::__rust_begin_short_backtrace :? (burn_ndarray-51399133c42fa29e+0x34c66c) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #11 test::types::RunnableTest::run :? (burn_ndarray-51399133c42fa29e+0x366d10) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #12 _ZN3std9panicking3try7do_call17h0495a4fdb2d2a08dE.llvm.683101349411255501 ??:? (burn_ndarray-51399133c42fa29e+0x377c65) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #13 __rust_try.llvm.683101349411255501 :? (burn_ndarray-51399133c42fa29e+0x378d91) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #14 std::panicking::try :? (burn_ndarray-51399133c42fa29e+0x377ba3) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #15 test::run_test_in_process :? (burn_ndarray-51399133c42fa29e+0x34c939) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #16 std::sys_common::backtrace::__rust_begin_short_backtrace test.c50ec187226793ef-cgu.12:? (burn_ndarray-51399133c42fa29e+0x374672) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #17 _ZN3std9panicking3try7do_call17h6d0d6c9e0ee85664E.llvm.683101349411255501 ??:? (burn_ndarray-51399133c42fa29e+0x377f5d) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #18 __rust_try.llvm.683101349411255501 :? (burn_ndarray-51399133c42fa29e+0x378d91) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #19 std::panicking::try :? (burn_ndarray-51399133c42fa29e+0x377b1b) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #20 core::ops::function::FnOnce::call_once{{vtable.shim}} test.c50ec187226793ef-cgu.15:? (burn_ndarray-51399133c42fa29e+0x388619) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #21 <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once :? (burn_ndarray-51399133c42fa29e+0x4103fd) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #22 std::sys::unix::thread::Thread::new::thread_start std.ef3b3c2a2c925d54-cgu.13:? (burn_ndarray-51399133c42fa29e+0x43120c) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)

  Thread T13 (tid=15790, running) created by thread T7 at:
    #0 pthread_create ??:? (burn_ndarray-51399133c42fa29e+0x51dab) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #1 std::sys::unix::thread::Thread::new ??:? (burn_ndarray-51399133c42fa29e+0x430fe5) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #2 std::thread::Builder::spawn_unchecked :? (burn_ndarray-51399133c42fa29e+0x3e5a7b) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #3 <rayon_core::registry::DefaultSpawn as rayon_core::registry::ThreadSpawn>::spawn ??:? (burn_ndarray-51399133c42fa29e+0x3e183e) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #4 rayon_core::registry::Registry::new :? (burn_ndarray-51399133c42fa29e+0x3e2485) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #5 rayon_core::registry::default_global_registry :? (burn_ndarray-51399133c42fa29e+0x3e1c24) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #6 std::sys_common::once::futex::Once::call :? (burn_ndarray-51399133c42fa29e+0x4606f) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #7 rayon_core::registry::global_registry ??:? (burn_ndarray-51399133c42fa29e+0x3e1abd) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #8 rayon_core::registry::in_worker :? (burn_ndarray-51399133c42fa29e+0x235d29) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #9 burn_ndarray::ops::matmul::matmul :? (burn_ndarray-51399133c42fa29e+0x1b7a29) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #10 burn_autodiff::ops::tensor::<impl burn_tensor::tensor::ops::tensor::TensorOps<burn_autodiff::backend::Autodiff<B>> for burn_autodiff::backend::Autodiff<B>>::matmul :? (burn_ndarray-51399133c42fa29e+0x29431e) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #11 burn_tensor::tensor::api::float::<impl burn_tensor::tensor::api::base::Tensor<B,_>>::matmul :? (burn_ndarray-51399133c42fa29e+0x2f7d0c) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #12 burn_ndarray::tests::ad_abs::tests::should_diff_abs :? (burn_ndarray-51399133c42fa29e+0x33dec3) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #13 core::ops::function::FnOnce::call_once burn_ndarray.901f863f1cbc3d57-cgu.04:? (burn_ndarray-51399133c42fa29e+0x178908) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #14 test::__rust_begin_short_backtrace :? (burn_ndarray-51399133c42fa29e+0x34c66c) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #15 test::types::RunnableTest::run :? (burn_ndarray-51399133c42fa29e+0x366d10) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #16 _ZN3std9panicking3try7do_call17h0495a4fdb2d2a08dE.llvm.683101349411255501 ??:? (burn_ndarray-51399133c42fa29e+0x377c65) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #17 __rust_try.llvm.683101349411255501 :? (burn_ndarray-51399133c42fa29e+0x378d91) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #18 std::panicking::try :? (burn_ndarray-51399133c42fa29e+0x377ba3) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #19 test::run_test_in_process :? (burn_ndarray-51399133c42fa29e+0x34c939) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #20 std::sys_common::backtrace::__rust_begin_short_backtrace test.c50ec187226793ef-cgu.12:? (burn_ndarray-51399133c42fa29e+0x374672) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #21 _ZN3std9panicking3try7do_call17h6d0d6c9e0ee85664E.llvm.683101349411255501 ??:? (burn_ndarray-51399133c42fa29e+0x377f5d) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #22 __rust_try.llvm.683101349411255501 :? (burn_ndarray-51399133c42fa29e+0x378d91) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #23 std::panicking::try :? (burn_ndarray-51399133c42fa29e+0x377b1b) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #24 core::ops::function::FnOnce::call_once{{vtable.shim}} test.c50ec187226793ef-cgu.15:? (burn_ndarray-51399133c42fa29e+0x388619) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #25 <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once :? (burn_ndarray-51399133c42fa29e+0x4103fd) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #26 std::sys::unix::thread::Thread::new::thread_start std.ef3b3c2a2c925d54-cgu.13:? (burn_ndarray-51399133c42fa29e+0x43120c) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)

  Thread T11 (tid=15788, running) created by thread T7 at:
    #0 pthread_create ??:? (burn_ndarray-51399133c42fa29e+0x51dab) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #1 std::sys::unix::thread::Thread::new ??:? (burn_ndarray-51399133c42fa29e+0x430fe5) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #2 std::thread::Builder::spawn_unchecked :? (burn_ndarray-51399133c42fa29e+0x3e5a7b) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #3 <rayon_core::registry::DefaultSpawn as rayon_core::registry::ThreadSpawn>::spawn ??:? (burn_ndarray-51399133c42fa29e+0x3e183e) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #4 rayon_core::registry::Registry::new :? (burn_ndarray-51399133c42fa29e+0x3e2485) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #5 rayon_core::registry::default_global_registry :? (burn_ndarray-51399133c42fa29e+0x3e1c24) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #6 std::sys_common::once::futex::Once::call :? (burn_ndarray-51399133c42fa29e+0x4606f) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #7 rayon_core::registry::global_registry ??:? (burn_ndarray-51399133c42fa29e+0x3e1abd) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #8 rayon_core::registry::in_worker :? (burn_ndarray-51399133c42fa29e+0x235d29) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #9 burn_ndarray::ops::matmul::matmul :? (burn_ndarray-51399133c42fa29e+0x1b7a29) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #10 burn_autodiff::ops::tensor::<impl burn_tensor::tensor::ops::tensor::TensorOps<burn_autodiff::backend::Autodiff<B>> for burn_autodiff::backend::Autodiff<B>>::matmul :? (burn_ndarray-51399133c42fa29e+0x29431e) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #11 burn_tensor::tensor::api::float::<impl burn_tensor::tensor::api::base::Tensor<B,_>>::matmul :? (burn_ndarray-51399133c42fa29e+0x2f7d0c) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #12 burn_ndarray::tests::ad_abs::tests::should_diff_abs :? (burn_ndarray-51399133c42fa29e+0x33dec3) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #13 core::ops::function::FnOnce::call_once burn_ndarray.901f863f1cbc3d57-cgu.04:? (burn_ndarray-51399133c42fa29e+0x178908) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #14 test::__rust_begin_short_backtrace :? (burn_ndarray-51399133c42fa29e+0x34c66c) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #15 test::types::RunnableTest::run :? (burn_ndarray-51399133c42fa29e+0x366d10) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #16 _ZN3std9panicking3try7do_call17h0495a4fdb2d2a08dE.llvm.683101349411255501 ??:? (burn_ndarray-51399133c42fa29e+0x377c65) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #17 __rust_try.llvm.683101349411255501 :? (burn_ndarray-51399133c42fa29e+0x378d91) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #18 std::panicking::try :? (burn_ndarray-51399133c42fa29e+0x377ba3) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #19 test::run_test_in_process :? (burn_ndarray-51399133c42fa29e+0x34c939) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #20 std::sys_common::backtrace::__rust_begin_short_backtrace test.c50ec187226793ef-cgu.12:? (burn_ndarray-51399133c42fa29e+0x374672) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #21 _ZN3std9panicking3try7do_call17h6d0d6c9e0ee85664E.llvm.683101349411255501 ??:? (burn_ndarray-51399133c42fa29e+0x377f5d) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #22 __rust_try.llvm.683101349411255501 :? (burn_ndarray-51399133c42fa29e+0x378d91) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #23 std::panicking::try :? (burn_ndarray-51399133c42fa29e+0x377b1b) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #24 core::ops::function::FnOnce::call_once{{vtable.shim}} test.c50ec187226793ef-cgu.15:? (burn_ndarray-51399133c42fa29e+0x388619) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #25 <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once :? (burn_ndarray-51399133c42fa29e+0x4103fd) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #26 std::sys::unix::thread::Thread::new::thread_start std.ef3b3c2a2c925d54-cgu.13:? (burn_ndarray-51399133c42fa29e+0x43120c) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)

  Thread T59 'tests::ad_conv_' (tid=15836, running) created by main thread at:
    #0 pthread_create ??:? (burn_ndarray-51399133c42fa29e+0x51dab) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #1 std::sys::unix::thread::Thread::new ??:? (burn_ndarray-51399133c42fa29e+0x430fe5) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #2 std::thread::Builder::spawn_unchecked :? (burn_ndarray-51399133c42fa29e+0x387b49) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #3 test::run_test ??:? (burn_ndarray-51399133c42fa29e+0x34be79) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #4 test::run_tests :? (burn_ndarray-51399133c42fa29e+0x34a15b) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #5 test::console::run_tests_console ??:? (burn_ndarray-51399133c42fa29e+0x355837) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #6 test::test_main ??:? (burn_ndarray-51399133c42fa29e+0x3481d6) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #7 test::test_main_static ??:? (burn_ndarray-51399133c42fa29e+0x348775) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #8 burn_ndarray::main burn_ndarray.901f863f1cbc3d57-cgu.04:? (burn_ndarray-51399133c42fa29e+0x1c7e4c) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #9 std::sys_common::backtrace::__rust_begin_short_backtrace :? (burn_ndarray-51399133c42fa29e+0x270b7f) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #10 std::rt::lang_start::{{closure}} burn_ndarray.901f863f1cbc3d57-cgu.14:? (burn_ndarray-51399133c42fa29e+0x300bbd) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #11 std::panicking::try::do_call std.ef3b3c2a2c925d54-cgu.12:? (burn_ndarray-51399133c42fa29e+0x42cdf9) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #12 __rust_try.llvm.11366941152174039794 :? (burn_ndarray-51399133c42fa29e+0x42ea61) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #13 __rust_try.llvm.11366941152174039794 :? (burn_ndarray-51399133c42fa29e+0x42ea61) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #14 _ZN3std9panicking3try7do_call17h4018ddc516b46077E.llvm.11366941152174039794 ??:? (burn_ndarray-51399133c42fa29e+0x42ccdb) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #15 __rust_try.llvm.11366941152174039794 :? (burn_ndarray-51399133c42fa29e+0x42ea61) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #16 std::panicking::try :? (burn_ndarray-51399133c42fa29e+0x42cac8) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #17 std::rt::lang_start_internal ??:? (burn_ndarray-51399133c42fa29e+0x3febf6) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #18 std::rt::lang_start :? (burn_ndarray-51399133c42fa29e+0x300b6c) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)
    #19 main ??:? (burn_ndarray-51399133c42fa29e+0x1c7e95) (BuildId: 4087df8e94bfad1425551e9a29478a6bad64cf61)

SUMMARY: ThreadSanitizer: data race :? in core::ops::function::impls::<impl core::ops::function::FnMut<A> for &F>::call_mut

To Reproduce

Run

cargo test -Zbuild-std --target x86_64-unknown-linux-gnu -- --nocapture

on Linux with the following environment variables

A nightly toolchain is required because -Z options are unstable.

Desktop (please complete the following information):

dcvz commented 9 months ago

@Luni-4 I can confirm that I get this also on my local macOS machine

Luni-4 commented 6 days ago

Is it fixed now @dcvz?