JuliaPy / JuliaPy/PyCall.jl

importing inspect causes segfault

Đang mở
#604 2 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Julia
Star
1.5k
Fork
186
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

I can use `@pyimport` on most modules without difficulty, but trying it on inspect causes a segfault:

```
---(Many, many, repeats of the following error)---
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2184
convert at /home/glynch/.julia/packages/PyCall/0jMpb/src/conversions.jl:607
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2184
convert at /home/glynch/.julia/packages/PyCall/0jMpb/src/conversions.jl:849
iterate at /home/glynch/.julia/packages/PyCall/0jMpb/src/conversions.jl:574
copy at ./abstractdict.jl:152
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2184
convert at /home/glynch/.julia/packages/PyCall/0jMpb/src/conversions.jl:607
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2184
convert at /home/glynch/.julia/packages/PyCall/0jMpb/src/conversions.jl:849
iterate at /home/glynch/.julia/packages/PyCall/0jMpb/src/conversions.jl:574
copy at ./abstractdict.jl:152
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2184
convert at /home/glynch/.julia/packages/PyCall/0jMpb/src/conversions.jl:607
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2184
convert at /home/glynch/.julia/packages/PyCall/0jMpb/src/conversions.jl:849
#75 at ./none:0
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2184
iterate at ./generator.jl:47 [inlined]
collect_to! at ./array.jl:656
collect_to_with_first! at ./array.jl:643 [inlined]
collect at ./array.jl:624
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2184
pywrap at /home/glynch/.julia/packages/PyCall/0jMpb/src/PyCall.jl:342
pywrap at /home/glynch/.julia/packages/PyCall/0jMpb/src/PyCall.jl:338
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2184
do_call at /buildworker/worker/package_linux64/build/src/interpreter.c:324
eval_value at /buildworker/worker/package_linux64/build/src/interpreter.c:430
eval_stmt_value at /buildworker/worker/package_linux64/build/src/interpreter.c:363 [inlined]
eval_body at /buildworker/worker/package_linux64/build/src/interpreter.c:682
jl_interpret_toplevel_thunk_callback at /buildworker/worker/package_linux64/build/src/interpreter.c:795
unknown function (ip: 0xfffffffffffffffe)
unknown function (ip: 0x7fd29333540f)
unknown function (ip: 0x4)
jl_interpret_toplevel_thunk at /buildworker/worker/package_linux64/build/src/interpreter.c:804
jl_toplevel_eval_flex at /buildworker/worker/package_linux64/build/src/toplevel.c:813
jl_toplevel_eval_in at /buildworker/worker/package_linux64/build/src/builtins.c:622
eval at ./boot.jl:319
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2184
eval_user_input at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.0/REPL/src/REPL.jl:85
macro expansion at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.0/REPL/src/REPL.jl:117 [inlined]
#28 at ./task.jl:259
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2184
jl_apply at /buildworker/worker/package_linux64/build/src/julia.h:1537 [inlined]
start_task at /buildworker/worker/package_linux64/build/src/task.c:268
unknown function (ip: 0xffffffffffffffff)
Allocations: 31054891 (Pool: 31039570; Big: 15321); GC: 46
[1] 6686 segmentation fault (core dumped) julia1
```
It only segfaults after some time. Given the recursive nature of the error message and the time it takes to trigger a segfault I'm guessing that the import causes some sort of infinite loop?

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Hướng nghiên cứu

Tái hiện lỗi với @pyimport inspect và đọc các đường dẫn chuyển đổi đệ quy trong src/conversions.jl, đặc biệt là quanh các dòng 574, 607 và 849, cùng với pywrap trong src/PyCall.jl quanh các dòng 338-342. Xác định lý do việc import inspect lặp đi lặp lại đi vào các đường dẫn chuyển đổi đó; hoàn thành khi quá trình import kết thúc mà không có segmentation fault và hồi quy được bao phủ bằng một kiểm tra có thể tái hiện.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
julia, python
Lĩnh vực
backend
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Cần làm rõ
Mức phù hợp với người mới
30/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.