ipython / ipython/ipykernel

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

Aberta
#1,512 0 comentários 0 reações 0 responsáveis Ver no GitHub
Linguagem predominante
Python
Estrelas
734
Forks
412
Merge médio
1d 5h
PRs com merge (30d)
8

Descrição

### **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.

Guia de contribuição

Abrir o guia de contribuição

Direção de pesquisa

Reproduce the failure with `python3 -X faulthandler -m ipykernel_launcher -f /tmp/test_kernel.json`, then compare it with the working Python 3.11 command. Start from `ipykernel_launcher.py`, `ipykernel/kernelapp.py`, and the listed native extensions; done means Python 3.12 starts the kernel and creates its connection file without a segmentation fault.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
jupyter, jupyter-notebook, python
Domínio
backend, devtools
Tipo de issue
Bug
Dificuldade
4/5
Tempo estimado
3-5 dias
Status de atividade
Pouca atividade
Clareza
Razoavelmente clara
Facilidade para iniciantes
35/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.