I believe attaching a debugger changes things like optimizations from occurring (not positive but it does in clr)<span></span><br><br>On Wednesday, August 7, 2013, Nikita Tsukanov  wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Huh, it doesn't require debugger to be _attched_, just debugging subsystem initialized i. e. if I launch this program as a "debugger" it doesn't lock up.<div><br><div><font face="Consolas"><span style="color:rgb(0,150,149)">public</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(0,150,149)">static</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(0,150,149)">void</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(68,68,68)">Main</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(68,68,68)">(</span><span style="color:rgb(0,150,149)">string</span><span style="color:rgb(68,68,68)">[]</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(68,68,68)">args</span><span style="color:rgb(68,68,68)">)</span><br>


<span style="color:rgb(68,68,68)">{</span><br><span style="color:rgb(68,68,68)">  </span><span style="color:rgb(0,150,149)">int</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(68,68,68)">port</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(68,68,68)">=</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(245,125,0)">27042</span><span style="color:rgb(68,68,68)">;</span><br>


<span style="color:rgb(68,68,68)">  </span><span style="color:rgb(0,150,149)">if</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(68,68,68)">(</span><span style="color:rgb(68,68,68)">args</span><span style="color:rgb(68,68,68)">.</span><span style="color:rgb(68,68,68)">Length</span><span style="color:rgb(68,68,68)"> !</span><span style="color:rgb(68,68,68)">=</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(245,125,0)">0</span><span style="color:rgb(68,68,68)">)</span><br>



<span style="color:rgb(68,68,68)">    </span><span style="color:rgb(68,68,68)">port</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(68,68,68)">=</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(0,150,149)">int</span><span style="color:rgb(68,68,68)">.</span><span style="color:rgb(68,68,68)">Parse</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(68,68,68)">(</span><span style="color:rgb(68,68,68)">args</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(68,68,68)">[</span><span style="color:rgb(245,125,0)">0</span><span style="color:rgb(68,68,68)">])</span><span style="color:rgb(68,68,68)">;</span><br>



<span style="color:rgb(68,68,68)">  </span><span style="color:rgb(0,150,149)">while</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(68,68,68)">(</span><span style="color:rgb(0,150,149)">true</span><span style="color:rgb(68,68,68)">)</span><br>



<span style="color:rgb(68,68,68)">  </span><span style="color:rgb(68,68,68)">{</span><br>
<span style="color:rgb(68,68,68)">    </span><span style="color:rgb(0,150,149)">var</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(68,68,68)">vm</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(68,68,68)">=</span><span style="color:rgb(68,68,68)"> Mono</span><span style="color:rgb(68,68,68)">.</span><span style="color:rgb(68,68,68)">Debugger</span><span style="color:rgb(68,68,68)">.</span><span style="color:rgb(68,68,68)">Soft</span><span style="color:rgb(68,68,68)">.</span><span style="color:rgb(51,100,164)">VirtualMachineManager</span><span style="color:rgb(68,68,68)">.</span><span style="color:rgb(68,68,68)">Listen</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(68,68,68)">(</span><span style="color:rgb(0,150,149)">new</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(51,100,164)">IPEndPoint</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(68,68,68)">(</span><span style="color:rgb(51,100,164)">IPAddress</span><span style="color:rgb(68,68,68)">.</span><span style="color:rgb(68,68,68)">Loopback</span><span style="color:rgb(68,68,68)">,</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(68,68,68)">port</span><span style="color:rgb(68,68,68)">))</span><span style="color:rgb(68,68,68)">;</span><br>



<span style="color:rgb(68,68,68)">    </span><span style="color:rgb(68,68,68)">vm</span><span style="color:rgb(68,68,68)">.</span><span style="color:rgb(68,68,68)">Resume</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(68,68,68)">()</span><span style="color:rgb(68,68,68)">;</span><br>



<span style="color:rgb(68,68,68)">    </span><span style="color:rgb(68,68,68)">vm</span><span style="color:rgb(68,68,68)">.</span><span style="color:rgb(68,68,68)">Detach</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(68,68,68)">()</span><span style="color:rgb(68,68,68)">;</span><br>



<span style="color:rgb(68,68,68)">  </span><span style="color:rgb(68,68,68)">}</span><br><span style="color:rgb(68,68,68)">}</span><br><br>
</font></div></div><div><font face="Consolas">I'll use running with --debugger-agent=transport=dt_socket,address=<a href="http://127.0.0.1:27042" target="_blank">127.0.0.1:27042</a> as a temporary workaround since performance doesn't degrade a lot.</font></div>


