<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html>
<head>
  <meta name="Generator" content="Zarafa WebApp v7.1.5-41923">
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>RE: [Mono-dev] NancyFX self hosting (HttpListener) locking up on linux</title>
</head>
<body>
<font face="tahoma" size="2">So far so good, done few tests and no lockups.<br></font><blockquote style="border-left: 2px solid #325FBA; padding-left: 5px; margin-left: 5px; margin-right: 0px;">-----Original message-----<br><strong>From:</strong> Nikita Tsukanov <keks9n@gmail.com><br><strong>Sent:</strong> Wednesday 14th August 2013 15:04<br><strong>To:</strong> mono-devel-list@lists.ximian.com<br><strong>Subject:</strong> Re: [Mono-dev] NancyFX self hosting (HttpListener) locking up on linux<br><br><base target="_blank">
<!-- begin sanitized html -->
<div dir="ltr"><br><div>Should be fixed with <a href="https://github.com/mono/mono/commit/a31b580fdcbaa9a8a16d59ffb12d04f5872f54e8" target="_blank" title="This external link will open in a new window">https://github.com/mono/mono/commit/a31b580fdcbaa9a8a16d59ffb12d04f5872f54e8</a></div><div>
<br></div><div>Please, try to compile a fresh version of mono and check if the issue is still present.</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/8/13 Nikita Tsukanov <span dir="ltr"><<a href="mailto:keks9n@gmail.com" onclick="parent.webclient.openWindow(this, 'createmail', 'index.php?load=dialog&task=createmail_standard&to=keks9n@gmail.com'); return false;" target="_blank" title="This external link will open in a new window">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've filled a bug report: <a href="https://bugzilla.xamarin.com/show_bug.cgi?id=13933" target="_blank" title="This external link will open in a new window">https://bugzilla.xamarin.com/show_bug.cgi?id=13933</a> (also increased thread count from 2 to 10 to make it easier to reproduce the issue).</div>
<div class="HOEnZb"><div class="h5">
<div class="gmail_extra"><br><br><div class="gmail_quote">2013/8/12 Nikita Tsukanov <span dir="ltr"><<a href="mailto:keks9n@gmail.com" onclick="parent.webclient.openWindow(this, 'createmail', 'index.php?load=dialog&task=createmail_standard&to=keks9n@gmail.com'); return false;" target="_blank" title="This external link will open in a new window">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"><div><br></div>Oh, great. I've got lockup and segfault (on different runs) with this code:<div>



<font face="Consolas">
<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(51,100,164)">INancyEngine</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(68,68,68)">_engine</span><span style="color:rgb(68,68,68)">;</span><div>

<br>

<span style="color:rgb(68,68,68)">                </span><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(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><span style="color:rgb(68,68,68)">{</span><br>
</div><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)">pool</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)">new</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(51,100,164)">SmartThreadPool</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><div>

<br>

<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)">bt</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)">new</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(51,100,164)">DefaultNancyBootstrapper</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)">bt</span><span style="color:rgb(68,68,68)">.</span><span style="color:rgb(68,68,68)">Initialise</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>



</div><span style="color:rgb(68,68,68)">                        </span><span style="color:rgb(68,68,68)">_engine</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(68,68,68)">bt</span><span style="color:rgb(68,68,68)">.</span><span style="color:rgb(68,68,68)">GetEngine</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(0,150,149)">for</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)">c</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><span style="color:rgb(68,68,68)">c</span><span style="color:rgb(68,68,68)"><</span><span style="color:rgb(245,125,0)">2</span><span style="color:rgb(68,68,68)">;</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(68,68,68)">c</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)">new</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(51,100,164)">Thread</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(68,68,68)">(</span><span style="color:rgb(68,68,68)">ThreadProc</span><span style="color:rgb(68,68,68)">)</span><span style="color:rgb(68,68,68)">.</span><span style="color:rgb(68,68,68)">Start</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(51,100,164)">Thread</span><span style="color:rgb(68,68,68)">.</span><span style="color:rgb(68,68,68)">Sleep</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)">1</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>
<br>
<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)">ThreadProc</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><span style="color:rgb(0,150,149)">int</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(68,68,68)">crid</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(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><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)">crid</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)">var</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(68,68,68)">resp</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(68,68,68)">_engine</span><span style="color:rgb(68,68,68)">.</span><span style="color:rgb(68,68,68)">HandleRequest</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(68,68,68)">(</span><div>

<br>

<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)">Request</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(68,68,68)">(</span><span style="color:rgb(245,125,0)">"</span><span style="color:rgb(245,125,0)">GET</span><span style="color:rgb(245,125,0)">"</span><span style="color:rgb(68,68,68)">,</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(245,125,0)">"</span><span style="color:rgb(245,125,0)">/</span><span style="color:rgb(245,125,0)">"</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)">new</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(51,100,164)">Dictionary</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(51,100,164)">IEnumerable</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)">()</span><span style="color:rgb(68,68,68)">,</span><br>



<span style="color:rgb(68,68,68)">                                             </span><span style="color:rgb(51,100,164)">RequestStream</span><span style="color:rgb(68,68,68)">.</span><span style="color:rgb(68,68,68)">FromStream</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)">MemoryStream</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(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><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><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(245,125,0)">"</span><span style="color:rgb(245,125,0)">http</span><span style="color:rgb(245,125,0)">"</span><span style="color:rgb(68,68,68)">,</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(245,125,0)">"</span><span style="color:rgb(245,125,0)">"</span><span style="color:rgb(68,68,68)">,</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(245,125,0)">"</span><span style="color:rgb(245,125,0)">127</span><span style="color:rgb(245,125,0)">.</span><span style="color:rgb(245,125,0)">0</span><span style="color:rgb(245,125,0)">.</span><span style="color:rgb(245,125,0)">0</span><span style="color:rgb(245,125,0)">.</span><span style="color:rgb(245,125,0)">1</span><span style="color:rgb(245,125,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(68,68,68)">resp</span><span style="color:rgb(68,68,68)">.</span><span style="color:rgb(68,68,68)">Response</span><span style="color:rgb(68,68,68)">.</span><span style="color:rgb(68,68,68)">Contents</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)">MemoryStream</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>



</div><span style="color:rgb(68,68,68)">                                </span><span style="color:rgb(51,100,164)">Console</span><span style="color:rgb(68,68,68)">.</span><span style="color:rgb(68,68,68)">WriteLine</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(68,68,68)">(</span><span style="color:rgb(245,125,0)">"</span><span style="color:rgb(245,125,0)">Request</span><span style="color:rgb(245,125,0)"> </span><span style="color:rgb(245,125,0)">#</span><span style="color:rgb(255,0,0)">{</span><span style="color:rgb(255,0,0)">0</span><span style="color:rgb(255,0,0)">}</span><span style="color:rgb(255,0,0)"></span><span style="color:rgb(245,125,0)"> </span><span style="color:rgb(245,125,0)">done</span><span style="color:rgb(245,125,0)">"</span><span style="color:rgb(68,68,68)">,</span><span style="color:rgb(68,68,68)"> </span><span style="color:rgb(68,68,68)">crid</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><span style="color:rgb(68,68,68)">}</span></font>  </div><div><br></div><div>It just uses nancyfx engine from 2 threads.</div></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>
<pre>_______________________________________________<br>
Mono-devel-list mailing list<br>
Mono-devel-list@lists.ximian.com<br>
http://lists.ximian.com/mailman/listinfo/mono-devel-list<br>
</pre>
<!-- end sanitized html -->
</blockquote>
</body>
</html>