# There are multiple data races identified in the uninstrumented libtbb (probably false positives)
# However, be aware of concurrent_vector entries being potentially uninitialized:
#   https://software.intel.com/en-us/blogs/2009/04/09/delusion-of-tbbconcurrent_vectors-size-or-3-ways-to-traverse-in-parallel-correctly
race:tbb::*

# TSAN is not aware of how the MVCC concept works. It complains about a data race when reading
# value_segment._values.size() while resizing it, which is acceptable in this case. The vector is pre-allocated so that
# resize() never reallocates. If the size is read while the values are not yet fully written (see actual usage in Insert 
# operator), MVCC validation makes sure that those rows are ignored.
race:^hyrise::ValueSegment*::resize

# Similar to the suppression above, ValueSegment iterables might read values after resize() which are not yet written
# entirely (by copy_value_range). Since values are default-initialized, the values should be readable and are later
# thrown out by Validate anyways. We assume that nothing bad can happen when concurrently overwriting values, which
# might not be true in all cases for more sophisticated data types (e.g., pmr_string).
race:^hyrise::ValueSegmentIterable<*
