<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 class="gmail_extra"><br><br><div class="gmail_quote">2013/8/7 Nikita Tsukanov <span dir="ltr"><<a href="mailto:keks9n@gmail.com" target="_blank">keks9n@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">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 class="gmail_extra"><br><br><div class="gmail_quote">2013/8/7 Greg Young <span dir="ltr"><<a href="mailto:gregoryyoung1@gmail.com" target="_blank">gregoryyoung1@gmail.com</a>></span><br><blockquote class="gmail_quote" 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 class="gmail_quote" 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 simultaneously  on the same socket.</div></div><div>
<div><div>
<br><br><div>2013/8/6 Greg Young <span dir="ltr"><<a title="This external link will open in a new window">gregoryyoung1@gmail.com</a>></span><br>
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

There are many cases the patch we provided does not affect eg no overlap in io between send/receive<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">Interesting... I've written a simple server using only Socket.BeginRecieve and Socket.BeginSend. It just reads 100 bytes and then sends hardcoded HTTP response. Now jmeter is working for 5 minutes and it still responds with "Lorem ipsum ..." perfectly. I'll try to "port" my SCGI server logic from NetworkStream to Socket and see what will happen.
<div><br><br><div>2013/8/6 "Andrés G. Aragoneses" <span dir="ltr"><<a>knocte@gmail.com</a>></span><br>
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div>On 06/08/13 18:42, Nikita Tsukanov wrote:<br>
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Ubuntu 13.04, Mono JIT compiler version 3.2.0 (tarball Tue Jul 30<br>
21:08:00 UTC 2013)<br>
</blockquote>
<br></div>
Mono 3.2.0 does *not* hav</blockquote></div></div></div></blockquote></div></div></blockquote></div></div></div></div></blockquote></div></div></blockquote></div></blockquote></div></div></blockquote></div></div></blockquote>



</div></div></blockquote></div></div></blockquote><br><br></div></div><div><div>-- <br>Le doute n'est pas une condition agréable, mais la certitude est absurde.<br>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div></div>