[Ace-users] Re: [ace-bugs] Changing Proactor implementation on Windows

Douglas C. Schmidt schmidt at dre.vanderbilt.edu
Thu Sep 6 09:49:07 CDT 2007


Hi Erman,

   Your solution is nice and concise.  I've added it for the x.6.1 "bug
fix only" release, which is due out in a few weeks.  Thanks very much!

Doug

> In the attachment, one of the easiest solutions exists,
> which won't effect your overall design.
> I guess you ve added attribute 'win32_proactor_' to class
> ACE_Win32_Asynch_Operation but class ACE_Proactor(there is only declaration)
> because of decoupling and abstraction purposes.
> 
> Anyway the solution requires ACE_Proactor.h, which means
> attribute 'win32_proactor_' is no longer necessary
> (if you don't have other issues while putting it).
> However, I did not remove it in the solution due to the fact that
> It affects lots of classes. Therefore, the changes I made are minimal to correct
> the code.
> 
> If you inform me about your approach to the problem?, I would appreciate it.
> 
> Best regards
> 
> Erman BALCIK
> 
> 
> 
> -----Ursprüngliche Nachricht-----
> Von: schmidt at dre.vanderbilt.edu [mailto:schmidt at dre.vanderbilt.edu] 
> Gesendet: Wednesday, September 05, 2007 4:26 PM
> An: BALCIK, Erman
> Cc: ace-bugs at cse.wustl.edu
> Betreff: Re: [ace-bugs] Changing Proactor implementation on Windows 
> 
> 
> Hi Erman,
> 
>    Thanks very much for using the PRF.
> 
> > ACE VERSION: 5.6
> > 
> > HOST MACHINE and OPERATING SYSTEM:
> > 
> > Windows as the OS, but the problem is not related with WinSOCK
> > 
> > TARGET MACHINE and OPERATING SYSTEM, if different from HOST: ---
> > 
> > COMPILER NAME AND VERSION (AND PATCHLEVEL): not relevant
> > 
> > THE $ACE_ROOT/ace/config.h FILE [if you use a link to a platform-
> > 
> > specific file, simply state which one]: ---
> > 
> > THE $ACE_ROOT/include/makeinclude/platform_macros.GNU FILE [if you
> > 
> > use a link to a platform-specific file, simply state which one
> > 
> > (unless this isn't used in this case, e.g., with Microsoft Visual
> > 
> > C++)]: ---
> > 
> > CONTENTS OF $ACE_ROOT/bin/MakeProjectCreator/config/default.features
> > 
> > (used by MPC when you generate your own makefiles): ---
> > 
> > AREA/CLASS/EXAMPLE AFFECTED:
> > 
> > [What example failed? What module failed to compile?]
> > 
> > DOES THE PROBLEM AFFECT:
> > 
> > COMPILATION? NO
> > 
> > LINKING? NO
> > 
> > EXECUTION? NO Segmentation faults
> > 
> > OTHER (please specify)?
> > 
> > The problem is somehow logical.It affects user applications
> > 
> > using asynchronous communication on Windows.
> > 
> > SYNOPSIS:
> > 
> > Changing Proactor implementation on Windows
> > 
> > DESCRIPTION:
> > 
> > In file Win32_Asynch_IO.cpp, class ACE_WIN32_Asynch_Operation
> > 
> > has an attribute called "win32_proactor_" as a ACE_Proactor implementation class,
> > 
> > which is only set in the constructor. ACE_WIN32_Asynch_Operation::open function
> > 
> > gets a pointer to a ACE_Proactor as a parameter. However, function does not use
> > 
> > this parameter or its implementation class instead of the value of "win32_proactor_"
> > 
> > already set in constructor.Although a different Proactor is provided, this function
> > 
> > calls "register_handle" function of the old "win32_proactor_".But logically,
> > 
> > the proactor instance given in "open" should be used in the communication.
> > 
> > This can work in singleton case, but can be a bug in applications using multiple Proactors.
> 
> Could you please send us patches (i.e., via "unified diff") relative to
> 5.6 to fix this?  If so, we'll integrate this into the upcoming 5.6.1
> "bug fix only" beta.
> 
> Thanks,
> 
>         Doug



More information about the Ace-users mailing list