<div><br><br><div>2013/8/7 Nikita Tsukanov <span dir="ltr"><<a>keks9n@gmail.com</a>></span><br><blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div dir="ltr">I suspect that the problem is actually with thread pool itself. I've created socket layer implementation using libevent (wrapped with Oars) and send/recv that utilizes thread pool for cases when it's unable to complete operation synchronously. It survives longer, but still locks up after a while. Same behavior with debugger - I'm unable to reproduce the issue when running under it. I also unable to grab thread stack traces, it prints "Full thread dump: " and nothing else.</div>


<div><div>
<div><br><br><div>2013/8/7 Greg Young <span dir="ltr"><<a>gregoryyoung1@gmail.com</a>></span><br><blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


We will see your test then as it will probably affect us as well<div><div><span></span><br><br>On Tuesday, August 6, 2013, Nikita Tsukanov  wrote:<br><blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">




<div dir="ltr">Greg, I've tried running my server with mono compiled from master (with pull request #703 merged in), still freezes after a while.</div><div><br><br><div>2013/8/7 Greg Young <span dir="ltr"><<a>gregoryyoung1@gmail.com</a>></span><br>





<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Do you have our pull req? We are stable after (and seriously read history of this list)<div><div>
<span></span><br><br>On Tuesday, August 6, 2013, Nikita Tsukanov  wrote:<br><blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><a href="https://github.com/kekekeks/scgi-sharp" target="_blank">https://github.com/kekekeks/scgi-sharp</a> - here is my SCGI server with host for NancyFx. If you run Sandbox.exe with --echo-server it will not use nancy infrastructure and will respond directly. It locks up after several thousands of requests under jmeter.<br>







<div><br></div><div>Simple nginx configuration:</div><div><br></div><div>location /</div><div>{</div><div>   include /etc/nginx/scgi_params;</div><div>   scgi_pass <a href="http://127.0.0.1:10081" target="_blank">127.0.0.1:10081</a>;</div>







<div>}</div><div><br></div><div>Now I'm looking for alternative socket library to use it as a replacement for System.Net.Sockets.</div></div><div><br><br><div>2013/8/6 Greg Young <span dir="ltr"><<a>gregoryyoung1@gmail.com</a>></span><br>







<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Actually not that surprised we also found out file stream.flush(true) only works sometimes and ms never back supported it to actually work :)<div>







<div><span></span><br><br>On Tuesday, August 6, 2013, Alfred Hall  wrote:<br><blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<u></u>

  
  
  

<div>
<font face="tahoma">Yeah you're having exactly the same issues as I am. I'm surprised others haven't had this problem before. Not sure who works on this area of the mono codebase these days. If you got a minimal test case it may be worth us raising a Xamarin bug in bugzilla.<br>








</font><blockquote style="border-left:2px solid #325fba;padding-left:5px;margin-left:5px;margin-right:0px">-----Original message-----<br><b>From:</b> Nikita Tsukanov <<a>keks9n@gmail.com</a>><br>
<b>Sent:</b> Tuesday 6th August 2013 20:18<br><b>To:</b> <a>mono-devel-list@lists.ximian.com</a><br>
<b>Subject:</b> Re: [Mono-dev] NancyFX self hosting (HttpListener) locking up on linux<br><br>

<div dir="ltr"><div>Running with mono from master haven't helped.</div><div><br></div><div>And I'm not sure what the hell is going on, but I cann't reproduce the issue when running under... Monodevelop's debugger. It runs perfectly under it, but when I try to run the same binary from console (even with --debug option) it locks up or segfaults. Does anyone know what does it mean?</div>









</div><div><br><br><div>2013/8/6 Nikita Tsukanov <span dir="ltr"><<a title="This external link will open in a new window">keks9n@gmail.com</a>></span><br>
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Great. It locked up with my more complex logic. <div>Funny fact: NancyFx increases request processing time from 2ms to 70ms with the same echo response.</div><div>Another funny fact: with MONO_DISABLE_AIO I've got segfault.</div>










<div><br></div><div>Now I'll try to use build patched mono. Not sure that it's the same issue, because in my case it never tries to read and write simultane</div></div></blockquote></div></div></blockquote></div>
</blockquote></div></div></blockquote></div></div></blockquote></div></div></blockquote></div></div></blockquote></div></div></blockquote></div></div></div></div></blockquote></div></div></div>
</blockquote><br><br>-- <br>Le doute n'est pas une condition agréable, mais la certitude est absurde.<br>