<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:a="urn:schemas-microsoft-com:office:access" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" xmlns:b="urn:schemas-microsoft-com:office:publisher" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:q="http://schemas.xmlsoap.org/soap/envelope/" xmlns:D="DAV:" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ois="http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:udc="http://schemas.microsoft.com/data/udc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sps="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udcxf="http://schemas.microsoft.com/data/udc/xmlfile" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Courier;
        panose-1:2 7 4 9 2 2 5 2 4 4;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.5pt;
        font-family:Consolas;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:"Courier New";}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:Consolas;}
span.EmailStyle21
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle22
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle24
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Hi,<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Please read docs/ACE-bug-process.html, the issue is more that
people don't have time anymore to just fix these kind of issues without funding.
This is a change in the core of ACE which has to be investigated, reviewed,
tested, all taking time. At the moment someone is willing to fund such a change
there are multiple people that would be willing to work on this. We as Remedy
IT do fix issues on the doc_group release without funding, but our budgets for
doing that are limited, at the end we also have to pay our bills.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Johnny<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Greg Popovitch [mailto:gpy@altair.com]
<br>
<b>Sent:</b> Wednesday, February 27, 2008 5:13 PM<br>
<b>To:</b> Rudy Pot; Johnny Willemsen; ace-bugs@cs.wustl.edu<br>
<b>Subject:</b> RE: [ace-bugs] [ACE_Message_Queue] notify PIPE block
causesSelect_Reactor deadlock.<o:p></o:p></span></p>

</div>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Rudy, I reported the exact same issue and diagnostic a couple of
months ago (see mailing list on 11/29/2007 and 11/30/2007). Even though this is
a clear bug, it seemed to me that there was no one in particular planning to
fix the code. I ended up patching my own version, moving the notify() in the
code below one line down after the closing brace, so it would be out of the
scope of the ACE_GUARD. This fixes the issue and &nbsp;I have not seen any
termination race conditions.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText>template &lt;ACE_SYNCH_DECL&gt; int<o:p></o:p></p>

<p class=MsoPlainText>ACE_Message_Queue&lt;ACE_SYNCH_USE&gt;::enqueue_head
(ACE_Message_Block *new_item,<o:p></o:p></p>

<p class=MsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ACE_Time_Value *timeout) {<o:p></o:p></p>

<p class=MsoPlainText>&nbsp; ACE_TRACE
(&quot;ACE_Message_Queue&lt;ACE_SYNCH_USE&gt;::enqueue_head&quot;);<o:p></o:p></p>

<p class=MsoPlainText>&nbsp; int queue_count = 0;<o:p></o:p></p>

<p class=MsoPlainText>&nbsp; {<o:p></o:p></p>

<p class=MsoPlainText>&nbsp;&nbsp;&nbsp; ACE_GUARD_RETURN (ACE_SYNCH_MUTEX_T,
ace_mon, this-&gt;lock_, -1);<o:p></o:p></p>

<p class=MsoPlainText><o:p>&nbsp;</o:p></p>

<p class=MsoPlainText>&nbsp;&nbsp;&nbsp; if (this-&gt;state_ ==
ACE_Message_Queue_Base::DEACTIVATED)<o:p></o:p></p>

<p class=MsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<o:p></o:p></p>

<p class=MsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; errno =
ESHUTDOWN;<o:p></o:p></p>

<p class=MsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<o:p></o:p></p>

<p class=MsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>

<p class=MsoPlainText><o:p>&nbsp;</o:p></p>

<p class=MsoPlainText>&nbsp;&nbsp;&nbsp; if (this-&gt;wait_not_full_cond
(ace_mon, timeout) == -1)<o:p></o:p></p>

<p class=MsoPlainText>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;return -1;<o:p></o:p></p>

<p class=MsoPlainText><o:p>&nbsp;</o:p></p>

<p class=MsoPlainText>&nbsp;&nbsp;&nbsp; queue_count = this-&gt;enqueue_head_i
(new_item);<o:p></o:p></p>

<p class=MsoPlainText><o:p>&nbsp;</o:p></p>

<p class=MsoPlainText>&nbsp;&nbsp;&nbsp; if (queue_count == -1)<o:p></o:p></p>

<p class=MsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<o:p></o:p></p>

<p class=MsoPlainText><o:p>&nbsp;</o:p></p>

<p class=MsoPlainText>=&gt;&nbsp;&nbsp;&nbsp; this-&gt;notify ();<o:p></o:p></p>

<p class=MsoPlainText>&nbsp; }<o:p></o:p></p>

<p class=MsoPlainText>&nbsp; return queue_count;<o:p></o:p></p>

<p class=MsoPlainText>}<o:p></o:p></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>
ace-bugs-bounces@cse.wustl.edu [mailto:ace-bugs-bounces@cse.wustl.edu] <b>On
Behalf Of </b>Rudy Pot<br>
<b>Sent:</b> Wednesday, February 27, 2008 10:30 AM<br>
<b>To:</b> Johnny Willemsen; ace-bugs@cs.wustl.edu<br>
<b>Subject:</b> Re: [ace-bugs] [ACE_Message_Queue] notify PIPE block causesSelect_Reactor
deadlock.<o:p></o:p></span></p>

