[reSIProcate] Access Violation in Data.cxx

Byron Campen bcampen at estacado.net
Fri Nov 17 15:11:49 CST 2006


On Nov 17, 2006, at 1:12 PM, Jeremy Geras wrote:
> -          The problem seems to be in TransactionMap::add(..) at  
> the point where it does mMap.erase(i).  The iterator appears to be  
> invalid.  I have no idea why this might be the case, but I noticed  
> something kinda strange:  in TransactionMap::erase(..) there’s a  
> comment: “don't delete it here, the TransactionState deletes itself  
> and removes itself from the map”.  However in TransactionMap::add 
> (..) it actually *does* delete the TransactionState (delete i- 
> >second).  This is totally a guess, but seemed strange to me.
You are correct, this code is broken. If, for some reason, we try to  
add a TransactionState with the tid of an existing TransactionState,  
we end up invalidating our iterator. (We end up calling erase() once  
in ~TransactionState(), and again immediately after.) However, I  
cannot see how we could possibly end up in this code-path in the  
first place. We either need to fix this code-path, or put an assert  
in its place (I prefer this; this code-path is invalid in my opinion)  
Anyone have a different opinion?

Best regards,
Byron Campen

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.resiprocate.org/pipermail/resiprocate-devel/attachments/20061117/d4fdcaeb/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2423 bytes
Desc: not available
URL: <http://list.resiprocate.org/pipermail/resiprocate-devel/attachments/20061117/d4fdcaeb/attachment.bin>


More information about the resiprocate-devel mailing list