JuliaPy / JuliaPy/PyCall.jl

Do something about PYTHONFAULTHANDLER?

Aperta
#884 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Julia
Stelle
1.5k
Fork
186
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

It seems at least on Linux, setting the environment variable `PYTHONFAULTHANDLER=1` (enabling a Python-builtin package as of recent versions https://docs.python.org/3/library/faulthandler.html) causes segfaults with PyCall. The MWE I've been using is

```julia
# script.jl

using PyCall

Threads.@sync begin
Threads.@spawn GC.gc(true)
Threads.@spawn GC.gc(true)
end
```

Run `julia --threads=2 script.jl` and its fine, but run `PYTHONFAULTHANDLER=1 julia --threads=2 script.jl` and segfault. Reproduced across multiple systems. More impactful I would say, even in single-threaded mode, `PYTHONFAULTHANDLER=1` will crash the IJulia kernel any time you try to interrupt it. This is the situation I was in, I was on a cluster where the admins enabled this by default since its a really useful Python thing, and just lived without the ability to interrupt IJulia for months without knowing why, which I can attest *really sucks.*

Maybe it would make sense to unset this variable in `PyCall.__init__` and issue a warning that we're currently incompatible? I could submit a PR.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.