</div>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>Hi Johnny,</span><o:p></o:p></p>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>Thanks for your quick response!</span><o:p></o:p></p>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>I have had a closer look at all related bug messages and now I see
that my <br>
problem is already quite old (sorry for that).</span><o:p></o:p></p>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>Correct me if I'm wrong but as far as I can see now there are two
problems <br>
with ace/Message_Queue_T.cpp:</span><o:p></o:p></p>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>1) Sun May&nbsp; 5 19:14:34 2002&nbsp; Douglas C. Schmidt&nbsp;
&lt;<a href="mailto:schm...@macarena.cs.wustl.edu">schm...@macarena.cs.wustl.edu</a>&gt;</span><o:p></o:p></p>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *
ace/Message_Queue_T.cpp: Modified all the enqueue*() methods so that<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; their calls to notify()
occur *outside* of the monitor lock.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; This change prevents
deadlock from occurring when a reactor's<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; notification pipe is
full.&nbsp; Thanks to Sasha Agranov<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;<a
href="mailto:sagra...@COMGATES.co.il">sagra...@COMGATES.co.il</a>&gt; for
reporting this.</span><o:p></o:p></p>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>2) Sat Mar 22 11:58:12 2003&nbsp; Douglas C. Schmidt&nbsp; &lt;<a
href="mailto:schm...@tango.doc.wustl.edu">schm...@tango.doc.wustl.edu</a>&gt;</span><o:p></o:p></p>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *
ace/Message_Queue_T.cpp: Moved the notify() hook calls within<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the protection of the
guard lock critical section to prevent<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; race conditions on
cleanup.&nbsp; Thanks to Ron Muck &lt;<a href="mailto:r...@sdiusa.com">r...@sdiusa.com</a>&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for this suggestion. </span><o:p></o:p></p>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>Currently, the latter (2) is solved but because of that (1), which
is my <br>
problem, has returned.</span><o:p></o:p></p>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>Is it not possible to solve both problems with adding an extra
notify lock? </span><o:p></o:p></p>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<p class=MsoNormal><span style='font-family:"Arial","sans-serif"'><br>
</span><span style='font-size:10.0pt;font-family:Courier;color:blue'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;MessageQueue1, lock1&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
handle_*<br>
&nbsp;&nbsp;&nbsp;&nbsp;
[Producer-1]-enqueue--&gt;[|||||||||||||||||||||||||]---&gt;[EH-1] &lt;-----+<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
\<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
\ &lt;notifyLock&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;PIPE?&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
|<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+-notify-----&gt;[|||||||||||||||||||||]---&gt;[Reactor]---+<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
(consumer)&nbsp;&nbsp; |<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;MessageQueue-n,
lock-n&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/<br>
&nbsp;&nbsp;&nbsp;&nbsp;
[Producer-n]-enqueue--&gt;[|||||||||||||||||||||||||]---&gt;[EH-n] &lt;----+ <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
handle_*</span><span style='font-family:"Arial","sans-serif"'><o:p></o:p></span></p>

<div>

<p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;<o:p></o:p></span></p>

</div>

<p class=MsoNormal><span style='font-family:"Arial","sans-serif"'><br>
</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>I will point out my idea about this in the following fix code
example.</span><span style='font-family:"Arial","sans-serif"'><o:p></o:p></span></p>

<div>

<p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;<o:p></o:p></span></p>

</div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>This fix might be a problem because I think it needs some interface
change in <br>
ACE_Notification_Strategy too (to get a notification lock somehow) but you have<br>
more insight in the concequences of that. </span><span style='font-family:"Arial","sans-serif"'><o:p></o:p></span></p>

<div>

<p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;<o:p></o:p></span></p>

</div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>Maybe you first could have a look at this proposal?</span><span
style='font-family:"Arial","sans-serif"'><o:p></o:p></span></p>

<div>

<p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;<o:p></o:p></span></p>

</div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>Thanks in advance,<br>
Rudy Pot</span><span style='font-family:"Arial","sans-serif"'><o:p></o:p></span></p>

<div>

<p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;<o:p></o:p></span></p>

