SymPy.jl not threadsafe?
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 30/100
Direzione di ricerca
Riprodurre l’MWE fornito del REPL Julia usando Threads.@threads e ispezionare il confine tra SymPy.jl e PyCall implicato dallo stack trace. Determinare quali operazioni con i thread sono supportate e rendere il risultato verificabile tramite un test di regressione o un comportamento documentato esplicitamente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
While working with polynomials in SymPy.jl I encountered segfaults when using Julia threads. MWE:
julia> using SymPy
julia> @syms a
(a,)
julia> p = sympy.Poly(a^2 + 3*a -2, a)
Poly(a**2 + 3*a - 2, a, domain='ZZ')
julia> for i in 0:2; @show p.coeff_monomial(a^i); end
p.coeff_monomial(a ^ i) = -2
p.coeff_monomial(a ^ i) = 3
p.coeff_monomial(a ^ i) = 1
julia> Threads.@threads for i in 0:2; @show p.coeff_monomial(a^i); end
signal (11): Segmentation fault
in expression starting at REPL[12]:1
signal (11): Segmentation fault
in expression starting at REPL[12]:1
PyObject_GC_Del at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyFunction_Vectorcall at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyObject_Malloc at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyObject_GC_Malloc at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
call_function at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyObject_GC_New at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyTraceBack_FromFrame at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
PyTraceBack_Here at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyFunction_Vectorcall at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyObject_FastCallDict at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyObject_Call_Prepend at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyFunction_Vectorcall at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
call_function at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
slot_tp_init at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
function_code_fastcall at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
type_call.lto_priv.242 at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyObject_MakeTpCall at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
call_function at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
call_function at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyFunction_Vectorcall at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
function_code_fastcall at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyObject_FastCall_Prepend at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
call_function at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyFunction_Vectorcall at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
slot_tp_richcompare at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
PyObject_RichCompare at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
PyObject_RichCompareBool at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
call_function at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyFunction_Vectorcall at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyObject_FastCallDict at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyObject_Call_Prepend at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
tuplerichcompare.lto_priv.211 at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
PyObject_RichCompare at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
slot_tp_init at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
function_code_fastcall at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
type_call.lto_priv.242 at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyObject_MakeTpCall at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
method_vectorcall at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
call_function at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
call_function at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyFunction_Vectorcall at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
function_code_fastcall at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
call_function at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyFunction_Vectorcall at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyObject_FastCallDict at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
method_vectorcall at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyObject_Call_Prepend at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
PyVectorcall_Call at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
macro expansion at /home/goran/.julia/packages/PyCall/BD546/src/exception.jl:95 [inlined]
#107 at /home/goran/.julia/packages/PyCall/BD546/src/pyfncall.jl:43 [inlined]
disable_sigint at ./c.jl:458 [inlined]
__pycall! at /home/goran/.julia/packages/PyCall/BD546/src/pyfncall.jl:42 [inlined]
_pycall! at /home/goran/.julia/packages/PyCall/BD546/src/pyfncall.jl:29
_pycall! at /home/goran/.julia/packages/PyCall/BD546/src/pyfncall.jl:11
unknown function (ip: 0x7f8fd7194263)
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2237 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2419
#_#114 at /home/goran/.julia/packages/PyCall/BD546/src/pyfncall.jl:86
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2237 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2419
slot_tp_init at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
jl_apply at /buildworker/worker/package_linux64/build/src/julia.h:1703 [inlined]
do_apply at /buildworker/worker/package_linux64/build/src/builtins.c:670
PyObject at /home/goran/.julia/packages/PyCall/BD546/src/pyfncall.jl:86
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2237 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2419
macro expansion at ./show.jl:955 [inlined]
macro expansion at ./REPL[12]:1 [inlined]
#21#threadsfor_fun at ./threadingconstructs.jl:81
#21#threadsfor_fun at ./threadingconstructs.jl:48
unknown function (ip: 0x7f8fd719616c)
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2237 [inlined]
type_call.lto_priv.242 at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2419
_PyObject_MakeTpCall at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
jl_apply at /buildworker/worker/package_linux64/build/src/julia.h:1703 [inlined]
call_function at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
start_task at /buildworker/worker/package_linux64/build/src/task.c:839
_PyEval_EvalFrameDefault at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
_PyFunction_Vectorcall at /home/goran/.julia/conda/3/lib/libpython3.8.so.1.0 (unknown line)
unknown function (ip: (nil))
Allocations: 9128275 (Pool: 9125487; Big: 2788); GC: 11
Segmentation fault
Is this only problematic with some functions or is SymPy.jl in general not threadsafe?
- Lingua principale
- Julia
- Stelle
- 282
- Fork
- 59
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di JuliaPy/SymPy.jl
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 45/100
-
Not updated in registryAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 35/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 30/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
Tutte le issue di JuliaPy/SymPy.jl
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
oxfordcontrol/COSMO.jl#211 ·
-
documentation
Difficoltà 2/5 Mezza giornata Idoneità per principianti 65/100
I maintainer di solito rispondono entro 6 giorni
-
Out-of-place JLArray/GPU problem with VectorContinuousCallback scalar-indexes (callback cache built with CPU zeros)Forse già presa @ChrisRackauckas-Claude l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
SciML/OrdinaryDiffEq.jl#4813 ·
I maintainer di solito rispondono entro 1 giorno
-
ARKODE: callbacks that modify `u` throw MethodError on reinitForse già presa @devmotion l’ha presa 1 giorno fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 79/100
SciML/Sundials.jl#575 ·
-
broken links in docsAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno