Title: Interrupts are lost during readline PyOS_InputHook processing
Type: enhancement Stage: patch review
Components: Extension Modules Versions: Python 3.2, Python 2.7
Status: closed Resolution: out of date
Dependencies: Superseder:
Assigned To: Nosy List: Araneidae,, ajaksu2, haypo
Priority: normal Keywords: patch

Created on 2008-06-23 16:32 by Araneidae, last changed 2015-01-14 02:13 by This issue is now closed.

File name Uploaded Description Edit
input-hook.patch Araneidae, 2008-06-23 16:32 Patch to implement interrupt handling input hook
Messages (7)
msg68638 - (view) Author: Michael Abbott (Araneidae) Date: 2008-06-23 16:32
The (undocumented!) API for PyOS_InputHook has two defects which are
addressed in the attached patch (at least when using the readline
module): firstly the called hook currently has to guess that input will
come on descriptor 0; secondly, any Ctrl-C interrupts encountered during
the processing of the input hook are lost.

This loss of interrupts can be rather annoying.  The attached patch
addresses these problems by redefining the API to PyOS_InputHook as 

    int PyOS_InputHook(int file_in);

where file_in is the descriptor to monitor (PyOS_InputHook need not
return until file_in is ready to read), and the return value is non-zero
if and only if processing was interrupted.

Testing for interruption is implemented in the HAVE_RL_CALLBACK and
HAVE_SELECT branch of Modules/readline.c; other uses retain their
original functionality (I believe!).

The attached patch was prepared against , current at the time of
msg87719 - (view) Author: Daniel Diniz (ajaksu2) Date: 2009-05-13 22:32
How does this interact with the fix from issue 706406?
msg116638 - (view) Author: Mark Lawrence (BreamoreBoy) * Date: 2010-09-16 23:11
I'm unsure as to whether this is a feature request or a behaviour problem, anyone?  Regardless could a core dev take a look at the patch which involves changes to the API for PyOS_InputHook, see msg68638.
msg233530 - (view) Author: STINNER Victor (haypo) * (Python committer) Date: 2015-01-06 11:59
I don't understand how to reproduce the issue, there is no unit test nor a description how to reproduce the issue.

I'm not aware of a bug where CTRL+c is simply ignored. CTRL+c is now well handled in Python 2.7, on Linux and Windows at least.

Since the bug is now 7 years old, I just close it as out of date, sorry.
msg233977 - (view) Author: Michiel de Hoon ( Date: 2015-01-14 00:38
As it happens, we just ran into the same bug.
To reproduce this issue, run

>>> from Tkinter import *
>>> Tk()

Then Ctrl-C will not generate a KeyboardInterrupt.

At first glance, the solution suggested by the original poster seems good. Can this issue by reopened? I'd be happy to take over this issue report and check the patch in more detail.
msg233981 - (view) Author: STINNER Victor (haypo) * (Python committer) Date: 2015-01-14 00:53
This issue is now closed. Please open a new issue. You should mention
your OS and the Python version at least.
msg233998 - (view) Author: Michiel de Hoon ( Date: 2015-01-14 02:13
I have opened a new issue 23237 for this bug; please see
Date User Action Args
2015-01-14 + msg233998
2015-01-14 00:53:58hayposetmessages: + msg233981
2015-01-14 +
messages: + msg233977
2015-01-06 11:59:27hayposetstatus: open -> closed

nosy: + haypo
messages: + msg233530

resolution: out of date
2014-02-03 19:44:06BreamoreBoysetnosy: - BreamoreBoy
2010-09-16 23:11:33BreamoreBoysetnosy: + BreamoreBoy

messages: + msg116638
stage: test needed -> patch review
2009-05-13 22:32:18ajaksu2setpriority: normal

components: + Extension Modules, - None
versions: + Python 2.7, Python 3.2, - Python 2.6
nosy: + ajaksu2

messages: + msg87719
stage: test needed
2008-06-23 16:32:22Araneidaecreate