</div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>//==============================================================================<br>
FIX CODE EXAMPLE&nbsp; (changes applicable for: enqueue_prio, enqueue_head, <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
enqueue_deadline, enqueue_tail )</span><span style='font-family:"Arial","sans-serif"'><o:p></o:p></span></p>

<div>

<p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;<o:p></o:p></span></p>

</div>

<p class=MsoNormal><span style='font-family:"Arial","sans-serif"'><br>
</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>template &lt;ACE_SYNCH_DECL&gt; int<br>
ACE_Message_Queue&lt;ACE_SYNCH_USE&gt;::enqueue_prio (ACE_Message_Block
*new_item,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ACE_Time_Value *timeout)<br>
{<br>
&nbsp; ACE_TRACE
(&quot;ACE_Message_Queue&lt;ACE_SYNCH_USE&gt;::enqueue_prio&quot;);<br>
&nbsp; int queue_count = 0;<br>
&nbsp; {<br>
&nbsp;&nbsp;&nbsp; ACE_GUARD_RETURN (ACE_SYNCH_MUTEX_T, ace_mon,
this-&gt;lock_, -1);</span><span style='font-family:"Arial","sans-serif"'><o:p></o:p></span></p>

<div>

<p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;<o:p></o:p></span></p>

</div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>&nbsp;&nbsp;&nbsp; if (this-&gt;state_ ==
ACE_Message_Queue_Base::DEACTIVATED)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; errno = ESHUTDOWN;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><span style='font-family:"Arial","sans-serif"'><o:p></o:p></span></p>

<div>

<p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;<o:p></o:p></span></p>

</div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>&nbsp;&nbsp;&nbsp; if (this-&gt;wait_not_full_cond (ace_mon,
timeout) == -1)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;</span><span style='font-family:"Arial","sans-serif"'><o:p></o:p></span></p>

<div>

<p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;<o:p></o:p></span></p>

</div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>+&nbsp;&nbsp; {<br>
+&nbsp;&nbsp;&nbsp;&nbsp; ACE_GUARD_RETURN (ACE_SYNCH_MUTEX_T<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
,ace_notify_mon<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
// Would be handy if ACE_Notification_Strategy<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
// has a lock. To be gathered from notify target<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
// (reactor?)<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
// Problem: ACE_Reactor_Notification_Strategy has stored&nbsp; <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
// Reactor reference but ACE_Notification_Strategy not.<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
,this-&gt;notification_strategy-&gt;lock()<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
, -1);</span><span style='font-family:"Arial","sans-serif"'><o:p></o:p></span></p>

<div>

<p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;<o:p></o:p></span></p>

</div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>+&nbsp;&nbsp;&nbsp;&nbsp; // Somehow check if the (reactor?)
notification channel is full.<br>
+&nbsp;&nbsp;&nbsp;&nbsp; // Probably needs this-&gt;notification_strategy too.<br>
+&nbsp;&nbsp;&nbsp;&nbsp; if (this-&gt;wait_no_notify_full_cond
(ace_notify_mon, timeout) == -1)<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1; // We cannot enqueue without
causing a deadlock, so exit.</span><span style='font-family:"Arial","sans-serif"'><o:p></o:p></span></p>

<div>

<p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;<o:p></o:p></span></p>

</div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>+&nbsp;&nbsp;&nbsp;&nbsp; // Because we hold the notify lock, no
new notifications will occur on our<br>
+&nbsp;&nbsp;&nbsp;&nbsp; // target and it is safe to enqueue &amp; notify
hereafter...</span><span style='font-family:"Arial","sans-serif"'><o:p></o:p></span></p>

<div>

<p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;<o:p></o:p></span></p>

</div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; queue_count = this-&gt;enqueue_i
(new_item);</span><span style='font-family:"Arial","sans-serif"'><o:p></o:p></span></p>

<div>

<p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;<o:p></o:p></span></p>

</div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (queue_count == -1)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;</span><span
style='font-family:"Arial","sans-serif"'><o:p></o:p></span></p>

<div>

<p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;<o:p></o:p></span></p>

</div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this-&gt;notify (); </span><span
style='font-family:"Arial","sans-serif"'><o:p></o:p></span></p>

<div>

<p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;<o:p></o:p></span></p>

</div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>+&nbsp;&nbsp; }; // e.o. notify guarded area.</span><span
style='font-family:"Arial","sans-serif"'><o:p></o:p></span></p>

<div>

<p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;<o:p></o:p></span></p>

</div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>&nbsp; }<br>
&nbsp; return queue_count;<br>
}</span><span style='font-family:"Arial","sans-serif"'><o:p></o:p></span></p>

<div>

<p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;<o:p></o:p></span></p>

</div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>END FIX CODE EXAMPLE&nbsp;<br>
//==============================================================================</span><span
style='font-family:"Arial","sans-serif"'><o:p></o:p></span></p>

