active_standby 0.8.4

A concurrency primitive for high concurrency reads with a single writer.
Documentation
   Compiling active_standby v0.6.1 (/home/matan/rust/active_standby)
    Finished bench [optimized] target(s) in 2.22s
     Running unittests (target/x86_64-unknown-linux-gnu/release/deps/active_standby-e6c2bea62012df84)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 42 filtered out; finished in 0.00s

     Running unittests (target/x86_64-unknown-linux-gnu/release/deps/bench-0c03017c285e2006)

running 1 test
==================
WARNING: ThreadSanitizer: data race (pid=350626)
  Write of size 4 at 0x7b0400000190 by thread T2:
    #0 <bench::AddOne as active_standby::write::UpdateTables<i32,()>>::apply_first /home/matan/rust/active_standby/benches/bench.rs:22 (bench-0c03017c285e2006+0x9f3ec)
    #1 active_standby::write::UpdateTables::apply_second /home/matan/rust/active_standby/src/write.rs:17 (bench-0c03017c285e2006+0x9f3ec)
    #2 active_standby::write::WriteGuard<T>::update_tables::{{closure}} /home/matan/rust/active_standby/src/write.rs:224 (bench-0c03017c285e2006+0xa9fba)
    #3 core::ops::function::FnOnce::call_once{{vtable-shim}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227 (bench-0c03017c285e2006+0xa9fba)
    #4 <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/boxed.rs:1575 (bench-0c03017c285e2006+0x9e659)
    #5 active_standby::write::Writer<T>::write /home/matan/rust/active_standby/src/write.rs:184 (bench-0c03017c285e2006+0xa9aa5)
    #6 active_standby::write::SendWriter<T>::write /home/matan/rust/active_standby/src/write.rs:307 (bench-0c03017c285e2006+0xa9ce3)
    #7 bench::read_guard_readwrite_contention::{{closure}} /home/matan/rust/active_standby/benches/bench.rs:180 (bench-0c03017c285e2006+0x9f22a)
    #8 std::sys_common::backtrace::__rust_begin_short_backtrace /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys_common/backtrace.rs:125 (bench-0c03017c285e2006+0x9e8b2)
    #9 std::thread::Builder::spawn_unchecked::{{closure}}::{{closure}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/mod.rs:481 (bench-0c03017c285e2006+0xaa63e)
    #10 <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:347 (bench-0c03017c285e2006+0xaa63e)
    #11 std::panicking::try::do_call /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:401 (bench-0c03017c285e2006+0xaa63e)
    #12 __rust_try.llvm.15192814867331769195 :? (bench-0c03017c285e2006+0xaaacc)
    #13 __rust_try.llvm.15192814867331769195 :? (bench-0c03017c285e2006+0xaaacc)
    #14 std::panicking::try /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:365 (bench-0c03017c285e2006+0xa850d)
    #15 std::panic::catch_unwind /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:434 (bench-0c03017c285e2006+0xa850d)
    #16 std::thread::Builder::spawn_unchecked::{{closure}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/mod.rs:480 (bench-0c03017c285e2006+0xa518c)
    #17 core::ops::function::FnOnce::call_once{{vtable-shim}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227 (bench-0c03017c285e2006+0xa518c)
    #18 std::thread::Builder::spawn_unchecked::{{closure}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/mod.rs:480 (bench-0c03017c285e2006+0xa518c)
    #19 core::ops::function::FnOnce::call_once{{vtable-shim}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227 (bench-0c03017c285e2006+0xa518c)
    #20 <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/boxed.rs:1575 (bench-0c03017c285e2006+0x11dc2b)
    #21 <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/boxed.rs:1575 (bench-0c03017c285e2006+0x11dc2b)
    #22 std::sys::unix::thread::Thread::new::thread_start /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/unix/thread.rs:71 (bench-0c03017c285e2006+0x11538c)

  Previous read of size 4 at 0x7b0400000190 by main thread:
    #0 bench::read_guard_readwrite_contention::{{closure}} /home/matan/rust/active_standby/benches/bench.rs:186 (bench-0c03017c285e2006+0x9baba)
    #1 test::bench::ns_iter_inner /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/bench.rs:117 (bench-0c03017c285e2006+0x9baba)
    #2 test::bench::iter /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/bench.rs:147 (bench-0c03017c285e2006+0x9c84a)
    #3 test::bench::Bencher::iter /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/bench.rs:49 (bench-0c03017c285e2006+0x9c84a)
    #4 bench::read_guard_readwrite_contention /home/matan/rust/active_standby/benches/bench.rs:184 (bench-0c03017c285e2006+0xa05f3)
    #5 bench::read_guard_readwrite_contention_1 /home/matan/rust/active_standby/benches/bench.rs:192 (bench-0c03017c285e2006+0x9fba0)
    #6 bench::read_guard_readwrite_contention_1::{{closure}} /home/matan/rust/active_standby/benches/bench.rs:191 (bench-0c03017c285e2006+0x9fba0)
    #7 core::ops::function::FnOnce::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227 (bench-0c03017c285e2006+0x9fba0)
    #8 core::ops::function::FnMut::call_mut /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:150 (bench-0c03017c285e2006+0xc84ad)
    #9 test::bench::Bencher::bench /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/bench.rs:56 (bench-0c03017c285e2006+0xc84ad)
    #10 test::bench::benchmark::{{closure}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/bench.rs:208 (bench-0c03017c285e2006+0xbeef9)
    #11 <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:347 (bench-0c03017c285e2006+0xbeef9)
    #12 std::panicking::try::do_call /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:401 (bench-0c03017c285e2006+0xbeef9)
    #13 __rust_try.llvm.9764174548795281092 :? (bench-0c03017c285e2006+0xc3e2c)
    #14 std::panicking::try /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:365 (bench-0c03017c285e2006+0xbebb3)
    #15 std::panic::catch_unwind /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:434 (bench-0c03017c285e2006+0xbebb3)
    #16 test::bench::benchmark /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/bench.rs:208 (bench-0c03017c285e2006+0xc97a3)
    #17 test::run_test /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:548 (bench-0c03017c285e2006+0xb87c5)
    #18 test::run_tests /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:381 (bench-0c03017c285e2006+0xb6cad)
    #19 test::console::run_tests_console /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/console.rs:290 (bench-0c03017c285e2006+0xd03da)
    #20 test::test_main /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:122 (bench-0c03017c285e2006+0xb3d60)
    #21 test::test_main_static /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:141 (bench-0c03017c285e2006+0xb3fe9)
    #22 bench::main /home/matan/rust/active_standby/benches/bench.rs:1 (bench-0c03017c285e2006+0xa076c)
    #23 core::ops::function::FnOnce::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227 (bench-0c03017c285e2006+0x9eb43)
    #24 std::sys_common::backtrace::__rust_begin_short_backtrace /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys_common/backtrace.rs:125 (bench-0c03017c285e2006+0x9eb43)
    #25 std::rt::lang_start::{{closure}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:49 (bench-0c03017c285e2006+0x9ebdd)
    #26 core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:259 (bench-0c03017c285e2006+0x113ec5)
    #27 std::panicking::try::do_call /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:401 (bench-0c03017c285e2006+0x113ec5)
    #28 __rust_try.llvm.6068021974626685259 :? (bench-0c03017c285e2006+0x115715)
    #29 __rust_try.llvm.6068021974626685259 :? (bench-0c03017c285e2006+0x115715)
    #30 std::panicking::try /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:365 (bench-0c03017c285e2006+0x113e00)
    #31 std::panic::catch_unwind /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:434 (bench-0c03017c285e2006+0x147a25)
    #32 std::rt::lang_start_internal /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:34 (bench-0c03017c285e2006+0x14071c)
    #33 main ??:? (bench-0c03017c285e2006+0xa07ea)
    #34 __libc_start_main /build/glibc-eX1tMB/glibc-2.31/csu/../csu/libc-start.c:308 (libc.so.6+0x270b2)
    #35 __libc_start_main /build/glibc-eX1tMB/glibc-2.31/csu/../csu/libc-start.c:308 (libc.so.6+0x270b2)

  Location is heap block of size 4 at 0x7b0400000190 allocated by main thread:
    #0 malloc /rustc/llvm/src/llvm-project/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:651 (bench-0c03017c285e2006+0x27fd4)
    #1 std::sys::unix::alloc::<impl core::alloc::global::GlobalAlloc for std::alloc::System>::alloc /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/unix/alloc.rs:14 (bench-0c03017c285e2006+0x1233bc)
    #2 __rdl_alloc /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/alloc.rs:355 (bench-0c03017c285e2006+0x1233bc)
    #3 alloc::alloc::alloc /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:86 (bench-0c03017c285e2006+0xa10f0)
    #4 alloc::alloc::Global::alloc_impl /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:166 (bench-0c03017c285e2006+0xa10f0)
    #5 <alloc::alloc::Global as core::alloc::Allocator>::allocate /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:226 (bench-0c03017c285e2006+0xa10f0)
    #6 alloc::alloc::exchange_malloc /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:316 (bench-0c03017c285e2006+0xa10f0)
    #7 alloc::boxed::Box<T>::new /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/boxed.rs:194 (bench-0c03017c285e2006+0xa10f0)
    #8 active_standby::table::Table<T>::new /home/matan/rust/active_standby/src/table.rs:49 (bench-0c03017c285e2006+0xa10f0)
    #9 active_standby::write::Writer<T>::with_readers_capacity /home/matan/rust/active_standby/src/write.rs:95 (bench-0c03017c285e2006+0xa94e8)
    #10 active_standby::write::Writer<T>::new /home/matan/rust/active_standby/src/write.rs:90 (bench-0c03017c285e2006+0xa94e8)
    #11 active_standby::write::SendWriter<T>::new /home/matan/rust/active_standby/src/write.rs:290 (bench-0c03017c285e2006+0xa9c7e)
    #12 bench::read_guard_readwrite_contention /home/matan/rust/active_standby/benches/bench.rs:166 (bench-0c03017c285e2006+0xa0570)
    #13 bench::read_guard_readwrite_contention_1 /home/matan/rust/active_standby/benches/bench.rs:192 (bench-0c03017c285e2006+0x9fba0)
    #14 bench::read_guard_readwrite_contention_1::{{closure}} /home/matan/rust/active_standby/benches/bench.rs:191 (bench-0c03017c285e2006+0x9fba0)
    #15 core::ops::function::FnOnce::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227 (bench-0c03017c285e2006+0x9fba0)
    #16 core::ops::function::FnMut::call_mut /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:150 (bench-0c03017c285e2006+0xc84ad)
    #17 test::bench::Bencher::bench /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/bench.rs:56 (bench-0c03017c285e2006+0xc84ad)
    #18 test::bench::benchmark::{{closure}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/bench.rs:208 (bench-0c03017c285e2006+0xbeef9)
    #19 <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:347 (bench-0c03017c285e2006+0xbeef9)
    #20 std::panicking::try::do_call /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:401 (bench-0c03017c285e2006+0xbeef9)
    #21 __rust_try.llvm.9764174548795281092 :? (bench-0c03017c285e2006+0xc3e2c)
    #22 std::panicking::try /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:365 (bench-0c03017c285e2006+0xbebb3)
    #23 std::panic::catch_unwind /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:434 (bench-0c03017c285e2006+0xbebb3)
    #24 test::bench::benchmark /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/bench.rs:208 (bench-0c03017c285e2006+0xc97a3)
    #25 test::run_test /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:548 (bench-0c03017c285e2006+0xb87c5)
    #26 test::run_tests /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:381 (bench-0c03017c285e2006+0xb6cad)
    #27 test::console::run_tests_console /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/console.rs:290 (bench-0c03017c285e2006+0xd03da)
    #28 test::test_main /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:122 (bench-0c03017c285e2006+0xb3d60)
    #29 test::test_main_static /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:141 (bench-0c03017c285e2006+0xb3fe9)
    #30 bench::main /home/matan/rust/active_standby/benches/bench.rs:1 (bench-0c03017c285e2006+0xa076c)
    #31 core::ops::function::FnOnce::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227 (bench-0c03017c285e2006+0x9eb43)
    #32 std::sys_common::backtrace::__rust_begin_short_backtrace /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys_common/backtrace.rs:125 (bench-0c03017c285e2006+0x9eb43)
    #33 std::rt::lang_start::{{closure}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:49 (bench-0c03017c285e2006+0x9ebdd)
    #34 core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:259 (bench-0c03017c285e2006+0x113ec5)
    #35 std::panicking::try::do_call /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:401 (bench-0c03017c285e2006+0x113ec5)
    #36 __rust_try.llvm.6068021974626685259 :? (bench-0c03017c285e2006+0x115715)
    #37 __rust_try.llvm.6068021974626685259 :? (bench-0c03017c285e2006+0x115715)
    #38 std::panicking::try /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:365 (bench-0c03017c285e2006+0x113e00)
    #39 std::panic::catch_unwind /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:434 (bench-0c03017c285e2006+0x147a25)
    #40 std::rt::lang_start_internal /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:34 (bench-0c03017c285e2006+0x14071c)
    #41 main ??:? (bench-0c03017c285e2006+0xa07ea)
    #42 __libc_start_main /build/glibc-eX1tMB/glibc-2.31/csu/../csu/libc-start.c:308 (libc.so.6+0x270b2)
    #43 __libc_start_main /build/glibc-eX1tMB/glibc-2.31/csu/../csu/libc-start.c:308 (libc.so.6+0x270b2)

  Thread T2 (tid=350629, running) created by main thread at:
    #0 pthread_create /rustc/llvm/src/llvm-project/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:965 (bench-0c03017c285e2006+0x2958b)
    #1 std::sys::unix::thread::Thread::new /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/unix/thread.rs:50 (bench-0c03017c285e2006+0x11514d)
    #2 std::thread::Builder::spawn_unchecked /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/mod.rs:505 (bench-0c03017c285e2006+0xa265d)
    #3 std::thread::Builder::spawn /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/mod.rs:388 (bench-0c03017c285e2006+0xa265d)
    #4 std::thread::spawn /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/mod.rs:627 (bench-0c03017c285e2006+0xa265d)
    #5 bench::read_guard_readwrite_contention /home/matan/rust/active_standby/benches/bench.rs:179 (bench-0c03017c285e2006+0xa05e6)
    #6 bench::read_guard_readwrite_contention_1 /home/matan/rust/active_standby/benches/bench.rs:192 (bench-0c03017c285e2006+0x9fba0)
    #7 bench::read_guard_readwrite_contention_1::{{closure}} /home/matan/rust/active_standby/benches/bench.rs:191 (bench-0c03017c285e2006+0x9fba0)
    #8 core::ops::function::FnOnce::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227 (bench-0c03017c285e2006+0x9fba0)
    #9 core::ops::function::FnMut::call_mut /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:150 (bench-0c03017c285e2006+0xc84ad)
    #10 test::bench::Bencher::bench /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/bench.rs:56 (bench-0c03017c285e2006+0xc84ad)
    #11 test::bench::benchmark::{{closure}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/bench.rs:208 (bench-0c03017c285e2006+0xbeef9)
    #12 <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:347 (bench-0c03017c285e2006+0xbeef9)
    #13 std::panicking::try::do_call /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:401 (bench-0c03017c285e2006+0xbeef9)
    #14 __rust_try.llvm.9764174548795281092 :? (bench-0c03017c285e2006+0xc3e2c)
    #15 std::panicking::try /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:365 (bench-0c03017c285e2006+0xbebb3)
    #16 std::panic::catch_unwind /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:434 (bench-0c03017c285e2006+0xbebb3)
    #17 test::bench::benchmark /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/bench.rs:208 (bench-0c03017c285e2006+0xc97a3)
    #18 test::run_test /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:548 (bench-0c03017c285e2006+0xb87c5)
    #19 test::run_tests /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:381 (bench-0c03017c285e2006+0xb6cad)
    #20 test::console::run_tests_console /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/console.rs:290 (bench-0c03017c285e2006+0xd03da)
    #21 test::test_main /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:122 (bench-0c03017c285e2006+0xb3d60)
    #22 test::test_main_static /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:141 (bench-0c03017c285e2006+0xb3fe9)
    #23 bench::main /home/matan/rust/active_standby/benches/bench.rs:1 (bench-0c03017c285e2006+0xa076c)
    #24 core::ops::function::FnOnce::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227 (bench-0c03017c285e2006+0x9eb43)
    #25 std::sys_common::backtrace::__rust_begin_short_backtrace /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys_common/backtrace.rs:125 (bench-0c03017c285e2006+0x9eb43)
    #26 std::rt::lang_start::{{closure}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:49 (bench-0c03017c285e2006+0x9ebdd)
    #27 core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:259 (bench-0c03017c285e2006+0x113ec5)
    #28 std::panicking::try::do_call /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:401 (bench-0c03017c285e2006+0x113ec5)
    #29 __rust_try.llvm.6068021974626685259 :? (bench-0c03017c285e2006+0x115715)
    #30 __rust_try.llvm.6068021974626685259 :? (bench-0c03017c285e2006+0x115715)
    #31 std::panicking::try /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:365 (bench-0c03017c285e2006+0x113e00)
    #32 std::panic::catch_unwind /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:434 (bench-0c03017c285e2006+0x147a25)
    #33 std::rt::lang_start_internal /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:34 (bench-0c03017c285e2006+0x14071c)
    #34 main ??:? (bench-0c03017c285e2006+0xa07ea)
    #35 __libc_start_main /build/glibc-eX1tMB/glibc-2.31/csu/../csu/libc-start.c:308 (libc.so.6+0x270b2)
    #36 __libc_start_main /build/glibc-eX1tMB/glibc-2.31/csu/../csu/libc-start.c:308 (libc.so.6+0x270b2)

