mpr finds malloc/realloc memory leaks and memory allocation statistics by using a simple, brute force strategy: log all malloc/free calls to a file and post-process this log file when the program terminates. mpr keeps track of the entire call chain leading up to a malloc/free call. This is superior to conventional methods that keep track of only the immediate caller using __FILE__ and __LINE__ pre-processor tricks.