<div>

<p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>&nbsp;<o:p></o:p></span></p>

</div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

<p class=MsoNormal><span style='font-family:"Courier New";color:blue'>&nbsp;<o:p></o:p></span></p>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

<div class=MsoNormal align=center style='text-align:center'>

<hr size=2 width="100%" align=center>

</div>

<p class=MsoNormal style='margin-bottom:12.0pt'><b><span style='font-size:10.0pt;
font-family:"Tahoma","sans-serif"'>From:</span></b><span style='font-size:10.0pt;
font-family:"Tahoma","sans-serif"'> Johnny Willemsen
[mailto:jwillemsen@remedy.nl] <br>
<b>Sent:</b> woensdag 27 februari 2008 13:08<br>
<b>To:</b> Rudy Pot; ace-bugs@cs.wustl.edu<br>
<b>Subject:</b> RE: [ace-bugs] [ACE_Message_Queue] notify PIPE block causes
Select_Reactor deadlock.</span><o:p></o:p></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Hi,<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Thanks for using the PRF form. I found the change below in svn <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Johnny<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Courier New";
color:rosybrown'>Sat Mar 22 11:58:12 2003&nbsp; </span></b><b><span
style='font-size:10.0pt;font-family:"Courier New";color:cadetblue'>Douglas C.
Schmidt&nbsp; </span></b><span style='font-size:10.0pt;font-family:"Courier New"'>&lt;<span
style='color:darkgoldenrod'>schmidt@tango.doc.wustl.edu</span>&gt;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
* <b><span style='color:blue'>ace/Message_Queue_T.cpp</span></b>: Moved the
notify() hook calls within<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp; the protection of the guard lock critical section to prevent<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp; race conditions on cleanup.&nbsp; Thanks to Ron Muck
&lt;rlm@sdiusa.com&gt; <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp; for this suggestion.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>
ace-bugs-bounces@cse.wustl.edu [mailto:ace-bugs-bounces@cse.wustl.edu] <b>On
Behalf Of </b>Rudy Pot<br>
<b>Sent:</b> Wednesday, February 27, 2008 11:29 AM<br>
<b>To:</b> ace-bugs@cs.wustl.edu<br>
<b>Subject:</b> [ace-bugs] [ACE_Message_Queue] notify PIPE block causes
Select_Reactor deadlock.<o:p></o:p></span></p>

</div>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<div>

