Skip to content

Running python REPL under another program + Ctrl-C results in an exception traceback #135329

Open
@cmaloney

Description

@cmaloney

Bug report

Bug description:

Running python REPL under another program (strace ./build/python in my case), then pressing Ctrl-C on Linux results in an infinite stream of exception tracebacks.

Tested on Python 3.13 branch and main

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/build/python/cpython/Lib/_pyrepl/readline.py", line 394, in multiline_input
    return reader.readline()
           ~~~~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/reader.py", line 742, in readline
    self.prepare()
    ~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/historical_reader.py", line 306, in prepare
    super().prepare()
    ~~~~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/reader.py", line 594, in prepare
    self.restore()
    ~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/reader.py", line 608, in restore
    self.console.restore()
    ~~~~~~~~~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/unix_console.py", line 371, in restore
    tcsetattr(self.input_fd, termios.TCSADRAIN, self.__svtermstate)
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/build/python/cpython/Lib/_pyrepl/fancy_termios.py", line 57, in tcsetattr
    termios.tcsetattr(fd, when, attrs.as_list())
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
termios.error: (5, 'Input/output error')
Traceback (most recent call last):
  File "/build/python/cpython/Lib/_pyrepl/reader.py", line 585, in prepare
    self.console.prepare()
    ~~~~~~~~~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/unix_console.py", line 339, in prepare
    tcsetattr(self.input_fd, termios.TCSADRAIN, raw)
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/build/python/cpython/Lib/_pyrepl/fancy_termios.py", line 57, in tcsetattr
    termios.tcsetattr(fd, when, attrs.as_list())
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
termios.error: (5, 'Input/output error')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/build/python/cpython/Lib/_pyrepl/readline.py", line 394, in multiline_input
    return reader.readline()
           ~~~~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/reader.py", line 742, in readline
    self.prepare()
    ~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/historical_reader.py", line 306, in prepare
    super().prepare()
    ~~~~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/reader.py", line 594, in prepare
    self.restore()
    ~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/reader.py", line 608, in restore
    self.console.restore()
    ~~~~~~~~~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/unix_console.py", line 371, in restore
    tcsetattr(self.input_fd, termios.TCSADRAIN, self.__svtermstate)
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/build/python/cpython/Lib/_pyrepl/fancy_termios.py", line 57, in tcsetattr
    termios.tcsetattr(fd, when, attrs.as_list())
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
termios.error: (5, 'Input/output error')
Traceback (most recent call last):
  File "/build/python/cpython/Lib/_pyrepl/reader.py", line 585, in prepare
    self.console.prepare()
    ~~~~~~~~~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/unix_console.py", line 339, in prepare
    tcsetattr(self.input_fd, termios.TCSADRAIN, raw)
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/build/python/cpython/Lib/_pyrepl/fancy_termios.py", line 57, in tcsetattr
    termios.tcsetattr(fd, when, attrs.as_list())
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
termios.error: (5, 'Input/output error')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/build/python/cpython/Lib/_pyrepl/readline.py", line 394, in multiline_input
    return reader.readline()
           ~~~~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/reader.py", line 742, in readline
    self.prepare()
    ~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/historical_reader.py", line 306, in prepare
    super().prepare()
    ~~~~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/reader.py", line 594, in prepare
    self.restore()
    ~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/reader.py", line 608, in restore
    self.console.restore()
    ~~~~~~~~~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/unix_console.py", line 371, in restore
    tcsetattr(self.input_fd, termios.TCSADRAIN, self.__svtermstate)
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/build/python/cpython/Lib/_pyrepl/fancy_termios.py", line 57, in tcsetattr
    termios.tcsetattr(fd, when, attrs.as_list())
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
termios.error: (5, 'Input/output error')
Traceback (most recent call last):
  File "/build/python/cpython/Lib/_pyrepl/reader.py", line 585, in prepare
    self.console.prepare()
    ~~~~~~~~~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/unix_console.py", line 339, in prepare
    tcsetattr(self.input_fd, termios.TCSADRAIN, raw)
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/build/python/cpython/Lib/_pyrepl/fancy_termios.py", line 57, in tcsetattr
    termios.tcsetattr(fd, when, attrs.as_list())
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
termios.error: (5, 'Input/output error')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/build/python/cpython/Lib/_pyrepl/readline.py", line 394, in multiline_input
    return reader.readline()
           ~~~~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/reader.py", line 742, in readline
    self.prepare()
    ~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/historical_reader.py", line 306, in prepare
    super().prepare()
    ~~~~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/reader.py", line 594, in prepare
    self.restore()
    ~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/reader.py", line 608, in restore
    self.console.restore()
    ~~~~~~~~~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/unix_console.py", line 371, in restore
    tcsetattr(self.input_fd, termios.TCSADRAIN, self.__svtermstate)
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/build/python/cpython/Lib/_pyrepl/fancy_termios.py", line 57, in tcsetattr
    termios.tcsetattr(fd, when, attrs.as_list())
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
termios.error: (5, 'Input/output error')
Traceback (most recent call last):
  File "/build/python/cpython/Lib/_pyrepl/reader.py", line 585, in prepare
    self.console.prepare()
    ~~~~~~~~~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/unix_console.py", line 339, in prepare
    tcsetattr(self.input_fd, termios.TCSADRAIN, raw)
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/build/python/cpython/Lib/_pyrepl/fancy_termios.py", line 57, in tcsetattr
    termios.tcsetattr(fd, when, attrs.as_list())
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
termios.error: (5, 'Input/output error')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/build/python/cpython/Lib/_pyrepl/readline.py", line 394, in multiline_input
    return reader.readline()
           ~~~~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/reader.py", line 742, in readline
    self.prepare()
    ~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/historical_reader.py", line 306, in prepare
    super().prepare()
    ~~~~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/reader.py", line 594, in prepare
    self.restore()
    ~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/reader.py", line 608, in restore
    self.console.restore()
    ~~~~~~~~~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/unix_console.py", line 371, in restore
    tcsetattr(self.input_fd, termios.TCSADRAIN, self.__svtermstate)
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/build/python/cpython/Lib/_pyrepl/fancy_termios.py", line 57, in tcsetattr
    termios.tcsetattr(fd, when, attrs.as_list())
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
termios.error: (5, 'Input/output error')
Traceback (most recent call last):
  File "/build/python/cpython/Lib/_pyrepl/reader.py", line 585, in prepare
    self.console.prepare()
    ~~~~~~~~~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/unix_console.py", line 339, in prepare
    tcsetattr(self.input_fd, termios.TCSADRAIN, raw)
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/build/python/cpython/Lib/_pyrepl/fancy_termios.py", line 57, in tcsetattr
    termios.tcsetattr(fd, when, attrs.as_list())
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
termios.error: (5, 'Input/output error')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/build/python/cpython/Lib/_pyrepl/readline.py", line 394, in multiline_input
    return reader.readline()
           ~~~~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/reader.py", line 742, in readline
    self.prepare()
    ~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/historical_reader.py", line 306, in prepare
    super().prepare()
    ~~~~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/reader.py", line 594, in prepare
    self.restore()
    ~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/reader.py", line 608, in restore
    self.console.restore()
    ~~~~~~~~~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/unix_console.py", line 371, in restore
    tcsetattr(self.input_fd, termios.TCSADRAIN, self.__svtermstate)
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/build/python/cpython/Lib/_pyrepl/fancy_termios.py", line 57, in tcsetattr
    termios.tcsetattr(fd, when, attrs.as_list())
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
termios.error: (5, 'Input/output error')
Traceback (most recent call last):
  File "/build/python/cpython/Lib/_pyrepl/reader.py", line 585, in prepare
    self.console.prepare()
    ~~~~~~~~~~~~~~~~~~~~^^
  File "/build/python/cpython/Lib/_pyrepl/unix_console.py", line 339, in prepare
    tcsetattr(self.input_fd, termios.TCSADRAIN, raw)
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/build/python/cpython/Lib/_pyrepl/fancy_termios.py", line 57, in tcsetattr
    termios.tcsetattr(fd, when, attrs.as_list())
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
termios.error: (5, 'Input/output error')

CPython versions tested on:

3.13

Operating systems tested on:

Linux

Metadata

Metadata

Assignees

No one assigned

    Labels

    stdlibPython modules in the Lib dirtopic-replRelated to the interactive shelltype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions