mwdavis84/LruCacheNet

Possible Race Conditions

Opened this issue · 0 comments

I believe I have found some concurrency bugs that seem contrary to the fact that LruCacheNet is supposed to be a thread-safe library. Here are the bugs:

The following functions cannot be safely called from two concurrent threads since LruCacheNet.CacheEnumerator does not seem to be thread-safe:

  1. Racing on LruCacheNet.CacheEnumerator.current:
    1.1. LruCacheNet.CacheEnumerator.MoveNext()
    1.2. LruCacheNet.CacheEnumerator.Reset()
    1.3. LruCacheNet.CacheEnumerator.Dispose()

  2. Racing on LruCacheNet.CacheEnumerator.cache:
    2.1. LruCacheNet.CacheEnumerator.Dispose()

  3. Racing on LruCacheNet.CacheEnumerator.head:
    3.1. LruCacheNet.CacheEnumerator.Dispose()
    3.2. LruCacheNet.CacheEnumerator.MoveNext()