Segment-Based May-Happen-in-Parallel Analysis for C Programs by Fu et al. has some interesting cases why some things cannot race, e.g.,
- the parent thread holding some mutex throughout the entire execution of the child, or
- the parent thread starting while holding the same mutex the child will acquire, which yields ordering information.
This may be interesting for, e.g., a Bachelor's student to implement.
Paper: https://onlinelibrary.wiley.com/doi/10.1002/cpe.70203