SUMMARY: ThreadSanitizer: data race /home/matan/rust/active_standby/benches/bench.rs:22 in <bench::AddOne as active_standby::write::UpdateTables<i32,()>>::apply_first
==================
==================
WARNING: ThreadSanitizer: data race (pid=350626)
  Write of size 4 at 0x7b04000016a0 by thread T2:
    #0 <bench::AddOne as active_standby::write::UpdateTables<i32,()>>::apply_first /home/matan/rust/active_standby/benches/bench.rs:22 (bench-0c03017c285e2006+0x9f3ec)
    #1 active_standby::write::UpdateTables::apply_second /home/matan/rust/active_standby/src/write.rs:17 (bench-0c03017c285e2006+0x9f3ec)
    #2 active_standby::write::WriteGuard<T>::update_tables::{{closure}} /home/matan/rust/active_standby/src/write.rs:224 (bench-0c03017c285e2006+0xa9fba)
    #3 core::ops::function::FnOnce::call_once{{vtable-shim}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227 (bench-0c03017c285e2006+0xa9fba)
    #4 <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/boxed.rs:1575 (bench-0c03017c285e2006+0x9e659)
    #5 active_standby::write::Writer<T>::write /home/matan/rust/active_standby/src/write.rs:184 (bench-0c03017c285e2006+0xa9aa5)
    #6 active_standby::write::SendWriter<T>::write /home/matan/rust/active_standby/src/write.rs:307 (bench-0c03017c285e2006+0xa9ce3)
    #7 bench::read_guard_readwrite_contention::{{closure}} /home/matan/rust/active_standby/benches/bench.rs:180 (bench-0c03017c285e2006+0x9f22a)
    #8 std::sys_common::backtrace::__rust_begin_short_backtrace /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys_common/backtrace.rs:125 (bench-0c03017c285e2006+0x9e8b2)
    #9 std::thread::Builder::spawn_unchecked::{{closure}}::{{closure}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/mod.rs:481 (bench-0c03017c285e2006+0xaa63e)
    #10 <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:347 (bench-0c03017c285e2006+0xaa63e)
    #11 std::panicking::try::do_call /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:401 (bench-0c03017c285e2006+0xaa63e)
    #12 __rust_try.llvm.15192814867331769195 :? (bench-0c03017c285e2006+0xaaacc)
    #13 __rust_try.llvm.15192814867331769195 :? (bench-0c03017c285e2006+0xaaacc)
    #14 std::panicking::try /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:365 (bench-0c03017c285e2006+0xa850d)
    #15 std::panic::catch_unwind /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:434 (bench-0c03017c285e2006+0xa850d)
    #16 std::thread::Builder::spawn_unchecked::{{closure}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/mod.rs:480 (bench-0c03017c285e2006+0xa518c)
    #17 core::ops::function::FnOnce::call_once{{vtable-shim}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227 (bench-0c03017c285e2006+0xa518c)
    #18 std::thread::Builder::spawn_unchecked::{{closure}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/mod.rs:480 (bench-0c03017c285e2006+0xa518c)
    #19 core::ops::function::FnOnce::call_once{{vtable-shim}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227 (bench-0c03017c285e2006+0xa518c)
    #20 <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/boxed.rs:1575 (bench-0c03017c285e2006+0x11dc2b)
    #21 <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/boxed.rs:1575 (bench-0c03017c285e2006+0x11dc2b)
    #22 std::sys::unix::thread::Thread::new::thread_start /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/unix/thread.rs:71 (bench-0c03017c285e2006+0x11538c)

  Previous read of size 4 at 0x7b04000016a0 by thread T1:
    #0 bench::read_guard_readwrite_contention::{{closure}}::{{closure}} /home/matan/rust/active_standby/benches/bench.rs:173 (bench-0c03017c285e2006+0x9e7e1)
    #1 std::sys_common::backtrace::__rust_begin_short_backtrace /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys_common/backtrace.rs:125 (bench-0c03017c285e2006+0x9e7e1)
    #2 std::thread::Builder::spawn_unchecked::{{closure}}::{{closure}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/mod.rs:481 (bench-0c03017c285e2006+0xaa84b)
    #3 <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:347 (bench-0c03017c285e2006+0xaa84b)
    #4 std::panicking::try::do_call /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:401 (bench-0c03017c285e2006+0xaa84b)
    #5 __rust_try.llvm.15192814867331769195 :? (bench-0c03017c285e2006+0xaaacc)
    #6 __rust_try.llvm.15192814867331769195 :? (bench-0c03017c285e2006+0xaaacc)
    #7 std::panicking::try /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:365 (bench-0c03017c285e2006+0xa86b6)
    #8 std::panic::catch_unwind /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:434 (bench-0c03017c285e2006+0xa86b6)
    #9 std::thread::Builder::spawn_unchecked::{{closure}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/mod.rs:480 (bench-0c03017c285e2006+0xa40b4)
    #10 core::ops::function::FnOnce::call_once{{vtable-shim}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227 (bench-0c03017c285e2006+0xa40b4)
    #11 std::thread::Builder::spawn_unchecked::{{closure}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/mod.rs:480 (bench-0c03017c285e2006+0xa40b4)
    #12 core::ops::function::FnOnce::call_once{{vtable-shim}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227 (bench-0c03017c285e2006+0xa40b4)
    #13 <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/boxed.rs:1575 (bench-0c03017c285e2006+0x11dc2b)
    #14 <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/boxed.rs:1575 (bench-0c03017c285e2006+0x11dc2b)
    #15 std::sys::unix::thread::Thread::new::thread_start /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/unix/thread.rs:71 (bench-0c03017c285e2006+0x11538c)

  Location is heap block of size 4 at 0x7b04000016a0 allocated by main thread:
    #0 malloc /rustc/llvm/src/llvm-project/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:651 (bench-0c03017c285e2006+0x27fd4)
    #1 std::sys::unix::alloc::<impl core::alloc::global::GlobalAlloc for std::alloc::System>::alloc /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/unix/alloc.rs:14 (bench-0c03017c285e2006+0x1233bc)
    #2 __rdl_alloc /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/alloc.rs:355 (bench-0c03017c285e2006+0x1233bc)
    #3 alloc::alloc::alloc /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:86 (bench-0c03017c285e2006+0xa1113)
    #4 alloc::alloc::Global::alloc_impl /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:166 (bench-0c03017c285e2006+0xa1113)
    #5 <alloc::alloc::Global as core::alloc::Allocator>::allocate /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:226 (bench-0c03017c285e2006+0xa1113)
    #6 alloc::alloc::exchange_malloc /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:316 (bench-0c03017c285e2006+0xa1113)
    #7 alloc::boxed::Box<T>::new /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/boxed.rs:194 (bench-0c03017c285e2006+0xa1113)
    #8 active_standby::table::Table<T>::new /home/matan/rust/active_standby/src/table.rs:50 (bench-0c03017c285e2006+0xa1113)
    #9 active_standby::write::Writer<T>::with_readers_capacity /home/matan/rust/active_standby/src/write.rs:95 (bench-0c03017c285e2006+0xa94e8)
    #10 active_standby::write::Writer<T>::new /home/matan/rust/active_standby/src/write.rs:90 (bench-0c03017c285e2006+0xa94e8)
    #11 active_standby::write::SendWriter<T>::new /home/matan/rust/active_standby/src/write.rs:290 (bench-0c03017c285e2006+0xa9c7e)
    #12 bench::read_guard_readwrite_contention /home/matan/rust/active_standby/benches/bench.rs:166 (bench-0c03017c285e2006+0xa0570)
    #13 bench::read_guard_readwrite_contention_1 /home/matan/rust/active_standby/benches/bench.rs:192 (bench-0c03017c285e2006+0x9fba0)
    #14 bench::read_guard_readwrite_contention_1::{{closure}} /home/matan/rust/active_standby/benches/bench.rs:191 (bench-0c03017c285e2006+0x9fba0)
    #15 core::ops::function::FnOnce::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227 (bench-0c03017c285e2006+0x9fba0)
    #16 core::ops::function::FnMut::call_mut /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:150 (bench-0c03017c285e2006+0xc84ad)
    #17 test::bench::Bencher::bench /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/bench.rs:56 (bench-0c03017c285e2006+0xc84ad)
    #18 test::bench::benchmark::{{closure}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/bench.rs:208 (bench-0c03017c285e2006+0xbeef9)
    #19 <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:347 (bench-0c03017c285e2006+0xbeef9)
    #20 std::panicking::try::do_call /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:401 (bench-0c03017c285e2006+0xbeef9)
    #21 __rust_try.llvm.9764174548795281092 :? (bench-0c03017c285e2006+0xc3e2c)
    #22 std::panicking::try /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:365 (bench-0c03017c285e2006+0xbebb3)
    #23 std::panic::catch_unwind /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:434 (bench-0c03017c285e2006+0xbebb3)
    #24 test::bench::benchmark /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/bench.rs:208 (bench-0c03017c285e2006+0xc97a3)
    #25 test::run_test /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:548 (bench-0c03017c285e2006+0xb87c5)
    #26 test::run_tests /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:381 (bench-0c03017c285e2006+0xb6cad)
    #27 test::console::run_tests_console /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/console.rs:290 (bench-0c03017c285e2006+0xd03da)
    #28 test::test_main /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:122 (bench-0c03017c285e2006+0xb3d60)
    #29 test::test_main_static /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:141 (bench-0c03017c285e2006+0xb3fe9)
    #30 bench::main /home/matan/rust/active_standby/benches/bench.rs:1 (bench-0c03017c285e2006+0xa076c)
    #31 core::ops::function::FnOnce::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227 (bench-0c03017c285e2006+0x9eb43)
    #32 std::sys_common::backtrace::__rust_begin_short_backtrace /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys_common/backtrace.rs:125 (bench-0c03017c285e2006+0x9eb43)
    #33 std::rt::lang_start::{{closure}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:49 (bench-0c03017c285e2006+0x9ebdd)
    #34 core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:259 (bench-0c03017c285e2006+0x113ec5)
    #35 std::panicking::try::do_call /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:401 (bench-0c03017c285e2006+0x113ec5)
    #36 __rust_try.llvm.6068021974626685259 :? (bench-0c03017c285e2006+0x115715)
    #37 __rust_try.llvm.6068021974626685259 :? (bench-0c03017c285e2006+0x115715)
    #38 std::panicking::try /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:365 (bench-0c03017c285e2006+0x113e00)
    #39 std::panic::catch_unwind /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:434 (bench-0c03017c285e2006+0x147a25)
    #40 std::rt::lang_start_internal /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:34 (bench-0c03017c285e2006+0x14071c)
    #41 main ??:? (bench-0c03017c285e2006+0xa07ea)
    #42 __libc_start_main /build/glibc-eX1tMB/glibc-2.31/csu/../csu/libc-start.c:308 (libc.so.6+0x270b2)
    #43 __libc_start_main /build/glibc-eX1tMB/glibc-2.31/csu/../csu/libc-start.c:308 (libc.so.6+0x270b2)

  Thread T2 (tid=350629, running) created by main thread at:
    #0 pthread_create /rustc/llvm/src/llvm-project/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:965 (bench-0c03017c285e2006+0x2958b)
    #1 std::sys::unix::thread::Thread::new /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/unix/thread.rs:50 (bench-0c03017c285e2006+0x11514d)
    #2 std::thread::Builder::spawn_unchecked /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/mod.rs:505 (bench-0c03017c285e2006+0xa265d)
    #3 std::thread::Builder::spawn /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/mod.rs:388 (bench-0c03017c285e2006+0xa265d)
    #4 std::thread::spawn /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/mod.rs:627 (bench-0c03017c285e2006+0xa265d)
    #5 bench::read_guard_readwrite_contention /home/matan/rust/active_standby/benches/bench.rs:179 (bench-0c03017c285e2006+0xa05e6)
    #6 bench::read_guard_readwrite_contention_1 /home/matan/rust/active_standby/benches/bench.rs:192 (bench-0c03017c285e2006+0x9fba0)
    #7 bench::read_guard_readwrite_contention_1::{{closure}} /home/matan/rust/active_standby/benches/bench.rs:191 (bench-0c03017c285e2006+0x9fba0)
    #8 core::ops::function::FnOnce::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227 (bench-0c03017c285e2006+0x9fba0)
    #9 core::ops::function::FnMut::call_mut /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:150 (bench-0c03017c285e2006+0xc84ad)
    #10 test::bench::Bencher::bench /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/bench.rs:56 (bench-0c03017c285e2006+0xc84ad)
    #11 test::bench::benchmark::{{closure}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/bench.rs:208 (bench-0c03017c285e2006+0xbeef9)
    #12 <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:347 (bench-0c03017c285e2006+0xbeef9)
    #13 std::panicking::try::do_call /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:401 (bench-0c03017c285e2006+0xbeef9)
    #14 __rust_try.llvm.9764174548795281092 :? (bench-0c03017c285e2006+0xc3e2c)
    #15 std::panicking::try /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:365 (bench-0c03017c285e2006+0xbebb3)
    #16 std::panic::catch_unwind /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:434 (bench-0c03017c285e2006+0xbebb3)
    #17 test::bench::benchmark /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/bench.rs:208 (bench-0c03017c285e2006+0xc97a3)
    #18 test::run_test /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:548 (bench-0c03017c285e2006+0xb87c5)
    #19 test::run_tests /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:381 (bench-0c03017c285e2006+0xb6cad)
    #20 test::console::run_tests_console /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/console.rs:290 (bench-0c03017c285e2006+0xd03da)
    #21 test::test_main /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:122 (bench-0c03017c285e2006+0xb3d60)
    #22 test::test_main_static /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:141 (bench-0c03017c285e2006+0xb3fe9)
    #23 bench::main /home/matan/rust/active_standby/benches/bench.rs:1 (bench-0c03017c285e2006+0xa076c)
    #24 core::ops::function::FnOnce::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227 (bench-0c03017c285e2006+0x9eb43)
    #25 std::sys_common::backtrace::__rust_begin_short_backtrace /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys_common/backtrace.rs:125 (bench-0c03017c285e2006+0x9eb43)
    #26 std::rt::lang_start::{{closure}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:49 (bench-0c03017c285e2006+0x9ebdd)
    #27 core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:259 (bench-0c03017c285e2006+0x113ec5)
    #28 std::panicking::try::do_call /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:401 (bench-0c03017c285e2006+0x113ec5)
    #29 __rust_try.llvm.6068021974626685259 :? (bench-0c03017c285e2006+0x115715)
    #30 __rust_try.llvm.6068021974626685259 :? (bench-0c03017c285e2006+0x115715)
    #31 std::panicking::try /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:365 (bench-0c03017c285e2006+0x113e00)
    #32 std::panic::catch_unwind /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:434 (bench-0c03017c285e2006+0x147a25)
    #33 std::rt::lang_start_internal /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:34 (bench-0c03017c285e2006+0x14071c)
    #34 main ??:? (bench-0c03017c285e2006+0xa07ea)
    #35 __libc_start_main /build/glibc-eX1tMB/glibc-2.31/csu/../csu/libc-start.c:308 (libc.so.6+0x270b2)
    #36 __libc_start_main /build/glibc-eX1tMB/glibc-2.31/csu/../csu/libc-start.c:308 (libc.so.6+0x270b2)

  Thread T1 (tid=350628, running) created by main thread at:
    #0 pthread_create /rustc/llvm/src/llvm-project/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:965 (bench-0c03017c285e2006+0x2958b)
    #1 std::sys::unix::thread::Thread::new /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/unix/thread.rs:50 (bench-0c03017c285e2006+0x11514d)
    #2 std::thread::Builder::spawn_unchecked /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/mod.rs:505 (bench-0c03017c285e2006+0xa2fa2)
    #3 std::thread::Builder::spawn /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/mod.rs:388 (bench-0c03017c285e2006+0xa2fa2)
    #4 std::thread::spawn /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/mod.rs:627 (bench-0c03017c285e2006+0xa2fa2)
    #5 bench::read_guard_readwrite_contention::{{closure}} /home/matan/rust/active_standby/benches/bench.rs:171 (bench-0c03017c285e2006+0xa7e7d)
    #6 core::iter::adapters::map::map_fold::{{closure}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/adapters/map.rs:82 (bench-0c03017c285e2006+0xa7e7d)
    #7 core::iter::traits::iterator::Iterator::fold /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:2112 (bench-0c03017c285e2006+0xa7e7d)
    #8 <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::fold /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/adapters/map.rs:122 (bench-0c03017c285e2006+0xa7e7d)
    #9 core::iter::traits::iterator::Iterator::for_each /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:736 (bench-0c03017c285e2006+0xa7d74)
    #10 <alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<T,I>>::spec_extend /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/spec_extend.rs:40 (bench-0c03017c285e2006+0xa7d74)
    #11 <alloc::vec::Vec<T> as alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/spec_from_iter_nested.rs:56 (bench-0c03017c285e2006+0xa7d74)
    #12 <alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/spec_from_iter.rs:33 (bench-0c03017c285e2006+0xa7d74)
    #13 <alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/mod.rs:2449 (bench-0c03017c285e2006+0xa05af)
    #14 core::iter::traits::iterator::Iterator::collect /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:1748 (bench-0c03017c285e2006+0xa05af)
    #15 bench::read_guard_readwrite_contention /home/matan/rust/active_standby/benches/bench.rs:168 (bench-0c03017c285e2006+0xa05af)
    #16 bench::read_guard_readwrite_contention_1 /home/matan/rust/active_standby/benches/bench.rs:192 (bench-0c03017c285e2006+0x9fba0)
    #17 bench::read_guard_readwrite_contention_1::{{closure}} /home/matan/rust/active_standby/benches/bench.rs:191 (bench-0c03017c285e2006+0x9fba0)
    #18 core::ops::function::FnOnce::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227 (bench-0c03017c285e2006+0x9fba0)
    #19 core::ops::function::FnMut::call_mut /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:150 (bench-0c03017c285e2006+0xc84ad)
    #20 test::bench::Bencher::bench /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/bench.rs:56 (bench-0c03017c285e2006+0xc84ad)
    #21 test::bench::benchmark::{{closure}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/bench.rs:208 (bench-0c03017c285e2006+0xbeef9)
    #22 <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:347 (bench-0c03017c285e2006+0xbeef9)
    #23 std::panicking::try::do_call /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:401 (bench-0c03017c285e2006+0xbeef9)
    #24 __rust_try.llvm.9764174548795281092 :? (bench-0c03017c285e2006+0xc3e2c)
    #25 std::panicking::try /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:365 (bench-0c03017c285e2006+0xbebb3)
    #26 std::panic::catch_unwind /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:434 (bench-0c03017c285e2006+0xbebb3)
    #27 test::bench::benchmark /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/bench.rs:208 (bench-0c03017c285e2006+0xc97a3)
    #28 test::run_test /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:548 (bench-0c03017c285e2006+0xb87c5)
    #29 test::run_tests /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:381 (bench-0c03017c285e2006+0xb6cad)
    #30 test::console::run_tests_console /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/console.rs:290 (bench-0c03017c285e2006+0xd03da)
    #31 test::test_main /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:122 (bench-0c03017c285e2006+0xb3d60)
    #32 test::test_main_static /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:141 (bench-0c03017c285e2006+0xb3fe9)
    #33 bench::main /home/matan/rust/active_standby/benches/bench.rs:1 (bench-0c03017c285e2006+0xa076c)
    #34 core::ops::function::FnOnce::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227 (bench-0c03017c285e2006+0x9eb43)
    #35 std::sys_common::backtrace::__rust_begin_short_backtrace /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys_common/backtrace.rs:125 (bench-0c03017c285e2006+0x9eb43)
    #36 std::rt::lang_start::{{closure}} /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:49 (bench-0c03017c285e2006+0x9ebdd)
    #37 core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:259 (bench-0c03017c285e2006+0x113ec5)
    #38 std::panicking::try::do_call /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:401 (bench-0c03017c285e2006+0x113ec5)
    #39 __rust_try.llvm.6068021974626685259 :? (bench-0c03017c285e2006+0x115715)
    #40 __rust_try.llvm.6068021974626685259 :? (bench-0c03017c285e2006+0x115715)
    #41 std::panicking::try /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:365 (bench-0c03017c285e2006+0x113e00)
    #42 std::panic::catch_unwind /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:434 (bench-0c03017c285e2006+0x147a25)
    #43 std::rt::lang_start_internal /home/matan/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:34 (bench-0c03017c285e2006+0x14071c)
    #44 main ??:? (bench-0c03017c285e2006+0xa07ea)
    #45 __libc_start_main /build/glibc-eX1tMB/glibc-2.31/csu/../csu/libc-start.c:308 (libc.so.6+0x270b2)
    #46 __libc_start_main /build/glibc-eX1tMB/glibc-2.31/csu/../csu/libc-start.c:308 (libc.so.6+0x270b2)

SUMMARY: ThreadSanitizer: data race /home/matan/rust/active_standby/benches/bench.rs:22 in <bench::AddOne as active_standby::write::UpdateTables<i32,()>>::apply_first
==================
test read_guard_readwrite_contention_1  ... bench:         567 ns/iter (+/- 266)

test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured; 10 filtered out; finished in 0.21s

ThreadSanitizer: reported 2 warnings
error: bench failed