wvwwvwwv / scalable-concurrent-containers

High performance containers and utilities for concurrent and asynchronous programming
Apache License 2.0
306 stars 15 forks source link

[Rust 1.65.0] Critical error in --release build: remove() with an exist key returns None #84

Closed zitsen closed 1 year ago

zitsen commented 1 year ago

I say release build because it's correct in debug build.

wvwwvwwv commented 1 year ago

Thanks for reporting the issue!

Would you please elaborate on the symptom a little bit further?

I need to know,

  1. The type of the data structure. I assume that you're talking about HashMap, but need to be sure about it.
  2. A possible reproducible scenario. E.g., parallel insert/remove? or single-threaded insert/remove?
  3. The crate version that you use.
  4. Criticality. The whole source code is not part of my job, and it's a kind of my free-time activity, so I might not be able to prioritize debugging of the issue unless it's very critical.
wvwwvwwv commented 1 year ago

Hi @zitsen

There was a problem with SCC 0.8.x with the retain_* methods; https://github.com/wvwwvwwv/scalable-concurrent-containers/issues/77.

Could you try SCC 0.11.x instead?

wvwwvwwv commented 1 year ago

Acknowledged the problem; looks like something's been changed in Rust 1.65.0. I'll try to fix it as soon as possible.

wvwwvwwv commented 1 year ago

MaybeUninit handling has changed since Rust 1.65.0 - fixed it. After cleaning up the code, I'll upload SCC 0.11.3.

wvwwvwwv commented 1 year ago

I admit that it was a tough bug. Anyway, fixed in SCC 0.11.3, @zitsen thanks for reporting this bug!