Type cache can expose previous values during finalization of an object
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
Bug report
Bug description:
This should always print True, that is an attribute accessed from a class should match the value that's in the type's mappingproxy:
class X:
def __del__(inner_self):
v = C.a
print(v == C.__dict__['a'])
class C:
a = X()
# prime the cache
C.a
C.a
# destructor shouldn't be able to see inconsisent state
C.a = X()
C.a = X()
But this prints False because the destructor can be run when the assignment into the type dict occurs, but before the type version is invalidated.
CPython versions tested on:
3.8, CPython main branch
Operating systems tested on:
Linux
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 ejecutando el reproducer en CPython main y compara la búsqueda de atributos con el mapeo de tipos durante el destructor desencadenado por la asignación. Sigue la invalidación de la caché de tipos y la secuencia de finalización; el trabajo estará terminado cuando el ejemplo imprima True de forma consistente sin exponer el estado inconsistente.
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
- Bastante claro
- Aptitud para principiantes
- 35/100