The exact way of causing it is a bit hazy in memory, but I recall being able to reproduce it quite easily.
Some of the devs were always trying to outdo each other with various unreadable bits of code, or other strange things that you have to read twice to check you are not missing something (sigh, will they never learn...). The one which (I think) caused all the errors were function try...catch blocks, when used with virtual dtors.
...
~aClass()
try
{
//cleanup
}
catch(...)
{
//handle
}
...
Compiled with VC7.0