SymPy.jl not threadsafe?
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 30/100
Línea de trabajo
Reproduce el MWE proporcionado del REPL de Julia usando Threads.@threads e inspecciona el límite entre SymPy.jl y PyCall señalado por el stack trace. Determina qué operaciones con hilos son compatibles y haz que el resultado se pueda verificar mediante una prueba de regresión o un comportamiento documentado explícitamente.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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?
- Lenguaje dominante
- Julia
- Estrellas
- 282
- Forks
- 59
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de JuliaPy/SymPy.jl
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 45/100
-
Not updated in registryAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
Todos los issues de JuliaPy/SymPy.jl
Issues similares
-
documentation
Dificultad 2/5 Medio día Aptitud para principiantes 65/100
Los mantenedores suelen responder en 6 días
-
broken links in docsAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
JuliaPhysics/BeamletOptics.jl#127 ·
Los mantenedores suelen responder en 1 día
-
Chains resumed from `initial_state` take `num_warmup + 1` warm-up stepsPosiblemente ocupada @thevolatilebit la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 80/100
TuringLang/AbstractMCMC.jl#220 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día