I agree w/ Michael's take on the 2nd crash, looks like the DLL freelist is probably corrupted. Adding a guard in pvMultiplyDefinedNotify() is essential. Not clear the best fix for ~cac() due to it's warnings about deadlocks w/ UDP thread.
On the first crash, findOrCreateVirtualCircuit() can return FALSE for a valid piiu ptr, whether the circuit is connected or not. Not clear why it even bothers calling tcpiiu::alive() as it returns FALSE either way.
Also not clear if piiu->installChannel() should be called for a valid piiu ptr when newIIU is FALSE. I'm guessing it should as that looks like it probably happens a lot.
I agree w/ Michael's take on the 2nd crash, looks like the DLL freelist is probably corrupted. Adding a guard in pvMultiplyDefin edNotify( ) is essential. Not clear the best fix for ~cac() due to it's warnings about deadlocks w/ UDP thread.
On the first crash, findOrCreateVir tualCircuit( ) can return FALSE for a valid piiu ptr, whether the circuit is connected or not. Not clear why it even bothers calling tcpiiu::alive() as it returns FALSE either way.
Also not clear if piiu->installCh annel() should be called for a valid piiu ptr when newIIU is FALSE. I'm guessing it should as that looks like it probably happens a lot.