Search code examples
multithreadingparallel-processingvalgrinddynamic-memory-allocation

How well does Valgrind handle threads and machine-level synchronization instructions?


I have a highly parallel Windows program that uses lots of threads, hand-coded machine synchronization instructions, and home-rolled parallel-safe storage allocators. Alas, the storage management has a hole (not a synchonization hole in the allocators, I'm pretty sure) and I'd like to find it. Valgrind has been suggested as a good tool for finding storage management errors. Any experience here with Valgrind used under these circumstances?


Solution

  • Valgrind does not run on Windows, but it does work with Windows programs running under Wine on Linux. If your program will run under Wine, it has a decent chance of working with valgrind. See winehq.org for details.

    The latest version is pretty good at handling all the 32-bit x86 instructions. It can handle programs that create many threads, just don't expect them to run simultaneously under valgrind. It will run only one thread at a time, as if it was run on a single core machine.