ipython / ipython/ipykernel

Segfault launching ipykernel on Python 3.12.3 in VS Code Jupyter (works on Python 3.11)

未关闭
#1,512 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Python
星标
734
派生
412
平均合并
1 天 5 小时
30 天内合并 PR
8

描述

### **Summary**
## Summary

A Jupyter kernel startup failure occurs when launching `ipykernel` under Python `3.12.3` inside the project virtual environment. The process crashes with `Segmentation fault` during `IPKernelApp` initialization. The same kernel startup works correctly on Python `3.11.15`.

This appears to be a bug in the `ipykernel` / `IPython` startup path for Python 3.12 rather than a notebook-specific issue.

---

## Reproduction Steps

1. Open the project directory:
```bash
cd /home/alvaritogsg/personalProjects/nuclioShool/nuclio_charlas
```
2. Activate the virtual environment:
```bash
. .venv/bin/activate
```
3. Run the kernel launcher directly with faulthandler:
```bash
python3 -X faulthandler -m ipykernel_launcher -f /tmp/test_kernel.json
```
4. Observe the crash:
- `Segmentation fault (core dumped)`
- No `/tmp/test_kernel.json` file is created.

5. Compare with Python 3.11:
```bash
python3.11 -X faulthandler -m ipykernel_launcher -f /tmp/test_kernel_py311.json
```
6. The Python 3.11 kernel starts successfully and remains alive.

---

## Actual Behavior

The kernel process crashes immediately with a segmentation fault while initializing the IPython kernel application.

The stack trace includes:

- `logging/__init__.py`
- `IPython/core/application.py`
- `ipykernel/kernelapp.py`
- `traitlets/config/application.py`
- `ipykernel_launcher.py`

Loaded native extension modules at the time of the crash:

- `zmq.backend.cython._zmq`
- `tornado.speedups`
- `psutil._psutil_linux`

VS Code reports:

The error displaed by VS Code was:

> `Error: El kernel ha muerto. Error: ... Vea Jupyter [log](command:jupyter.viewOutput) para obtener más detalles.`

- The execution that is falling is: `~python -m ipykernel_launcher`
- The check command `python -c "import ipykernel; print(...)"` works correctly.
---

## Expected Behavior

The kernel should start normally and create a connection file such as `/tmp/test_kernel.json`. Jupyter frontends should be able to connect to the kernel without the process dying.

---

## Environment

- OS: Linux (WSL/Remote VS Code)
- VS Code Jupyter extension: `2025.9.1`
- Python 3.12.3 virtualenv: `/home/alvaritogsg/personalProjects/nuclioShool/nuclio_charlas/.venv`

### Package Versions in `.venv`

- `ipython 9.12.0`
- `ipykernel 7.2.0`
- `jupyter-client 8.8.0`
- `jupyter-core 5.9.1`
- `traitlets 5.14.3`
- `tornado 6.5.5`
- `pyzmq 27.1.0`
- `psutil 7.2.2`

### Python Version Comparison

- Python 3.12.3: fails
- Python 3.11.15: works

The working Python 3.11 environment was tested using a temporary venv and a similar `ipykernel_launcher` command.

---

## Additional Notes

- `python3 -m IPython --help` works and even `python3 -m ipykernel_launcher --help` succeeds, but actual kernel startup still crashes.
- The crash appears to happen before any frontend-level Jupyter communication begins, so this is likely not a VS Code issue.
- The failing path is likely in the `ipykernel` / `IPython` initialization logic, possibly specific to Python 3.12 in this environment.

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。