1. 28 Oct, 2020 1 commit
    • ReinUsesLisp's avatar
      tests: Fix data race in fibers test · 3fdb42e0
      ReinUsesLisp authored
      Previous to this commit, the tests were using operator[] from
      unordered_map to query elements but this silently inserts empty elements
      when they don't exist. If all threads were executed without concurrency,
      this wouldn't be an issue, but the same unordered_map could be written
      from two threads at the same time. This is a data race and makes some
      previously inserted elements invisible for a short period of time,
      causing them to insert and return an empty element. This default
      constructed element (a zero) was used to index an array of fibers that
      asserted when one of them was nullptr, shutting the test session off.
      
      To address this issue, lock on thread id reads and writes. This could be
      a shared mutex to allow concurrent reads, but the definition of
      std::this_thread::get_id is fuzzy when using non-standard techniques
      like fibers. I opted to use a standard mutex.
      
      While we are at it, fix the included headers.
      3fdb42e0
  2. 27 Oct, 2020 8 commits
  3. 26 Oct, 2020 2 commits
  4. 25 Oct, 2020 6 commits
  5. 24 Oct, 2020 1 commit
  6. 23 Oct, 2020 3 commits
  7. 22 Oct, 2020 2 commits
  8. 21 Oct, 2020 7 commits
  9. 20 Oct, 2020 10 commits