JuliaPy / JuliaPy/PythonCall.jl

Ctrl-C interrupts not working inside python execution

Ouverte
#527 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
bug
Langage dominant
Julia
Étoiles
1.1k
Forks
86
Merge moyen
1 j 22 h
PR mergées (30 j)
3

Description

**Affects:** PythonCall / JuliaCall

**Describe the bug**
Interrupting during python execution is not working properly (not even on one thread).
Keeping ctrl+c pressed interrupts the execution, but the next python call segfaults julia.
This applies to both, PythonCall and PyCall.

```
julia> using PyCall

julia> py"""
import time
for i in range(100):
time.sleep(1)"""
^C^C^C^C^C^C^C^C^C^C^CWARNING: Force throwing a SIGINT
^C^CERROR: InterruptException:
Stacktrace:
[1] macro expansion
@ ~/.julia/packages/PyCall/1gn3u/src/exception.jl:108 [inlined]
[2] #117
@ ~/.julia/packages/PyCall/1gn3u/src/pyeval.jl:38 [inlined]
[3] disable_sigint
@ ./c.jl:473 [inlined]
[4] pyeval_(s::String, globals::PyDict{String, PyObject, true}, locals::PyDict{String, PyObject, true}, input_type::Int64, fname::String)
@ PyCall ~/.julia/packages/PyCall/1gn3u/src/pyeval.jl:37
[5] macro expansion
@ ~/.julia/packages/PyCall/1gn3u/src/pyeval.jl:230 [inlined]
[6] top-level scope
@ REPL[2]:1

julia> py"""
import time
for i in range(100):
time.sleep(1)"""

[473012] signal (11.1): Segmentation fault
in expression starting at REPL[2]:1
_PyInterpreterState_GET at /usr/local/src/conda/python-3.10.14/Include/internal/pycore_pystate.h:117 [inlined]
PyUnicode_DecodeFSDefaultAndSize at /usr/local/src/conda/python-3.10.14/Objects/unicodeobject.c:4095
Py_CompileStringExFlags at /usr/local/src/conda/python-3.10.14/Python/pythonrun.c:1390
macro expansion at /home/htc/bzfsikor/.julia/packages/PyCall/1gn3u/src/exception.jl:108 [inlined]
pyeval_ at /home/htc/bzfsikor/.julia/packages/PyCall/1gn3u/src/pyeval.jl:34
```

```
julia> using PythonCall

julia> @pyexec """
import time
for i in range(100):
time.sleep(1)"""

^C^C^C^C^CWARNING: Force throwing a SIGINT
^CERROR: InterruptException:
Stacktrace:
[1] PyObject_CallObject
@ ~/.julia/packages/PythonCall/S5MOg/src/C/pointers.jl:297 [inlined]
[2] macro expansion
@ ~/.julia/packages/PythonCall/S5MOg/src/Core/Py.jl:132 [inlined]
[3] pycallargs(f::Py, args::Py)
@ PythonCall.Core ~/.julia/packages/PythonCall/S5MOg/src/Core/builtins.jl:212
[4] pycall(::Py, ::Py, ::Vararg{Py}; kwargs::@Kwargs{})
@ PythonCall.Core ~/.julia/packages/PythonCall/S5MOg/src/Core/builtins.jl:230
[5] pycall
@ ~/.julia/packages/PythonCall/S5MOg/src/Core/builtins.jl:220 [inlined]
[6] Py
@ ~/.julia/packages/PythonCall/S5MOg/src/Core/Py.jl:339 [inlined]
[7] pyexec(::Type{Nothing}, code::Py, globals::Module, locals::Tuple{})
@ PythonCall.Core ~/.julia/packages/PythonCall/S5MOg/src/Core/builtins.jl:1212
[8] top-level scope
@ ~/.julia/packages/PythonCall/S5MOg/src/Core/builtins.jl:1260

julia> @pyexec """
import time
for i in range(100):
time.sleep(1)"""

[472692] signal (11.1): Segmentation fault
in expression starting at REPL[2]:1
_PyInterpreterState_GET at /usr/local/src/conda/python-3.12.4/Include/internal/pycore_pystate.h:133 [inlined]
maybe_freelist_pop at /usr/local/src/conda/python-3.12.4/Objects/tupleobject.c:1133 [inlined]
tuple_alloc at /usr/local/src/conda/python-3.12.4/Objects/tupleobject.c:43 [inlined]
PyTuple_New at /usr/local/src/conda/python-3.12.4/Objects/tupleobject.c:74
PyTuple_New at /home/htc/bzfsikor/.julia/packages/PythonCall/S5MOg/src/C/pointers.jl:297 [inlined]
pynulltuple at /home/htc/bzfsikor/.julia/packages/PythonCall/S5MOg/src/Core/builtins.jl:824 [inlined]
```

**Your system**
Please provide detailed information about your system:
- Linux, Julia 1.10.4, both PyCall and PythonCall on newest versions.

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.