Twenty years of Valgrind
I see the article mentions Solaris, an OS that I am very familiar with, which had me thinking about the memory corruption detection Solaris offerred.  Among the development features Solaris supported were two memory corruption checking libraries (libumem, watchmalloc) that could easily be used without have to recompile binaries to link with them.  Libumem had support for  detecting memory leaks, buffer overruns, multiple frees, use of uninitialized data, use of freed data, etc... but it could not detect a read past an allocated buffer which is where watchmalloc came in handy.  To use either with an executable binary was as easy as:<p>$ LD_PRELOAD=libumem.so.1 <executable filename><p>I found a lot of memory corruption bugs using libumem in particular including some in MIT Kerberos that were severe enough to be considered security vulnerabilities.  Sadly, Solaris is now in support mode thanks to Ellison and friends at Oracle.