Ha, so newIIU==false can mean either an existing circuit was reused, or that findOrCreateVirtCircuit() error'd. So newIIU==false and piiu==NULL implies that findOrCreateVirtCircuit() failed to create a new circuit.
I see no mention, was there any "CAC: exception during virtual circuit creation" error printed? Though this may get lost in the errlog thread. The only exception I can see which might pop up here is bad_alloc from bheFreeList.allocate(), which seems unlikely.
Otherwise, the only code path I can see which would lead to this is if beaconTable.add fails, which looks like it can't happen.
To further troubleshoot this I'd make the piiu->installChannel call conditional on piiu!=NULL.
From what I see, this crash would only happen when the first client connects through a gateway to a particular server (no existing circuit). In transferChanToVirtCircuit(), look at pChan->pNameStr to see the name of this channel. This might be helpful in attempting to reproduce this crash.
If this is happening intermittently, it occurs to me that a PV name conflict may be involved (thus msgForMultiplyDefinedPV and the second crash).
> On the first crash, ...
Ha, so newIIU==false can mean either an existing circuit was reused, or that findOrCreateVir tCircuit( ) error'd. So newIIU==false and piiu==NULL implies that findOrCreateVir tCircuit( ) failed to create a new circuit.
I see no mention, was there any "CAC: exception during virtual circuit creation" error printed? Though this may get lost in the errlog thread. The only exception I can see which might pop up here is bad_alloc from bheFreeList. allocate( ), which seems unlikely.
Otherwise, the only code path I can see which would lead to this is if beaconTable.add fails, which looks like it can't happen.
To further troubleshoot this I'd make the piiu->installCh annel call conditional on piiu!=NULL.
From what I see, this crash would only happen when the first client connects through a gateway to a particular server (no existing circuit). In transferChanToV irtCircuit( ), look at pChan->pNameStr to see the name of this channel. This might be helpful in attempting to reproduce this crash.
If this is happening intermittently, it occurs to me that a PV name conflict may be involved (thus msgForMultiplyD efinedPV and the second crash).