C++ memory leak check on x64 platform and test of different tools
3/14/2012 10:33 AM
After a migration from x86 to x64 on Misys Risque, one of the biggest deal was to find a tool able to check the memory leaks and access violations (buffer overrun and so on..). This was done one year ago, but I think that nothing has been changed since. I tested different tools and this is the results of my analysis:
The following tools were used: Rational Purify (only available on x86), Micro Focus Devpartner, GlowCode, Intel Inspector.
Rational Purify: unable to dump the memory leaks on our Sophis Risque toolkits, even on a very small database. The number of objects is too big, even when excluding some dll's, and an access violation on the tool itself occurs. This is due to the fact that the process is still an x86 one and is limited by the memory. The memory allocation error occurs in most cases before the limitation of the 2Gb, due to memory fragmentations.
Micro Focus Devpartner: was almost the right tool. We tested the first x64 version of the tool, with a lot of bugs on it. The development team was very reactive and delivered us several versions. But after 3 weeks of test, we decided to stop the tests since the distance to the final goal was significally still huge: performances for testing were bad, it could take just one night of pricing with the tool (just for a BS option ofr example), and one day to dump the list of objects. The tool was unsable to detect memory leaks on Sophis Risque.
Glow Code: x64 tool. The only problem is that it cannot dump the memory leaks if we got some function as black box between the entry point of the executable and the code that we want to analyze. That is mostly the case on Risque....
Intel Inspector: the tool was finally bought, for the performance options and the C++ compiler. Concerning the memory leaks check, it works fine on code where we don"t use the Sophis API. Once the Sophis API loaded, we got the same problems as with Rational Purify (access violation, problems to detect the real memory leaks...)