Practical verification of high-level dataraces in transactional memory programs