JuliaPy / JuliaPy/PythonCall.jl

Ctrl-C interrupts not working inside python execution

Offen
#527 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
bug
Vorherrschende Sprache
Julia
Sterne
1.1k
Forks
86
Ø Merge
1 T. 22 Std.
Gemergte PRs (30 T.)
3

Beschreibung

**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.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.