As far as I can tell, this was fixed way back in 2010. There is a changeset labelled as "Add support for storing elements with the same hashcode in ConcurrentDictionary. Add corresponding unit test." and the line you quoted was changed to this:<div>
<br></div><div>internalDictionary.Delete (Hash (key), key, out data);<br><div><br></div><div><a href="https://github.com/mono/mono/commit/09185b9e811dfe702809cfd5960e523ca8f4e7f6">https://github.com/mono/mono/commit/09185b9e811dfe702809cfd5960e523ca8f4e7f6</a><br>
</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Nov 15, 2012 at 8:19 PM, Debacker <span dir="ltr"><<a href="mailto:debackerl@gmail.com" target="_blank">debackerl@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br>
<br>
While reading the code of ConcurrentDictionary and SplitOrderedList, I<br>
believe I have identified an issue. In method<br>
ConcurrentDictionary.TryRemove, you'll see this line:<br>
<br>
bool result = internalDictionary.Delete (Hash (key), out data);<br>
<br>
Only key's hash is used, not the key itself. Consequently, two<br>
different keys with hash collision will be indistinguishable by<br>
SplitOrderedList.<br>
<br>
Key hash collisions are probably very rare, but it's not standard compliant.<br>
<br>
Regards,<br>
Laurent Debacker<br>
_______________________________________________<br>
Mono-devel-list mailing list<br>
<a href="mailto:Mono-devel-list@lists.ximian.com">Mono-devel-list@lists.ximian.com</a><br>
<a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a><br>
</blockquote></div><br></div>