boostorg / boostorg/interprocess

boost::flyweight::intermodule_holder on LINUX is segfaulting

Abierto
#218 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
C++
Estrellas
185
Forks
131
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

Reported in the Boost mailing list:

https://lists.boost.org/boost-users/2024/05/91583.php

Apparently the boost::flyweight::intermodule_holder on LINUX is creating shared memory objects, which by accident (crash?) can persist after the process having created them is already gone.

As a result the code can attempt to create an already existing shared memory object created by another user.

It seems like locking is based on a unique temporary filesystem path that uses both the process ID and its start time:

So, the code should be robust against dangling locks because the combination (PID, start time) won't ever repeat. Maybe you can debug your program and try to isolate the actual path generated for the offending scenario?

It might be related with the lame implementation of get_current_process_creation_time in Linux.

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Comienza reproduciendo el fallo de Linux descrito en el informe de la lista de correo de Boost e inspecciona boost::flyweight::intermodule_holder. Rastrea la ruta temporal utilizada para el bloqueo y examina get_current_process_creation_time en Linux. Se considera completado cuando el escenario de colisión de memoria compartida o de bloqueo colgante informado esté aislado y la causa esté documentada o corregida con una reproducción verificada.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
cpp, linux
Área
operating-systems
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.