<p dir="ltr"><br>
Le 1 sept. 2014 00:04, "Marko Rauhamaa" <<a href="mailto:marko@pacujo.net">marko@pacujo.net</a>> a écrit :<br>
><br>
> Victor Stinner <<a href="mailto:victor.stinner@gmail.com">victor.stinner@gmail.com</a>>:<br>
><br>
> > But I don't get you point. How does this PEP make the situation worse?<br>
><br>
> Did I say it would? I just wanted to make sure the system call<br>
> resumption doesn't become mandatory.</p>
<p dir="ltr">The syscall is only retried on EINTR if the signal handler didn't raise an exception. So it is not always retried:</p>
<p dir="ltr">"Proposition</p>
<p dir="ltr">If a system call fails with ``EINTR``, Python must call signalhandlers: call ``PyErr_CheckSignals()``. If a signal handler raisesan exception, the Python function fails with the exception.Otherwise, the system call is retried.  If the system call takes atimeout parameter, the timeout is recomputed."</p>

<p dir="ltr">> Haven't thought through what the exception raising technique would<br>
> entail. It might be perfectly ok apart from being a change to the signal<br>
> handler API.</p>
<p dir="ltr">I don't think that it is safe to expect an InterruptedError if the signal handler doesn't raise an exception. Many Python module already retry the syscall on EINTR.</p>
<p dir="ltr">So I'm not sure that the PEP is really a major change. It's just to make Python more homogeneous, always have the same reliable and portable behaviour.</p>
<p dir="ltr">Victor</p>