pythoncom: STA python COM server randomly does not receive event from other objects : deadlock

Marc ENGEL marc.engel at recif.com
Thu Jul 31 11:49:03 CEST 2003


It's me again.

I found the reason and wanted to share it with you.

It is a Windows 2000 bug corrected with service pack 4.

http://support.microsoft.com/default.aspx?scid=kb;en-us;321788

Indeed, my python COM object and its python client redirect stdout to
my own Trace Manager.

Hope it may help someone else.

Marc

marc.engel at recif.com (Marc ENGEL) wrote in message news:<6411841c.0307300559.74557d9a at posting.google.com>...
> I'd like to add that just setting the Python COM object to Inproc
> instead of Local server makes the all thing work properly.
> But I need a Local server...
> 
> It works without modifying a line of code!
> 
> Marc
> 
> marc.engel at recif.com (Marc ENGEL) wrote in message news:<6411841c.0307300119.46bc0159 at posting.google.com>...
> > Hi all,
> > 
> > I coded a python COM object that runs in a pythonw local server as a
> > STA.
> > 
> > This object creates and advises a VC++ COM object to receive its
> > event. Those events are sent by worker threads.
> > 
> > The VC++ object is free threaded. As a consequence call between my STA
> > python object and apartment are marshalled through proxy.
> > 
> > The python COM object regularly calls a blocking method on the VC++
> > object to synchronize. But, as it is a cross apartment call, during
> > the call it can gets the event handler called thanks to the message
> > pump operated by COM.
> > 
> > But sometimes events are no received and it seems that I enter a
> > deadlock.
> > When I attach to the VC+ object, I can see that the thread that made
> > the Fire_XX is still waiting for the call to end.
> > 
> > Does somedy know the reason?
> > 
> > Does the COM message pump may be different from the pythoncom message
> > pump located in localserver.py : pythoncom.PumpMessages ?
> > 
> > Thanks in advance for any hint, because this is a very blocking issue
> > for my project.
> > 
> > Marc




More information about the Python-list mailing list