Segfaults in atomic-counter (regression in 9.6)
I've come across what I think are more than one distinct bugs in running `atomic-counter`'s benchmarks. If we are able to discern them later ahead we can create a separate ticket.
The easiest to reproduce is an immediate segfault on start with 9.6.1 and HEAD which doesn't occur with other versions.
Simply clone `atom-counter` and run `cabal run bench -- -j1` with `9.1`.
Note that any value passed with `-j` will cause the segfault. Omitting the `-j` flag will make the program no longer segfault.
The other is bug seems to be related to concurrency/atomic operations. I was able to somewhat reliably reproduce by running `cabal bench` with `9.6`, and could reproduce another crash with `9.4` but less reliably.
```
$ cabal bench
All
Correctness: OK (3.49s)
+++ OK, passed 10000 tests.
Read/write contention with 10 iterations and 1 threads
Counter: OK (0.45s)
18.1 μs ± 1.6 μs
IORef inconsistent: OK (1.83s)
18.1 μs ± 1.7 μs, 1.00x
IORef atomic: OK (1.05s)
20.1 μs ± 1.6 μs, 1.11x
MVar: OK (1.00s)
18.9 μs ± 1.3 μs, 1.04x
TMVar: OK (0.57s)
22.7 μs ± 1.6 μs, 1.25x
TVar: OK (1.17s)
22.6 μs ± 1.8 μs, 1.25x
Addr: OK (0.47s)
17.3 μs ± 1.7 μs, 0.96x
Read/write contention with 100 iterations and 1 threads
Counter: OK (0.66s)
26.4 μs ± 1.7 μs
IORef inconsistent: OK (0.39s)
29.2 μs ± 2.4 μs, 1.11x
IORef atomic: OK (1.76s)
39.1 μs ± 2.6 μs, 1.48x
MVar: OK (0.43s)
32.6 μs ± 3.2 μs, 1.24x
TMVar: bench: internal error: TSO object (0x16d65ee40) entered!
(GHC version 9.6.1 for aarch64_apple_darwin)
Please report this as a GHC bug: https://www.haskell.org/ghc/reportabug
Benchmark bench: ERROR
Error: cabal: Benchmarks failed for bench:bench from atomic-counter-0.1.
```
Architecture: aarch64 (Apple Silicon)
issue