https://github.com/389ds/389-ds-base/issues/5338
Hi,
This is a draft implementation of a lockless work queue to address the
contention observed when the server is processing connections. However, the
design of the lockless queue means it is unsafe to free a node after it is
dequeued as another thread could be using it. I have noticed this behaviour
intermittently, where a thread tries to access a node that has been freed,
breaking the linked list.
Possible solutions to this problem:
Use a double word compare and swap, but this is not available on commonly
used hardware.
Use node pointer modification counters to only free a node when no thread
is using it.
I am currently working on this problem, any advice would be appreciated.