JuliaPy / JuliaPy/PyCall.jl

pyisinstance(PyNull(), ...) triggers seg fault

Ouverte
#979 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Julia
Étoiles
1.5k
Forks
186
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

Using `pyisinstance` on a `PyNull()` triggers a segmentation fault:

```julia
julia> using PyCall

julia> pyisinstance(PyNULL(), py"int")

signal (11): Segmentation fault
in expression starting at REPL[2]:1
object_recursive_isinstance at /tmp/awadell/spack-stage/spack-stage-python-3.9.6-4jz3ek3negzeypx4tvhuqvc42xmbpcjx/spack-src/Objects/abstract.c:2488 [inlined]
PyObject_IsInstance at /tmp/awadell/spack-stage/spack-stage-python-3.9.6-4jz3ek3negzeypx4tvhuqvc42xmbpcjx/spack-src/Objects/abstract.c:2549
pyisinstance at /home/awadell/.julia/packages/PyCall/7a7w0/src/PyCall.jl:167
unknown function (ip: 0x7fe534d220e6)
_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_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:246
start_repl_backend at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.7/REPL/src/REPL.jl:231
#run_repl#47 at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.7/REPL/src/REPL.jl:364
run_repl at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.7/REPL/src/REPL.jl:351
_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_45169.clone_1 at /home/awadell/.spack/opt/spack/linux-centos7-broadwell/gcc-11.2.0/julia-1.7.2-hja3uicizkejbgeeqmetwlihygjq7tvu/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_38732.clone_1 at /home/awadell/.spack/opt/spack/linux-centos7-broadwell/gcc-11.2.0/julia-1.7.2-hja3uicizkejbgeeqmetwlihygjq7tvu/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: 4275849 (Pool: 4273792; Big: 2057); GC: 4
Segmentation fault

```

System Info
- Julia: Version 1.7.2 (2022-02-06)
- PyCall: v1.93.1
- Python: v3.9.6 (Not using the Conda.jl install)
- I have run `Pkg.test("PyCall") on my machine and can confirm all tests are passing

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Commencez à PyCall.jl:167, où l’appel défaillant à pyisinstance est signalé, et reproduisez l’exemple Julia/Python avec PyNULL() et py"int". Ajoutez une couverture pour ce cas et vérifiez qu’il ne provoque plus de segmentation fault tout en préservant le résultat isinstance attendu.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
tooling
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.