Eryk Sun <eryk...@gmail.com> added the comment:

>> subprocess._active[0]._handle.Close()
>
> Why would you do that? You should not access the private _active list, 
> nor access the private _handle attribute. I understand that it's a way 
> to trigger such bug, but is it possible to trigger this bug without 
> accessing any private attribute?

The example is just emulating a problem from someone else's code that's closing 
our handle. Typically this situation occurs because the code is holding onto a 
handle value for a kernel object (File, Section, Job, Process, Thread, Event, 
etc) that got closed. The handle value eventually gets reused, such as for our 
_handle. 

>> I wouldn't want _internal_poll to silence this error, but maybe it 
>> could be translated into a warning
>
> I disagree with that. It's very bad is suddenly the handle becomes 
> invalid for no obvious reason. It's better to get an hard error 
> (exception) in such case.

I agree, but the exception breaks Popen.__init__. It would have to be ignored 
or translated to a warning somewhere if we continues to poll a list of active 
processes every time __init__() is called. But since the latter is unnecessary 
in Windows, I suggested to just skip it.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue37380>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to