<p class=MsoNormal><br>
<span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;
ACE VERSION: 5.5.6</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;
HOST MACHINE and OPERATING SYSTEM: i386, Linux 2.6.20-1.2933.fc6 </span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;
TARGET MACHINE and OPERATING SYSTEM, if different from HOST: same.</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'><br>
&nbsp;&nbsp;&nbsp; COMPILER NAME AND VERSION (AND PATCHLEVEL): gcc 4.1.1</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;
CONTENTS OF $ACE_ROOT/ace/config.h:&nbsp; config-linux.h</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;
CONTENTS OF $ACE_ROOT/include/makeinclude/platform_macros.GNU (unless<br>
&nbsp;&nbsp;&nbsp; this isn't used in this case, e.g., with Microsoft Visual
C++):<br>
&nbsp;&nbsp;&nbsp;&nbsp; platform-linux.GNU<br>
&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; AREA/CLASS/EXAMPLE AFFECTED: <br>
&nbsp;&nbsp;&nbsp; Message_Queue_T.cpp / ACE_Message_Queue&lt;ACE_SYNCH_USE&gt;
/ enqueue_prio<br>
&nbsp;&nbsp;&nbsp; ( But I think also:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ::enqueue_head, <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ::enqueue_deadline,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ::enqueue_tail )</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;
See DESCRIPTION.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;
DOES THE PROBLEM AFFECT:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; COMPILATION? NO<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LINKING?&nbsp;&nbsp;&nbsp;&nbsp; NO<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXECUTION?&nbsp;&nbsp; YES<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OTHER (please specify)? NO</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;
SYNOPSIS:<br>
&nbsp;&nbsp;&nbsp; Application sometimes hangs when main Reactor gets more
busy. <br>
&nbsp;&nbsp;&nbsp; (e.g. due to significant increasing external events)<br>
&nbsp;&nbsp;&nbsp; Coredump shows:<br>
&nbsp;&nbsp;&nbsp; 1) Main Reactor thread is blocking to get the ACE_Message_Queue
lock.<br>
&nbsp;&nbsp;&nbsp; 2) Multiple threads block on ACE_Select_Reactor_Notify-&gt;
which ends up in<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt;ACE::send() -&gt; write().<br>
&nbsp;&nbsp;&nbsp; Result is deadlock. We have to kill the application for
shutdown.</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;
I've read Sidebar17 of C++ Network Programming Volume 2 but our situation <br>
&nbsp;&nbsp;&nbsp; is different from what is stated there (no notify called
from handle_* of<br>
&nbsp;&nbsp;&nbsp; event_handler but producer-consumer deadlock).</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><br>
<span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;
DESCRIPTION:</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;
The application in short.<br>
&nbsp;&nbsp;&nbsp; -------------------------<br>
&nbsp;&nbsp;&nbsp; The part of our program where this deadlock appears is
dealing with <br>
&nbsp;&nbsp;&nbsp; processing messages from an embedded (CAN) network. <br>
&nbsp;&nbsp;&nbsp; There is a thread per CAN message center (hardware
communication channel)<br>
&nbsp;&nbsp;&nbsp; which puts the received message into ACE_Message_Queue's,
depending on who<br>
&nbsp;&nbsp;&nbsp; wants to observe the messages. These are the producer
threads.</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;
The message queues belongs to observers who all have registered to get<br>
&nbsp;&nbsp;&nbsp; notified by one Reactor which runs in one main Reactor
thread (consumer).<br>
&nbsp;&nbsp;&nbsp; (they also have registered themselves by the message center
threads as being<br>
&nbsp;&nbsp;&nbsp;&nbsp; interested in the messages).</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;
Problem cause<br>
&nbsp;&nbsp;&nbsp; --------------<br>
&nbsp;&nbsp;&nbsp; What can happen now is that the main Reactor, which is used
for many other <br>
&nbsp;&nbsp;&nbsp; things in our application, temporarily got other work todo,
and therefore<br>
&nbsp;&nbsp;&nbsp; the message center threads may fill up the
ACE_Select_Reactor notification<br>
&nbsp;&nbsp;&nbsp; PIPE. This causes the message center threads (producers) to
block on the <br>
&nbsp;&nbsp;&nbsp; (FULL) PIPE write().</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;
The main Reactor thread (consumer), when ready with the other work, wants to <br>
&nbsp;&nbsp;&nbsp; proceed with handling the pending notifications, and so
emptying the PIPE, <br>
&nbsp;&nbsp;&nbsp; but cannot do this because the current notification code
also holds the <br>
&nbsp;&nbsp;&nbsp; message QUEUE lock! <br>
&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; See code description below:</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><br>
<span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;
In Message_Queue_T.cpp<br>
&nbsp;&nbsp;&nbsp; ======================<br>
&nbsp;&nbsp;&nbsp; ACE_Message_Queue&lt;ACE_SYNCH_USE&gt;::enqueue_prio,<br>
&nbsp;&nbsp;&nbsp; ( But also the code reveals:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ::enqueue_head, <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ::enqueue_deadline,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ::enqueue_tail )</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>-------------------------------<br>
DEADLOCK CODE: (Above rev. 46096 until HEAD code)</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>template
&lt;ACE_SYNCH_DECL&gt; int<br>
ACE_Message_Queue&lt;ACE_SYNCH_USE&gt;::enqueue_prio (ACE_Message_Block
*new_item,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ACE_Time_Value *timeout)<br>
{<br>
&nbsp; ACE_TRACE (&quot;ACE_Message_Queue&lt;ACE_SYNCH_USE&gt;::enqueue_prio&quot;);<br>
&nbsp; int queue_count = 0;<br>
&nbsp; {<br>
&nbsp;&nbsp;&nbsp; ACE_GUARD_RETURN (ACE_SYNCH_MUTEX_T, ace_mon,
this-&gt;lock_, -1);</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;
if (this-&gt;state_ == ACE_Message_Queue_Base::DEACTIVATED)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; errno = ESHUTDOWN;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;
if (this-&gt;wait_not_full_cond (ace_mon, timeout) == -1)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;
queue_count = this-&gt;enqueue_i (new_item);</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;
if (queue_count == -1)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;
this-&gt;notify ();&nbsp; &lt;&lt;&lt;&lt; ERROR DEADLOCK (When blocking on
notify in scope of <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
buffer lock...)<br>
&nbsp; }<br>
&nbsp; return queue_count;<br>
}</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><br>
<span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;
In above code snippet: <br>
&nbsp;&nbsp;&nbsp; this-&gt;notify (); Causes DEADLOCK when blocking on full
notification pipe.<br>
&nbsp;&nbsp;&nbsp; This happens because &lt;notify()&gt; is now called within
the scope of the <br>
&nbsp;&nbsp;&nbsp; ACE_GUARD_RETURN.</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;
In older versions of ACE, e.g. 5.3.1, the &lt;notify()&gt; was outside the
scope<br>
&nbsp;&nbsp;&nbsp; of the GUARD and we never had this deadlock.</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;
In SUBVERSION ACE, I can see this has been changed after revision<br>
&nbsp;&nbsp;&nbsp;&nbsp; r.46096 of Message_Queue_T.cpp (ChangeLogTag:Sat Mar
22 11:58:12 2003)<br>
&nbsp;&nbsp;&nbsp; But I don't know why.</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;
See Message_Queue_T.cpp <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : enqueue_prio, enqueue_head, enqueue_deadline,
enqueue_tail</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>-------------------------------<br>
NON DEADLOCK CODE (rev. 46096)<br>
&nbsp;&nbsp;&nbsp; ...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; ...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; if (queue_count == -1)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;
}&nbsp; // e.o. scope ACE_GUARD_RETURN for queue lock.<br>
&nbsp; this-&gt;notify ();&nbsp; // NO deadlock here, notify will unblock as
soon PIPE is <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
// emptied.<br>
&nbsp; return queue_count;<br>
}</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><br>
<span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>-------------------------------<br>
Concerning Coredump parts:</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>[
consumer ]</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>Thread
1 (process 16785):<br>
#0&nbsp; 0x009bc5d9 in __lll_mutex_lock_wait () from /lib/libpthread.so.0<br>
#1&nbsp; 0x009b8636 in _L_mutex_lock_85 () from /lib/libpthread.so.0<br>
#2&nbsp; 0x009b817d in pthread_mutex_lock () from /lib/libpthread.so.0<br>
#3&nbsp; 0x00a9f922 in ACE_OS::mutex_lock () from /usr/lib/libACE.so.5.5.6<br>
#4&nbsp; 0x00fd83c8 in ACE_Message_Queue&lt;ACE_MT_SYNCH&gt;::is_empty ()<br>
&nbsp;&nbsp; from /opt/lib/libgcp_datadump.so<br>
#5&nbsp; 0x0142d881 in can::CCanSvcDriverObserver::handle_output ()<br>
&nbsp;&nbsp; from /opt/lib/libcanResourceManager.so.2<br>
#6&nbsp; 0x00ac03f6 in ACE_Select_Reactor_Notify::dispatch_notify ()<br>
&nbsp;&nbsp; from /usr/lib/libACE.so.5.5.6<br>
#7&nbsp; 0x00ac057a in ACE_Select_Reactor_Notify::handle_input ()<br>
&nbsp;&nbsp; from /usr/lib/libACE.so.5.5.6<br>
#8&nbsp; 0x00ac14da in ACE_Select_Reactor_Notify::dispatch_notifications ()<br>
&nbsp;&nbsp; from /usr/lib/libACE.so.5.5.6<br>
#9&nbsp; 0x00a5ef8e in ACE_Asynch_Pseudo_Task::ACE_Asynch_Pseudo_Task$base ()<br>
&nbsp;&nbsp; from /usr/lib/libACE.so.5.5.6<br>
#10 0x00a5f5fd in ACE_Asynch_Pseudo_Task::ACE_Asynch_Pseudo_Task$base ()<br>
&nbsp;&nbsp; from /usr/lib/libACE.so.5.5.6<br>
#11 0x00a65b03 in ACE_OS::gettimeofday () from /usr/lib/libACE.so.5.5.6<br>
#12 0x00abd0d3 in ACE_Reactor::run_reactor_event_loop ()<br>
&nbsp;&nbsp; from /usr/lib/libACE.so.5.5.6<br>
#13 0x0804ae36 in main ()</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>[&nbsp;producer
]<o:p></o:p></span></p>

