<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML xmlns="http://www.w3.org/TR/REC-html40" 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"><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<TITLE>Message</TITLE>

<META content="MSHTML 6.00.6000.16544" name=GENERATOR>
<STYLE>@font-face {
        font-family: Cambria Math;
}
@font-face {
        font-family: Calibri;
}
@font-face {
        font-family: Consolas;
}
@page Section1 {size: 8.5in 11.0in; margin: 1.0in 1.0in 1.0in 1.0in; }
P.MsoNormal {
        FONT-SIZE: 11pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: "Calibri","sans-serif"
}
LI.MsoNormal {
        FONT-SIZE: 11pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: "Calibri","sans-serif"
}
DIV.MsoNormal {
        FONT-SIZE: 11pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: "Calibri","sans-serif"
}
A:link {
        COLOR: blue; TEXT-DECORATION: underline; mso-style-priority: 99
}
SPAN.MsoHyperlink {
        COLOR: blue; TEXT-DECORATION: underline; mso-style-priority: 99
}
A:visited {
        COLOR: purple; TEXT-DECORATION: underline; mso-style-priority: 99
}
SPAN.MsoHyperlinkFollowed {
        COLOR: purple; TEXT-DECORATION: underline; mso-style-priority: 99
}
SPAN.EmailStyle17 {
        COLOR: windowtext; FONT-FAMILY: "Calibri","sans-serif"; mso-style-type: personal-compose
}
.MsoChpDefault {
        mso-style-type: export-only
}
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 vLink=purple link=blue>
<DIV><SPAN class=848510017-21112007><FONT face=Arial color=#0000ff size=2>Hi 
Andre,</FONT></SPAN></DIV>
<DIV><FONT face=Arial color=#0000ff size=2></FONT>&nbsp;</DIV>
<DIV><SPAN class=848510017-21112007><FONT face=Arial color=#0000ff size=2>Thanks 
for the PRF!</FONT></SPAN></DIV>
<DIV><FONT face=Arial color=#0000ff size=2></FONT>&nbsp;</DIV>
<DIV><SPAN class=848510017-21112007><FONT face=Arial color=#0000ff size=2>You 
can avoid this problem by calling</FONT></SPAN></DIV>
<DIV><SPAN class=848510017-21112007><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=848510017-21112007><FONT face=Arial color=#0000ff 
size=2>ACE_Reactor::instance()-&gt;restart (1);</FONT></SPAN></DIV>
<DIV><SPAN class=848510017-21112007><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=848510017-21112007><FONT face=Arial color=#0000ff size=2>before 
run_reactor_event_loop(), or explicitly construct a reactor with the "restart" 
arg set to 1.</FONT></SPAN></DIV>
<DIV><SPAN class=848510017-21112007><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=848510017-21112007><FONT face=Arial color=#0000ff size=2>Best 
regards,</FONT></SPAN></DIV>
<DIV><SPAN class=848510017-21112007><FONT face=Arial color=#0000ff 
size=2>-Steve</FONT></SPAN></DIV><!-- Converted from text/plain format -->
<P><FONT size=2>--<BR>Steve Huston, Riverace Corporation<BR>Want to take ACE 
training on YOUR schedule?<BR>See <A 
href="http://www.riverace.com/training.htm">http://www.riverace.com/training.htm</A><BR></FONT></P>
<BLOCKQUOTE dir=ltr 
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
  <DIV></DIV>
  <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left><FONT 
  face=Tahoma size=2>-----Original Message-----<BR><B>From:</B> 
  ace-users-bounces@cse.wustl.edu [mailto:ace-users-bounces@cse.wustl.edu] <B>On 
  Behalf Of </B>Andre Kostur<BR><B>Sent:</B> Tuesday, November 20, 2007 9:37 
  PM<BR><B>To:</B> ace-users@cs.wustl.edu<BR><B>Subject:</B> [ace-users] PRF: 
  Premature reactor termination on seteuid<BR><BR></FONT></DIV>
  <DIV class=Section1>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp; ACE VERSION: 5.6.1<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp; HOST MACHINE and OPERATING SYSTEM: Xen 
  VM of Linux/i386 v2.6.18-5-xen-vserver-686<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp; COMPILER NAME AND VERSION (AND 
  PATCHLEVEL): gcc version 4.1.2 20061115 (prerelease) (Debian 
  4.1.1-21)<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp; THE $ACE_ROOT/ace/config.h FILE [if you 
  use a link to a platform-<o:p></o:p></P>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp; specific file, simply state which 
  one]:<o:p></o:p></P>
  <P class=MsoNormal>#define 
  ACE_AS_STATIC_LIBS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  1<o:p></o:p></P>
  <P class=MsoNormal>#define 
  TAO_AS_STATIC_LIBS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  1<o:p></o:p></P>
  <P class=MsoNormal>#define 
  ACE_HAS_STANDARD_CPP_LIBRARY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  1<o:p></o:p></P>
  <P class=MsoNormal>#define 
  ACE_HAS_IPV6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  1<o:p></o:p></P>
  <P class=MsoNormal>#define 
  ACE_USES_IPV4_IPV6_MIGRATION&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  1<o:p></o:p></P>
  <P class=MsoNormal>#include "ace/config-linux.h"<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp; THE 
  $ACE_ROOT/include/makeinclude/platform_macros.GNU FILE [if you<o:p></o:p></P>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp; use a link to a platform-specific file, 
  simply state which one<o:p></o:p></P>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp; (unless this isn't used in this case, 
  e.g., with Microsoft Visual<o:p></o:p></P>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp; C++)]:<o:p></o:p></P>
  <P class=MsoNormal>ACE_COMPONENTS=FOR_TAO<o:p></o:p></P>
  <P class=MsoNormal>exceptions&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 
  1<o:p></o:p></P>
  <P 
  class=MsoNormal>debug&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  = 0<o:p></o:p></P>
  <P 
  class=MsoNormal>optimize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  = 1<o:p></o:p></P>
  <P class=MsoNormal>static_libs_only&nbsp; = 1<o:p></o:p></P>
  <P class=MsoNormal>xt_reactor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 
  0<o:p></o:p></P>
  <P class=MsoNormal>fl_reactor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 
  0<o:p></o:p></P>
  <P 
  class=MsoNormal>ssl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  = 1<o:p></o:p></P>
  <P 
  class=MsoNormal>ipv6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  = 1<o:p></o:p></P>
  <P 
  class=MsoNormal>zlib&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  = 1<o:p></o:p></P>
  <P 
  class=MsoNormal>LDFLAGS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  += -L$(ACE_ROOT)/ace/$(TARGET_PLATFORM)<o:p></o:p></P>
  <P 
  class=MsoNormal>VDIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  = .obj/$(TARGET_PLATFORM)/<o:p></o:p></P>
  <P 
  class=MsoNormal>INSLIB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 
  $(ACE_ROOT)/ace/$(TARGET_PLATFORM)<o:p></o:p></P>
  <P class=MsoNormal>include 
  $(ACE_ROOT)/include/makeinclude/platform_linux.GNU<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp; CONTENTS OF 
  $ACE_ROOT/bin/MakeProjectCreator/config/default.features<o:p></o:p></P>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp; (used by MPC when you generate your own 
  makefiles):<o:p></o:p></P>
  <P 
  class=MsoNormal>ssl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  = 1<o:p></o:p></P>
  <P class=MsoNormal>ipv6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  = 1<o:p></o:p></P>
  <P class=MsoNormal>zlib&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  = 1<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp; AREA/CLASS/EXAMPLE AFFECTED: 
  ACE_Reactor<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp; DOES THE PROBLEM AFFECT:<o:p></o:p></P>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; COMPILATION? 
  No<o:p></o:p></P>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LINKING? 
  No<o:p></o:p></P>
  <P 
  class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  On Unix systems, did you run make realclean first?<o:p></o:p></P>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXECUTION? 
  Yes<o:p></o:p></P>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OTHER (please 
  specify)? n/a<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp; SYNOPSIS:<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>Performing a seteuid in a thread causes reactors running in 
  other threads to terminate unexpectedly.<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp; DESCRIPTION:<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>If you have a reactor running in one thread, calling 
  seteuid in a different thread causes the reactor to terminate its event loop 
  prematurely, returning -1.&nbsp; Examining errno immediately after the reactor 
  indicates EINTR (Interrupted system call).<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp; REPEAT BY:<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>#include &lt;ace/Task.h&gt;<o:p></o:p></P>
  <P class=MsoNormal>#include &lt;ace/Reactor.h&gt;<o:p></o:p></P>
  <P class=MsoNormal>#include &lt;iostream&gt;<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>using namespace std;<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>class AClass : public ACE_Task&lt;ACE_MT_SYNCH&gt; 
  {<o:p></o:p></P>
  <P class=MsoNormal>public:<o:p></o:p></P>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int svc() 
  {<o:p></o:p></P>
  <P 
  class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  cout &lt;&lt; "Beginning task" &lt;&lt; endl; ACE_OS::sleep(5);<o:p></o:p></P>
  <P 
  class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  cout &lt;&lt; "Changing UIDs" &lt;&lt; endl;<o:p></o:p></P>
  <P 
  class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  ACE_OS::seteuid(1025); ACE_OS::sleep(5);<o:p></o:p></P>
  <P 
  class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  cout &lt;&lt; "Returning UIDs" &lt;&lt; endl;<o:p></o:p></P>
  <P 
  class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  ACE_OS::seteuid(0); ACE_OS::sleep(5);<o:p></o:p></P>
  <P 
  class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  cout &lt;&lt; "Ending task" &lt;&lt; endl;<o:p></o:p></P>
  <P 
  class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  ACE_Reactor::instance()-&gt;end_reactor_event_loop();<o:p></o:p></P>
  <P 
  class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  return 0;<o:p></o:p></P>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></P>
  <P class=MsoNormal>};<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>int main() {<o:p></o:p></P>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout 
  &lt;&lt;&nbsp; "Begin" &lt;&lt; endl;<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AClass 
  ac;<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  ac.activate();<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; 
  "Reactor: " &lt;&lt;<o:p></o:p></P>
  <P 
  class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  ACE_Reactor::instance()-&gt;run_reactor_event_loop() &lt;&lt; 
  endl;<o:p></o:p></P>
  <P class=MsoNormal>}<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>When run (of course, as root so that the seteuid call 
  doesn&#8217;t outright fail), outputs:<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>Begin<o:p></o:p></P>
  <P class=MsoNormal>Beginning task<o:p></o:p></P>
  <P class=MsoNormal>Changing UIDs<o:p></o:p></P>
  <P class=MsoNormal>Reactor: -1<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>&nbsp;&nbsp;&nbsp; SAMPLE FIX/WORKAROUND:<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>I have experimented with passing a reactor event hook to 
  the reactor:<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>int reh(ACE_Reactor *) {<o:p></o:p></P>
  <P class=MsoNormal>&nbsp; if (errno == 4) return 1;<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>&nbsp; return 0;<o:p></o:p></P>
  <P class=MsoNormal>}<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>And this seems to allow the reactor to continue to 
  run:<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>Begin<o:p></o:p></P>
  <P class=MsoNormal>Beginning task<o:p></o:p></P>
  <P class=MsoNormal>Changing UIDs<o:p></o:p></P>
  <P class=MsoNormal>Returning UIDs<o:p></o:p></P>
  <P class=MsoNormal>Ending task<o:p></o:p></P>
  <P class=MsoNormal>Reactor: 0<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal>However, this would require one to use an event hook, and 
  exploits a different bug in ACE (see my previous PRF).<o:p></o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal><SPAN 
  style="FONT-SIZE: 10.5pt; FONT-FAMILY: Consolas">Regards,<o:p></o:p></SPAN></P>
  <P class=MsoNormal><SPAN 
  style="FONT-SIZE: 10.5pt; FONT-FAMILY: Consolas">&nbsp;<o:p></o:p></SPAN></P>
  <P class=MsoNormal><SPAN 
  style="FONT-SIZE: 10.5pt; FONT-FAMILY: Consolas">Andre 
  Kostur<o:p></o:p></SPAN></P>
  <P class=MsoNormal><SPAN 
  style="FONT-SIZE: 10.5pt; FONT-FAMILY: Consolas">Incognito Software 
  Inc.<o:p></o:p></SPAN></P>
  <P class=MsoNormal><SPAN 
  style="FONT-SIZE: 10.5pt; FONT-FAMILY: Consolas">Senior Software Design 
  Engineer<o:p></o:p></SPAN></P>
  <P class=MsoNormal><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: Consolas">T: 
  +1(604)678-2864<o:p></o:p></SPAN></P>
  <P class=MsoNormal><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: Consolas">F: 
  +1(604)688-4339<o:p></o:p></SPAN></P>
  <P class=MsoNormal><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: Consolas">E: 
  <A 
  href="mailto:akostur@incognito.com">akostur@incognito.com</A><o:p></o:p></SPAN></P>
  <P class=MsoNormal><SPAN 
  style="FONT-SIZE: 10.5pt; FONT-FAMILY: Consolas">&nbsp;<o:p></o:p></SPAN></P>
  <P class=MsoNormal><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: Consolas"><A 
  href="http://www.incognito.com">www.incognito.com</A><o:p></o:p></SPAN></P>
  <P class=MsoNormal><o:p>&nbsp;</o:p></P></DIV></BLOCKQUOTE></BODY></HTML>