[reSIProcate] Access Violation in Data.cxx
Jeremy Geras
jgeras at newheights.com
Mon Nov 27 11:35:59 CST 2006
I'm curious if anyone else has had a chance to look at this yet?
In the meantime I've commented out the mMap.erase(i); in
TransactionMap::add(..) - that seems to do the trick, no more crashes.
I don't *think* it will leak without this line, but in any event Byron's
comments lead me to believe that perhaps there's a different/better
solution?
- Jeremy -
________________________________
From: Byron Campen [mailto:bcampen at estacado.net]
Sent: Friday, November 17, 2006 1:12 PM
To: Jeremy Geras
Cc: Scott Godin; resiprocate-devel at list.sipfoundry.org
Subject: Re: [reSIProcate] Access Violation in Data.cxx
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/20061127/37c4684e/attachment.htm>
More information about the resiprocate-devel
mailing list