Comments (4)
Relaxed at 133 is fine because head
loaded from 133 is not dereferenced. The actual value to be dereferenced is acquired-swapped at 135.
Also actually the load at 124 can be relaxed (thanks to release sequence). And .next
field can be non-atomic.
should use Acquire to observe other modifications made to this memory address
release-acquire synchronization is about conditionally passing the knowledge about other locations, not the location that is being stored to and loaded from.
from crossbeam.
May I submit a pull request?
I'm not interested in accepting an optimization patch for a 7 year old release, but I would be willing to accept a patch to the latest version.
from crossbeam.
release-acquire synchronization is about conditionally passing the knowledge about other locations, not the location that is being stored to and loaded from.
I agree. My initial thought is that the location stored by AtomicPtr is a pointer, yet the content it points to is non-atomic. Indeed, line 137 does not perform dereferencing; I was mistaken. It appears I need to revise the detection pattern.
from crossbeam.
Hm, I've updated the detection pattern, successfully eliminating the false positive.
crossbeam/src/mem/epoch/garbage.rs
Line 124 in 5f549d5
Regarding the use of ordering, my detector can identify it as well. Here are the results. May I submit a pull request?
{
"AtomicCorrelationViolation": {
"bug_kind": "AtimicCorrelationViolation",
"possibility": "Possibly",
"diagnosis": {
"atomic": "/Users/wangcheng/.cargo/registry/src/index.crates.io-6f17d22bba15001f/crossbeam-0.2.12/src/mem/epoch/garbage.rs:124:34: 124:47"
},
"explanation": "Using an atomic operation with a stronger memory ordering than necessary can lead to unnecessary performance overhead. Using Relaxed is sufficient to ensure the correctness of the program"
}
},
from crossbeam.
Related Issues (20)
- crossbeam-skiplist bug HOT 3
- epoch `fetch_update` not working as expected HOT 2
- Crossbeam channel slower than Go channels with input data delay HOT 5
- Questions about "crossbeam_epoch" HOT 10
- crossbeam channel is very slow if restricted to a single core HOT 4
- Use cfg(target_has_atomic) instead of hard coding which targets support atomics HOT 7
- performance issues with memory ordering
- Panicked during `epoch::pin()` HOT 9
- Implement fmt::Display for CachePadded where T: Display HOT 1
- Thread-safe, shared-state concurrency with `WaitGroup` HOT 2
- crossbeam-utils fails to compile on esp32* targets starting Rust 1.74 HOT 3
- provide a scoped thread start taht returns result HOT 1
- Move CachePadded to separate sub-crate? HOT 5
- Fine-tune the ordering for received HOT 2
- Supporting `allocator_api` HOT 1
- `#[cfg(...)]` in the select macro
- crossbeam::skiplist: make iterator sendable to anther threads HOT 1
- select_macro.rs's fairness2 test is flaky with sanitizer
- Channel `select` panics "passed a receiver that wasn't selected" when using different clones of the same receiver HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from crossbeam.