This however has drastic performance implications and therefore is used only in testing environments. So the deal with FTH is just to shave some of these issues and try to detect as much as possible. It is still better then crashing with an innocent victim
on the stack because now at least you know the entity freeing the block had some issue in the code paths manipulating that block. Essentially it is not different from the approach you used in your project. Just generalizes it for everybody. And debugging still
requires lots of thinking but less than before.