</div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>Thread
28 (process 17023):<br>
#0&nbsp; 0x009bc8f1 in write () from /lib/libpthread.so.0<br>
#1&nbsp; 0x00a55a3a in ACE::send () from /usr/lib/libACE.so.5.5.6<br>
#2&nbsp; 0x00ac082e in ACE_Select_Reactor_Notify::notify ()<br>
&nbsp;&nbsp; from /usr/lib/libACE.so.5.5.6<br>
#3&nbsp; 0x00a5edcc in ACE_Asynch_Pseudo_Task::ACE_Asynch_Pseudo_Task$base ()<br>
&nbsp;&nbsp; from /usr/lib/libACE.so.5.5.6<br>
#4&nbsp; 0x00abdce6 in ACE_Reactor::notify () from /usr/lib/libACE.so.5.5.6<br>
#5&nbsp; 0x00abeace in ACE_Reactor_Notification_Strategy::notify ()<br>
&nbsp;&nbsp; from /usr/lib/libACE.so.5.5.6<br>
#6&nbsp; 0x0804b42a in ACE_Message_Queue&lt;ACE_MT_SYNCH&gt;::notify ()<br>
#7&nbsp; 0x00fd7fa2 in ACE_Message_Queue&lt;ACE_MT_SYNCH&gt;::enqueue_prio ()<br>
&nbsp;&nbsp; from /opt/lib/libgcp_datadump.so<br>
#8&nbsp; 0x0142d6f3 in can::CCanSvcDriverObserver::update ()<br>
&nbsp;&nbsp; from /opt/lib/libcanResourceManager.so.2<br>
#9&nbsp; 0x0143078d in can::CCanSvcDriver_Base::svc_Read ()<br>
&nbsp;&nbsp; from /opt/lib/libcanResourceManager.so.2<br>
#10 0x0143087f in can::CCanSvcDriverRemoteRequestImpl::svc ()<br>
&nbsp;&nbsp; from /opt/lib/libcanResourceManager.so.2<br>
#11 0x00ad3026 in ACE_Task_Base::svc_run () from /usr/lib/libACE.so.5.5.6<br>
#12 0x00ad39e8 in ACE_Thread_Adapter::invoke_i ()<br>
&nbsp;&nbsp; from /usr/lib/libACE.so.5.5.6<br>
#13 0x00ad3bb6 in ACE_Thread_Adapter::invoke () from /usr/lib/libACE.so.5.5.6<br>
#14 0x00a67511 in ace_thread_adapter () from /usr/lib/libACE.so.5.5.6<br>
#15 0x009b626a in start_thread () from /lib/libpthread.so.0<br>
#16 0x92fff470 in ?? ()<br>
#17 0x92fff470 in ?? ()<br>
#18 0x92fff470 in ?? ()<br>
#19 0x92fff470 in ?? ()<br>
#20 0x00000000 in ?? ()</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>[&nbsp;producer
]<o:p></o:p></span></p>

