<p dir="ltr">The problem is specific to the epoll backed, if you disable it[1] your problem is fixed.<br>
I could repro it on linux-amd64 with epoll enabled but could not with it disabled.</p>
<p dir="ltr">The way to fix this is:</p>
<p dir="ltr">-move locking to the epoll backend and make sure it works there;<br>
-use a pipe like other backends to wake up the waiter and do all epoll ops from a single thread<br><br><br></p>
<p dir="ltr">[1] Set the MONO_DISABLE_AIO env var <br></p>
<div class="gmail_quot<blockquote class=" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">We still have this patch that we use with mono.<br>
<br>
diff --git a/mono/metadata/threadpool.c b/mono/metadata/threadpool.c<br>
index e8a2f1a..f83e473 100644<br>
--- a/mono/metadata/threadpool.c<br>
+++ b/mono/metadata/threadpool.c<br>
@@ -555,8 +555,8 @@ socket_io_add (MonoAsyncResult *ares,<br>
MonoSocketAsyncResult *state)<br>
<br>
  mono_g_hash_table_replace (data->sock_to_state, state->handle, list);<br>
  ievt = get_events_from_list (list);<br>
- LeaveCriticalSection (&data->io_lock);<br>
  data->modify (data->event_data, fd, state->operation, ievt, is_new);<br>
+ LeaveCriticalSection (&data->io_lock);<br>
 }<br>
<br>
<br>
We tried to submit this previously as it resolves our problems. It was<br>
rejected that it introduces a deadlock. We have provided tests that<br>
show without this change that TCP is basically unusable calls like<br>
beginsend sometimes never call endsend.<br>
<br>
I would really prefer to not be distributing a "custom" version of<br>
mono with this patch so how can we resolve this.<br>
<br>
Cheers,<br>
<br>
Greg<br>
<br>
--<br>
Le doute n'est pas une condition agréable, mais la certitude est absurde.<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>
</div>