Skip to content

Segfault in _jl_call_nogil with jupyter extension or passing pytypes #542

Open
@PhilReinhold

Description

@PhilReinhold

Affects: JuliaCall

Describe the bug

If I run this in a jupyter notebook

from juliacall import Main as jl
jl.println._jl_call_nogil("foo") # segfaus

I get a segfault.

It goes away if I disable the extension:

import os
os.environ["PYTHON_JULIACALL_AUTOLOAD_IPYTHON_EXTENSION"] = "no"
from juliacall import Main as jl
jl.println._jl_call_nogil("foo") # works

Also I get segfaults if I pass a python type that I would expect to be converted, e.g.

import os
os.environ["PYTHON_JULIACALL_AUTOLOAD_IPYTHON_EXTENSION"] = "no"
from juliacall import Main as jl
jl.println._jl_call_nogil({})  # segfaults

This goes away if I manually convert

import os
os.environ["PYTHON_JULIACALL_AUTOLOAD_IPYTHON_EXTENSION"] = "no"
from juliacall import Main as jl
jl.println._jl_call_nogil(jl.pyconvert(jl.Dict, {}))  # works

Your system

  • macos 13.6.8, M2
  • Julia 1.10.4, with PythonCall 0.9.22

versioninfo()

Julia Version 1.10.4
Commit 48d4fd48430 (2024-06-04 10:41 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: macOS (arm64-apple-darwin22.4.0)
  CPU: 12 × Apple M2 Pro
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, apple-m1)
Threads: 1 default, 0 interactive, 1 GC (on 8 virtual cores)
Environment:
  JULIA_PKG_USE_CLI_GIT = true
  JULIA_PYTHONCALL_EXE = /Users/pcrein/.pyenv/versions/3.11.4/envs/test-juliacall/bin/python3.11

Pkg.status()

Status `~/.pyenv/versions/3.11.4/envs/test-juliacall/julia_env/Project.toml`
  [6099a3de] PythonCall v0.9.22` 

CondaPkg.status() I don't seem to have condapkg

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions