[Ace-users] [ace-users] Problem with ACE_Priority_reactor

Johnny Willemsen jwillemsen at remedy.nl
Sat Oct 20 12:49:13 CDT 2007


Hi,

Would it be possible to extend ACE_wrappers/tests/Priority_Reactor_Test.cpp
with additional tests to reproduce this problem? That way we can make 100%
sure the patch works and also we know for sure we don't get the problem
back.

Regards,

Johnny Willemsen
Remedy IT
Postbus 101
2650 AC  Berkel en Rodenrijs
The Netherlands
www.theaceorb.nl / www.remedy.nl  

*** Integrated compile and test statistics see
http://scoreboard.theaceorb.nl ***
*** Commercial service and support for ACE/TAO/CIAO             ***
*** See http://www.theaceorb.nl/en/support.html                 ***

"Douglas C. Schmidt" <schmidt at dre.vanderbilt.edu> wrote in message
news:<mailman.2600.1192789932.5286.ace-users at mail.cse.wustl.edu>...
> 
> Hi Alex,
> 
> Thanks very much for your email.  Please make sure to send all
> questions related to TAO or ACE to the ACE mailing list or ACE+TAO
> newsgroup, rather than to me directly since I travel frequently and
> often don't have ready access to email.  See
> 
> http://www.cs.wustl.edu/~schmidt/ACE-mail.html
> 
> for more info on how to access these resources.
> 
> > I am running ACE 5.5 and currently experiencing a problem with the
ACE_Priority_Reactor. 
> 
> Although it probably won't help your current problem with
> ACE_Priority_Reactor, I recommend you upgrade to ACE+TAO+CIAO x.6.1
> (i.e., ACE 5.6.1, TAO 1.6.1, and CIAO 0.6.1), which you can download
> from
> 
> http://download.dre.vanderbilt.edu
> 
> under the heading: "Latest Beta Kit."
> 
> The DOC groups at Washington University, UC Irvine, and Vanderbilt
> University only provide "best effort" support for non-sponsors for the
> latest release, as described in
> 
>
http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/ACE/docs/ACE-bug-process.htm
l
> 
> Thus, if you need more "predictable" help for earlier versions of
> ACE+TAO, I recommend that you check out
> 
> http://www.dre.vanderbilt.edu/support.html
> 
> for a list of companies that will provide you with ACE+TAO commercial
> support.
> 
> > As I wrote before when I call
> > remove_handler the process crashes.
> >  
> > By now I can see the problems in the code.
> > There are two problems - ( I relate here to the file
Priority_Reactor.cpp)
> >  
> > In build_bucket() we have the following lines -
> > 
> >       ACE_Event_Tuple et (this->handler_rep_.find (handle),
> >                           handle);
> >       int prio = et.event_handler_->priority ();
> >  
> > Which is a problematic since the find() can return a NULL pointer, thus
priority() method can crash.
> 
> Good point - I've fixed this.  Please see
> 
> http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/ACE/ace/Priority_Reactor.h
>
http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/ACE/ace/Priority_Reactor.cpp
> 
> and let me know if this works better.
> 
> > This is not what cause my code to crash though. My problem is that in
dispatch_io_set() we first enter the handlers
> > themselves to the buckets (in  build_bucket ()) and later on in the
while loop , we call their notify_handle() method
> > without checking again their validity.
> >  
> > We call
> > 
> >           this->notify_handle (et.handle_,
> >                                mask,
> >                                ready_mask,
> >                                et.event_handler_, 
> >                                callback);
> >  
> > where the et.event_handler can be invalid by now.
> > 
> > Just to compare to the good code in the Select_Reactor - it does the
following:
> >  
> >     this->notify_handle (handle,
> >                            mask,
> >                            ready_mask,
> >                            this->handler_rep_.find (handle), // OK!
> >                            callback);
> > which is ok, since if the handler was removed the find(handle) returns
NULL and this is checked in notify_handle.
> 
> Please let me know if the fix mentioned above solves this problem.
> 
> Thanks,
> 
>         Doug
> 
> > Thanks,
> > 
> > Alex.
> >  
> > On 9/22/07, Douglas C. Schmidt <schmidt at dre.vanderbilt.edu> wrote:
> > 
> >     Hi Alex,
> >    
> >     To ensure that we have proper version/platform/compiler information,
> >     please make sure you fill out the appropriate problem report form
> >     (PRF), which is in
> >    
> >     $ACE_ROOT/PROBLEM-REPORT-FORM
> >     $TAO_ROOT/PROBLEM-REPORT-FORM
> >    
> >     or in
> >    
> >     $ACE_ROOT/BUG-REPORT-FORM
> >     $TAO_ROOT/BUG-REPORT-FORM
> >    
> >     in older versions of ACE+TAO.  Make sure to include this information
> >     when asking any questions about ACE+TAO since otherwise we have to
> >     "guess" what version/platform/compiler/options you've using, which
is
> >     very error-prone and slows down our responsiveness.  If you don't
use
> >     the PRF, therefore, it is less likely that someone from the core
> >     ACE+TAO developer team will be able to answer your question.
> >     Naturally, we encourage and appreciate other members of the ACE+TAO
> >     user community who can respond to questions that they have the
answers
> >     to.
> >    
> >     BTW, please see the ACE_ROOT/tests/Priority_Reactor_Test.cpp for
some
> >     examples of how to use the ACE_Priority_Reactor properly.
> >    
> >     Thanks,
> >    
> >            Doug
> > 
> >     >I was using the default reactor implementaion and I switched to
work
> >     >with ACE_Priority_Reactor implementation. I have 40 sockets
> >     >(ACE_Event_Handlers) managed by it.
> >     >
> >     >When I decide to close them my application crashes and in the
debugger
> >     >I see that in dispatch_io_set, the handlers I have just removed
(using
> >     >remove_handler) are bring still manipulated by the reactor.
> >     >
> >     >Is it a known bug? Did I do something wrong?
> >     >
> > 
> >     --
> >     Dr. Douglas C. Schmidt                       Professor and Associate
Chair
> >     Electrical Engineering and Computer Science  TEL: (615) 343-8197
> >     Vanderbilt University                        WEB:
www.dre.vanderbilt.edu/~schmidt
> >     Nashville, TN 37203                          NET:
d.schmidt at vanderbilt.edu
> > 
> 



More information about the Ace-users mailing list