Segfault from `zoneinfo` with custom DateTime class
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 77.2k
- Forks
- 36k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
Crash report
What happened?
Here's a minimal reproducer
import zoneinfo
from datetime import date
class MyDateTime:
def __init__(
self,
year: int,
month: int,
day: int,
hour: int = 0,
minute: int = 0,
second: int = 0,
) -> None:
self.ordinal = date(year, month, day).toordinal()
self.hour = hour
self.minute = minute
self.second = second
def toordinal(self) -> int:
return self.ordinal
def whoopsie():
tz_berlin = zoneinfo.ZoneInfo("Europe/Berlin")
dt = MyDateTime(1995, 9, 2, 14, 34, 56)
print(tz_berlin.utcoffset(dt), flush=True)
If I run whoopsie, I get one of the following outcomes:
- It prints
02:00:00 - It prints
01:00:00 - It prints
00:53:28 - It segfaults
<project dir>/venv313/bin/python -X dev <project dir>/segfault.py
Fatal Python error: Segmentation fault
Current thread 0x00007fd62be47b80 (most recent call first):
File "<project dir>/segfault.py", line 27 in whoopsie
File "<project dir>/segfault.py", line 34 in <module>
I've tried running the test in a loop and it seems to always spit out the same result within a single run. So I assume some global state, memory layout, or or such is involved.
CPython versions tested on:
3.9, 3.13
Operating systems tested on:
Linux
Output from running 'python -VV' on the command line:
Python 3.13.0 (main, Oct 10 2024, 13:32:18) [GCC 11.4.0]
Linked PRs
- gh-125345
- gh-125824
- gh-139132
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Empieza con el reproductor mínimo del cuerpo del issue y ejecútalo con las versiones de CPython indicadas para confirmar el fallo y los offsets inconsistentes. Después, lee los PR enlazados gh-125345, gh-125824 y gh-139132; el trabajo estará terminado cuando el reproductor ya no produzca un error de segmentación y genere un resultado estable y correcto.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- backend
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Necesita aclaración
- Aptitud para principiantes
- 25/100