Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

SymPy.jl not threadsafe?

Abierto
#431 6 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
30/100
Tipo de issue
Error
Claridad
Necesita aclaración
Estado de actividad
Estancado
Stack tecnológico
julia, python
Área
api, backend

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

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de JuliaPy/SymPy.jl

Todos los issues de JuliaPy/SymPy.jl

Issues similares

Más issues de Julia

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.