</div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>Thread
34 (process 17012):<br>
#0&nbsp; 0x009bc8f1 in write () from /lib/libpthread.so.0<br>
#1&nbsp; 0x00a55a3a in ACE::send () from /usr/lib/libACE.so.5.5.6<br>
#2&nbsp; 0x00ac082e in ACE_Select_Reactor_Notify::notify ()<br>
&nbsp;&nbsp; from /usr/lib/libACE.so.5.5.6<br>
#3&nbsp; 0x00a5edcc in ACE_Asynch_Pseudo_Task::ACE_Asynch_Pseudo_Task$base ()<br>
&nbsp;&nbsp; from /usr/lib/libACE.so.5.5.6<br>
#4&nbsp; 0x00abdce6 in ACE_Reactor::notify () from /usr/lib/libACE.so.5.5.6<br>
#5&nbsp; 0x00abeace in ACE_Reactor_Notification_Strategy::notify ()<br>
&nbsp;&nbsp; from /usr/lib/libACE.so.5.5.6<br>
#6&nbsp; 0x0804b42a in ACE_Message_Queue&lt;ACE_MT_SYNCH&gt;::notify ()<br>
#7&nbsp; 0x00fd7fa2 in ACE_Message_Queue&lt;ACE_MT_SYNCH&gt;::enqueue_prio ()<br>
&nbsp;&nbsp; from /opt/lib/libgcp_datadump.so<br>
#8&nbsp; 0x0142d6f3 in can::CCanSvcDriverObserver::update ()<br>
&nbsp;&nbsp; from /opt/lib/libcanResourceManager.so.2<br>
#9&nbsp; 0x0143062b in can::CCanSvcDriver_Base::svc_Read ()<br>
&nbsp;&nbsp; from /opt/lib/libcanResourceManager.so.2<br>
#10 0x014308cd in can::CCanSvcDriverReadImpl::svc ()<br>
&nbsp;&nbsp; from /opt/lib/libcanResourceManager.so.2<br>
#11 0x00ad3026 in ACE_Task_Base::svc_run () from /usr/lib/libACE.so.5.5.6<br>
#12 0x00ad39e8 in ACE_Thread_Adapter::invoke_i ()<br>
&nbsp;&nbsp; from /usr/lib/libACE.so.5.5.6<br>
#13 0x00ad3bb6 in ACE_Thread_Adapter::invoke () from /usr/lib/libACE.so.5.5.6<br>
#14 0x00a67511 in ace_thread_adapter () from /usr/lib/libACE.so.5.5.6<br>
#15 0x009b626a in start_thread () from /lib/libpthread.so.0<br>
#16 0x96bff470 in ?? ()<br>
#17 0x96bff470 in ?? ()<br>
#18 0x96bff470 in ?? ()<br>
#19 0x96bff470 in ?? ()<br>
#20 0x00000000 in ?? ()</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>[&nbsp;producer
]<o:p></o:p></span></p>

