[issue46115] Interrupting subprocess.popen in recursive calls by KeyboardInterrupt causes Fatal Python error.

2022-01-17 Thread Irit Katriel


Change by Irit Katriel :


--
versions:  -Python 3.6, Python 3.7, Python 3.8

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue46115] Interrupting subprocess.popen in recursive calls by KeyboardInterrupt causes Fatal Python error.

2021-12-17 Thread Xinmeng Xia


New submission from Xinmeng Xia :

Popen works when stdio fds are available. However, when interrupting popen in a 
recursive function call. The Python interpreter reports a Fatal Python error.

test.py

import subprocess
import os
import sys


def test_small_errpipe_write_fd():
new_stdout = os.dup(1)
try:
os.close(1)
subprocess.Popen([sys.executable, '-c', 
"print('AssertionError:0:CLOEXEC failure.')"]).wait()
finally:
os.dup2(new_stdout, 0)
os.dup2(new_stdout, 1)
test_small_errpipe_write_fd()

test_small_errpipe_write_fd()
===

Reported message:
-
xxm@xxm:~$ 'cpython-main/python' '/home/xxm/Desktop/test/test.py' 
^CFatal Python error: init_import_site: Failed to import the site module
Python runtime state: initialized
Traceback (most recent call last):
  File "/home/xxm/Desktop/compilers/cpython-main/Lib/site.py", line 73, in 

import os
^
  File "/home/xxm/Desktop/compilers/cpython-main/Lib/os.py", line 29, in 

from _collections_abc import _check_methods
^^^
  File "/home/xxm/Desktop/compilers/cpython-main/Lib/_collections_abc.py", line 
1015, in 
class Sequence(Reversible, Collection):
^^^
  File "/home/xxm/Desktop/compilers/cpython-main/Lib/abc.py", line 106, in 
__new__
cls = super().__new__(mcls, name, bases, namespace, **kwargs)
  ^^^
KeyboardInterrupt
---

Reproduce step:
1. run test.py in the console
2. use "Ctrl C" to interrupt the program

If typing a "Ctrl C", the program does not stop and no error is reported. Just 
type "Ctrl C" constantly. Sometimes, it need 5 or 6 "Ctrl C" to reproduce this 
bug. 



verson of Python: Python 3.11.0a2+ (main, Nov 26 2021, 18:38:48) [GCC 7.5.0] on 
linux (it also crashes Python 3.6.15, 3.7.12,3.8.12)

--
components: Interpreter Core
messages: 408772
nosy: xxm
priority: normal
severity: normal
status: open
title: Interrupting subprocess.popen in recursive calls by KeyboardInterrupt 
causes Fatal Python error.
type: crash
versions: Python 3.10, Python 3.11, Python 3.6, Python 3.7, Python 3.8, Python 
3.9

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com