<div dir="ltr"><div><div>After some more investigation, reading many lines of code with a collegue, we came to the conclusion that this exception is impossible :)<br></div><div>(yet the web is stuck on it)<br></div><div><br><span class="">m_ItemsContainer is an hashtable, and a private field of </span>NameObjectCollectionBase class (new HashTable(0,<span class=""></span><span class="">StringComparer</span><span class="">.</span><span class="">Ordinal</span><span class="">)</span>).<br></div><div>The exception tell us that there is already a key 'httpModules' in <span class="">m_ItemsContainer</span>.<br>Reading the code the only way we go from BaseSet to BaseAdd is if<br><span class="">FindFirstMatchedItem</span><span class="">(</span><span class="">'httpModules'), so if </span><span class="">(</span><span class="">_Item</span><span class="">)</span><span class="">m_ItemsContainer</span><span class="">[</span><span class="">'httpModules'</span><span class="">] is null</span><span class="">,<br></span></div><div><span class="">so if the value is null (the key exists, we got an exception to prove it :))<br></span></div><div><br></div><div>if i'm right, we are sure that we have ('httpModules',null) in  <span class="">m_ItemsContainer</span>.<br></div><div><br><br></div><div>Now <span class="">m_ItemsContainer only modifications are:<br></span><span class="">0)</span> <span class=""><span class="">m_ItemsContainer</span> <span class="">=</span> <span class="">new</span> <span class="">Hashtable</span> <span class="">(</span><span class="">m_defCapacity</span><span class="">,</span> <span class="">equality_comparer</span><span class="">);<br></span><br>1) m_ItemsContainer</span><span class="">.</span><span class="">Clear</span> <span class="">();</span></div><div><span class=""><br>2) _Item</span> <span class="">newitem</span><span class="">=</span><span class="">new</span> <span class="">_Item</span><span class="">(</span><span class="">name</span><span class="">,</span> <span class="">value</span><span class="">);</span><br><span class="">   m_ItemsContainer</span><span class="">.</span><span class="">Add</span><span class="">(</span><span class="">name</span><span class="">,</span><span class="">newitem</span><span class="">);</span><br><br>3) <span class="">m_ItemsContainer</span><span class="">.</span><span class="">Remove</span><span class="">(</span><span class="">name</span><span class="">);</span><br><br></div><div>So there is no way there is ('httpModules',null) in  <span class="">m_ItemsContainer</span></div><div><br><br></div><div>Please someone tell me where i'm wrong<br></div><div><br><a href="https://github.com/mono/mono/blob/master/mcs/class/System/System.Collections.Specialized/NameObjectCollectionBase.cs">https://github.com/mono/mono/blob/master/mcs/class/System/System.Collections.Specialized/NameObjectCollectionBase.cs</a><br><br></div><div>Thanks<br></div><div>Etienne<br></div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">2014-10-21 14:54 GMT+02:00 Etienne Champetier <span dir="ltr"><<a href="mailto:champetier.etienne@gmail.com" target="_blank">champetier.etienne@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi,<br><br>At my firm we are running multiple webapplication using mono (nginx + fastcgi-mono-server2.exe) on a cluster of 4 VM, 2 vcpus.<br>One of them is restarted every day at 1h45 (small memory leak).<br>3 weeks ago we went from 8VM with 1vcpu (no restart problem) to 4VM with 2vcpus, and now,<br>it's the 3rd time in 2 weeks that on one VM, the restart doesn't work well and we have:<br><br>[System.ArgumentException]: Key duplication when adding: httpModules<br>  at System.Collections.Hashtable.PutImpl (System.Object key, System.Object value, Boolean overwrite) [0x00000] in <filename unknown>:0<br>  at System.Collections.Hashtable.Add (System.Object key, System.Object value) [0x00000] in <filename unknown>:0<br>  at System.Collections.Specialized.NameObjectCollectionBase.BaseAdd (System.String name, System.Object value) [0x00000] in <filename unknown>:0<br>  at System.Collections.Specialized.NameObjectCollectionBase.BaseSet (System.String name, System.Object value) [0x00000] in <filename unknown>:0<br>  at System.Configuration.ConfigurationSectionCollection.get_Item (System.String name) [0x00000] in <filename unknown>:0<br>  at System.Configuration.Configuration.GetSection (System.String path) [0x00000] in <filename unknown>:0<br>  at System.Web.Configuration.WebConfigurationManager.GetSection (System.String sectionName, System.String path, System.Web.HttpContext context) [0x00000] in <filename unknown>:0<br>  at System.Web.Configuration.WebConfigurationManager.GetSection (System.String sectionName, System.String path) [0x00000] in <filename unknown>:0<br>  at System.Web.Configuration.WebConfigurationManager.GetWebApplicationSection (System.String sectionName) [0x00000] in <filename unknown>:0<br>  at System.Web.HttpApplication.InitOnce (Boolean full_init) [0x00000] in <filename unknown>:0<br><br><br>The really cool stuff is that even if it's a 500 error, the returned http code is 200 :)<br><br>I've already checked and all files are equal (dll, exe, conf), all VM conf are equal (vcpu, memory, ...), ...<br><br>I'm not able to reproduce the bug (restart under high load (ab -c 50 -n 100000)) so can't tell if the bug is there in the newest version.<br><br>We are using a version of mono before 3.2.7 (92887027be801b012846866208e6b4e362a4fc24) and fastcgi-mono-server2 (xsp) version 2.10.2-1 (old version build on 14/09/12 by someone at my firm)<br>I know we are using old version but it seems that the bug is still there:<br><a href="https://bugzilla.xamarin.com/show_bug.cgi?id=18303" target="_blank">https://bugzilla.xamarin.com/show_bug.cgi?id=18303</a><br><br>I've run lsof on the processes (the stuck one and one working), and by comparing the 2, i see that App_global.asax_XXXXXXX.dll<br>is here in both case, but not  App_Web_XXXXXXXX.dll (only on the working one) (see attachment)<br><br>I have root access on the VM with the stuck process, and i'm on irc right now (champtar), so if you have some ideas to gather more info to kill this bug<br><br>Thanks in advance<span class="HOEnZb"><font color="#888888"><br><br>Etienne</font></span></div>
</blockquote></div><br></div>