This is a conceptual question about the shared hashtable algorithm for parallel chess search.
I have implemented an alpha-beta search that spawns 4 threads, each of which conducts a search and returns the best move/evaluation. However, I am observing search instabilities, in which the threads return different results. I am using the lockless hashtable described in the link, so some entries might be overwritten or corrupted, although corrupt data will never actually be used.
Why might search threads return different results? Is this an expected outcome of parallel search, or is it a problem? If expected, how do I know which move to select?