</div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>Thread
26 (process 17025):<br>
#0&nbsp; 0x009bc8f1 in write () from /lib/libpthread.so.0<br>
#1&nbsp; 0x00a55a3a in ACE::send () from /usr/lib/libACE.so.5.5.6<br>
#2&nbsp; 0x00ac082e in ACE_Select_Reactor_Notify::notify ()<br>
&nbsp;&nbsp; from /usr/lib/libACE.so.5.5.6<br>
#3&nbsp; 0x00a5edcc in ACE_Asynch_Pseudo_Task::ACE_Asynch_Pseudo_Task$base ()<br>
&nbsp;&nbsp; from /usr/lib/libACE.so.5.5.6<br>
#4&nbsp; 0x00abdce6 in ACE_Reactor::notify () from /usr/lib/libACE.so.5.5.6<br>
#5&nbsp; 0x00abeace in ACE_Reactor_Notification_Strategy::notify ()<br>
&nbsp;&nbsp; from /usr/lib/libACE.so.5.5.6<br>
#6&nbsp; 0x0804b42a in ACE_Message_Queue&lt;ACE_MT_SYNCH&gt;::notify ()<br>
#7&nbsp; 0x00fd7fa2 in ACE_Message_Queue&lt;ACE_MT_SYNCH&gt;::enqueue_prio ()<br>
&nbsp;&nbsp; from /opt/lib/libgcp_datadump.so<br>
#8&nbsp; 0x0142d6f3 in can::CCanSvcDriverObserver::update ()<br>
&nbsp;&nbsp; from /opt/lib/libcanResourceManager.so.2<br>
#9&nbsp; 0x0143078d in can::CCanSvcDriver_Base::svc_Read ()<br>
&nbsp;&nbsp; from /opt/lib/libcanResourceManager.so.2<br>
#10 0x0143087f in can::CCanSvcDriverRemoteRequestImpl::svc ()<br>
&nbsp;&nbsp; from /opt/lib/libcanResourceManager.so.2<br>
#11 0x00ad3026 in ACE_Task_Base::svc_run () from /usr/lib/libACE.so.5.5.6<br>
#12 0x00ad39e8 in ACE_Thread_Adapter::invoke_i ()<br>
&nbsp;&nbsp; from /usr/lib/libACE.so.5.5.6<br>
#13 0x00ad3bb6 in ACE_Thread_Adapter::invoke () from /usr/lib/libACE.so.5.5.6<br>
#14 0x00a67511 in ace_thread_adapter () from /usr/lib/libACE.so.5.5.6<br>
#15 0x009b626a in start_thread () from /lib/libpthread.so.0<br>
#16 0x91bff470 in ?? ()<br>
#17 0x91bff470 in ?? ()<br>
#18 0x91bff470 in ?? ()<br>
#19 0x91bff470 in ?? ()<br>
#20 0x00000000 in ?? ()</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><br>
<span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;
REPEAT BY:<br>
&nbsp;&nbsp;&nbsp; See description</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;
SAMPLE FIX/WORKAROUND:<br>
&nbsp;&nbsp;&nbsp; Change ACE code so that &lt;this-&gt;notify();&gt; is
outside of GUARD scope?<br>
&nbsp;&nbsp;&nbsp; (like it was before in rev. 46096).</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>[*
end of PRF *]</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>Aside
from this deadlock problem:</span><o:p></o:p></p>

</div>

<div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>One
thing what also comes up now is that I have to look at the notification pipe</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>buffer
length too when I want&nbsp;to increase the&nbsp; ACE_Message_Queue size?</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>(enqueue
will block if notification pipe is full). </span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>Or,&nbsp;I
have to use #define ACE_HAS_REACTOR_NOTIFICATION_QUEUE and</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>recompile
ACE?</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>Best
regards,</span><o:p></o:p></p>

</div>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

<div>

<p class=MsoNormal><strong><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>Rudy&nbsp;Pot</span></strong><o:p></o:p></p>

</div>

<div>

<div>

<div>

<div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>Embedded
Computer Systems</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><strong><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>AWETA
G&amp;P b.v</span></strong><o:p></o:p></p>

</div>

<div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>Postbox
17</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>NL-2630
AA&nbsp; Nootdorp</span><o:p></o:p></p>

</div>

</div>

<div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>tel
+31 (0)15 3109961 </span><o:p></o:p></p>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>fax&nbsp;+31
(0)15 3107321 </span><o:p></o:p></p>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>mail&nbsp;</span><a
href="mailto:rpot@aweta.nl"><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>rpot@aweta.nl</span></a><o:p></o:p></p>

</div>

<div>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>web
<a href="blocked::http://www.aweta.com">www.aweta.com</a></span><o:p></o:p></p>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</body>

</html>