Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

tight_layout gives segfault when MKL is used

Aberta
#544 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
35/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Estagnada
Stack de tecnologia
python

Direção de pesquisa

Reproduza os dois exemplos de ordem de importação com Julia 1.7, MKL 0.4.2, PyPlot 2.10.0 e PyCall 1.92.5. Comece em src/PyPlot.jl, nas proximidades de tight_layout (linhas 174-177), e siga a chamada de PyCall mostrada no trace. A tarefa estará concluída quando tight_layout não causar mais um segfault quando MKL for carregado antes de PyPlot, e o comportamento relatado continuar coberto por um teste de regressão.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

This gives a segfault:

using MKL
using PyPlot
fig = PyPlot.figure()
plot(rand(10), rand(10))
tight_layout()
signal (11): Segmentation fault
in expression starting at REPL[5]:1
mkl_blas_avx2_xdcopy at /home/jmlim/.julia/artifacts/72d4adc3ef9236a92f4fefeb0291cb6e8aaae2d7/lib/libmkl_avx2.so.1 (unknown line)
mkl_blas_dcopy at /home/jmlim/.julia/artifacts/72d4adc3ef9236a92f4fefeb0291cb6e8aaae2d7/lib/libmkl_intel_thread.so.1 (unknown line)
dcopy_ at /home/jmlim/.julia/artifacts/72d4adc3ef9236a92f4fefeb0291cb6e8aaae2d7/lib/libmkl_intel_ilp64.so.1 (unknown line)
DOUBLE_inv at /home/jmlim/appl/miniconda3/lib/python3.8/site-packages/numpy/linalg/_umath_linalg.cpython-38-x86_64-linux-gnu.so (unknown line)
PyUFunc_GenericFunction_int at /home/jmlim/appl/miniconda3/lib/python3.8/site-packages/numpy/core/_multiarray_umath.cpython-38-x86_64-linux-gnu.so (unknown line)
ufunc_generic_call at /home/jmlim/appl/miniconda3/lib/python3.8/site-packages/numpy/core/_multiarray_umath.cpython-38-x86_64-linux-gnu.so (unknown line)
_PyObject_MakeTpCall at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
call_function at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
function_code_fastcall at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
PyVectorcall_Call at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
array_implement_array_function at /home/jmlim/appl/miniconda3/lib/python3.8/site-packages/numpy/core/_multiarray_umath.cpython-38-x86_64-linux-gnu.so (unknown line)
PyCFunction_Call at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
_PyObject_MakeTpCall at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
call_function at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
_PyFunction_Vectorcall at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
call_function at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
function_code_fastcall at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
call_function at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
_PyFunction_Vectorcall at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
call_function at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
_PyFunction_Vectorcall at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
call_function at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
_PyFunction_Vectorcall at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
PyVectorcall_Call at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
_PyFunction_Vectorcall at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
method_vectorcall at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
call_function at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
function_code_fastcall at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
PyVectorcall_Call at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
_PyFunction_Vectorcall at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
PyVectorcall_Call at /home/jmlim/appl/miniconda3/lib/libpython3.8.so.1.0 (unknown line)
macro expansion at /home/jmlim/.julia/packages/PyCall/3fwVL/src/exception.jl:95 [inlined]
#107 at /home/jmlim/.julia/packages/PyCall/3fwVL/src/pyfncall.jl:43 [inlined]
disable_sigint at ./c.jl:458 [inlined]
__pycall! at /home/jmlim/.julia/packages/PyCall/3fwVL/src/pyfncall.jl:42 [inlined]
_pycall! at /home/jmlim/.julia/packages/PyCall/3fwVL/src/pyfncall.jl:29
_pycall! at /home/jmlim/.julia/packages/PyCall/3fwVL/src/pyfncall.jl:11 [inlined]
#pycall#113 at /home/jmlim/.julia/packages/PyCall/3fwVL/src/pyfncall.jl:83 [inlined]
pycall at /home/jmlim/.julia/packages/PyCall/3fwVL/src/pyfncall.jl:83 [inlined]
#tight_layout#125 at /home/jmlim/.julia/packages/PyPlot/XaELc/src/PyPlot.jl:177
tight_layout at /home/jmlim/.julia/packages/PyPlot/XaELc/src/PyPlot.jl:174
unknown function (ip: 0x2b0f574bbebf)
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2247 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2429
jl_apply at /buildworker/worker/package_linux64/build/src/julia.h:1788 [inlined]
do_call at /buildworker/worker/package_linux64/build/src/interpreter.c:126
eval_value at /buildworker/worker/package_linux64/build/src/interpreter.c:215
eval_stmt_value at /buildworker/worker/package_linux64/build/src/interpreter.c:166 [inlined]
eval_body at /buildworker/worker/package_linux64/build/src/interpreter.c:587
jl_interpret_toplevel_thunk at /buildworker/worker/package_linux64/build/src/interpreter.c:731
jl_toplevel_eval_flex at /buildworker/worker/package_linux64/build/src/toplevel.c:885
jl_toplevel_eval_flex at /buildworker/worker/package_linux64/build/src/toplevel.c:830
jl_toplevel_eval_in at /buildworker/worker/package_linux64/build/src/toplevel.c:944
eval at ./boot.jl:373 [inlined]
eval_user_input at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.7/REPL/src/REPL.jl:150
repl_backend_loop at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.7/REPL/src/REPL.jl:244
start_repl_backend at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.7/REPL/src/REPL.jl:229
#run_repl#47 at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.7/REPL/src/REPL.jl:362
run_repl at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.7/REPL/src/REPL.jl:349
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2247 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2429
#930 at ./client.jl:394
jfptr_YY.930_32578.clone_1 at /home/jmlim/appl/julia-1.7.0/lib/julia/sys.so (unknown line)
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2247 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2429
jl_apply at /buildworker/worker/package_linux64/build/src/julia.h:1788 [inlined]
jl_f__call_latest at /buildworker/worker/package_linux64/build/src/builtins.c:757
#invokelatest#2 at ./essentials.jl:716 [inlined]
invokelatest at ./essentials.jl:714 [inlined]
run_main_repl at ./client.jl:379
exec_options at ./client.jl:309
_start at ./client.jl:495
jfptr__start_43127.clone_1 at /home/jmlim/appl/julia-1.7.0/lib/julia/sys.so (unknown line)
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2247 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2429
jl_apply at /buildworker/worker/package_linux64/build/src/julia.h:1788 [inlined]
true_main at /buildworker/worker/package_linux64/build/src/jlapi.c:559
jl_repl_entrypoint at /buildworker/worker/package_linux64/build/src/jlapi.c:701
main at julia (unknown line)
__libc_start_main at /lib64/libc.so.6 (unknown line)
unknown function (ip: 0x400808)
Allocations: 7008166 (Pool: 7005366; Big: 2800); GC: 8
Segmentation fault (core dumped)

But this doesn't (MKL is used after PyPlot):

using PyPlot
using MKL
fig = PyPlot.figure()
plot(rand(10), rand(10))
tight_layout()
julia> versioninfo()
Julia Version 1.7.0
Commit 3bf9d17731 (2021-11-30 12:12 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
  CPU: Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-12.0.1 (ORCJIT, haswell)
Environment:
  JULIA = /home/jmlim/appl/julia-1.7.0/bin/julia

(@v1.7) pkg> status MKL
      Status `~/.julia/environments/v1.7/Project.toml`
  [33e6dc65] MKL v0.4.2

(@v1.7) pkg> status PyPlot
      Status `~/.julia/environments/v1.7/Project.toml`
  [d330b81b] PyPlot v2.10.0

(@v1.7) pkg> status PyCall
      Status `~/.julia/environments/v1.7/Project.toml`
  [438e738f] PyCall v1.92.5
Linguagem predominante
Julia
Estrelas
489
Forks
90
Métricas de merge de PRs
Nenhum PR com merge em 30d

Preparar o ambiente

Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de JuliaPy/PyPlot.jl

Todas as issues de JuliaPy/PyPlot.jl

Issues semelhantes

Mais issues de Julia

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.