tight_layout gives segfault when MKL is used
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 35/100
- Issue 类型
- 缺陷
- 描述清晰度
- 基本清楚
- 活跃度
- 停滞
- 技术栈
- python
调研方向
使用 Julia 1.7、MKL 0.4.2、PyPlot 2.10.0 和 PyCall 1.92.5 重现两个导入顺序示例。从 src/PyPlot.jl 中 tight_layout 附近(第 174-177 行)开始,并跟踪 trace 中显示的 PyCall 调用。当在 PyPlot 之前加载 MKL 时 tight_layout 不再发生段错误,且报告的行为仍由回归测试覆盖时,即表示完成。
由索引模型根据 Issue 内容生成。
描述
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
- 主要语言
- Julia
- 星标
- 489
- 派生
- 90
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
JuliaPy/PyPlot.jl 的其他 Issue
-
难度 3/5 1-2 天 新手友好度 45/100
-
julia PyPlot support missing data可能已有人在做 @deszoeke 于 668 天前认领。 未关闭
难度 4/5 3-5 天 新手友好度 45/100
-
难度 3/5 1-2 天 新手友好度 30/100
-
难度 3/5 1-2 天 新手友好度 35/100
-
难度 4/5 3-5 天 新手友好度 25/100
查看 JuliaPy/PyPlot.jl 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 72/100
oxfordcontrol/COSMO.jl#211 ·
-
documentation
难度 2/5 半天 新手友好度 65/100
维护者通常 6 天内回复
-
Out-of-place JLArray/GPU problem with VectorContinuousCallback scalar-indexes (callback cache built with CPU zeros)可能已有人在做 @ChrisRackauckas-Claude 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 74/100
SciML/OrdinaryDiffEq.jl#4813 ·
维护者通常 1 天内回复
-
ARKODE: callbacks that modify `u` throw MethodError on reinit可能已有人在做 @devmotion 于 1 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 79/100
SciML/Sundials.jl#575 ·
-
难度 1/5 1 小时以内 新手友好度 78/100
维护者通常 1 天内回复