Detecting concurrency anomalies in transactional memory programs