<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2654.45">
<TITLE>duplicate socket deadlock in WSD</TITLE>
</HEAD>
<BODY>

<P><FONT SIZE=2>Fab</FONT>
</P>

<P><FONT SIZE=2>I think there is deadlock in the duplicate socket flow</FONT>
</P>

<P><FONT SIZE=2>duplicate socket call wait_cq_drain with sock_info->mutex acquire   (ibsp_duplicate.c line 313) </FONT>
<BR><FONT SIZE=2>and even in the busy wait loop (wait_cq_drain function ) in its does not release the mutex and wait to the counters to be 0.</FONT></P>

<P><FONT SIZE=2>But in the completion function (copletion_wq) in case of flush in error the code try to acquire the mutex</FONT>
<BR><FONT SIZE=2>so the completion function will not cont. and we are in deadlock</FONT>
</P>

<P><FONT SIZE=2>simple patch that solve it is to release the mutex before the sleep and acquire it after the sleep </FONT>
</P>

<P><FONT SIZE=2>10x</FONT>
<BR><FONT SIZE=2>Yossi </FONT>
</P>

</BODY>
</HTML>