switch Rcu to the arcu crate

The arcu crate is a more general implementation of the Rcu I implemented in here in scryer. It contains some bug-fixes regarding race-conditions in the Rcu update function, which could cause leaks and uses after free.

Source of the problem was the Relaxed load/strore/update of the reference count in side the Arc not being properly ordered with other load/stores.
This commit is contained in:
Bennet Bleßmann
2024-07-06 14:49:19 +02:00
parent fcb41542c3
commit d87400afa0
6 changed files with 41 additions and 249 deletions

7
Cargo.lock generated
View File

@@ -108,6 +108,12 @@ dependencies = [
"windows-sys 0.52.0",
]
[[package]]
name = "arcu"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8727c0fb4c436605c8f11c579ec86edcb729134aec4ee66e454efd99a91859f"
[[package]]
name = "arrayvec"
version = "0.5.2"
@@ -2558,6 +2564,7 @@ dependencies = [
name = "scryer-prolog"
version = "0.9.4"
dependencies = [
"arcu",
"assert_cmd",
"base64 0.12.3",
"bit-set",