wvwwvwwv / scalable-concurrent-containers

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

A data race between TreeIndex::insert and TreeIndex::remove #22

Closed wvwwvwwv closed 3 years ago

wvwwvwwv commented 3 years ago

TreeIndex::insert may try to split an obsolete node.

wvwwvwwv commented 3 years ago

Three problems mixed.

  1. Remove race: confirmed removed key not removed
  2. Scanner race: scanner misses certain keys when keys are being removed
  3. Incorrect defer-destroy of LeafNode