boostorg / boostorg/interprocess

boost::flyweight::intermodule_holder on LINUX is segfaulting

Aperta
#218 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
C++
Stelle
185
Fork
131
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

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.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Inizia riproducendo il problema di Linux descritto nel report della mailing list di Boost e analizza boost::flyweight::intermodule_holder. Traccia il percorso temporaneo utilizzato per il locking ed esamina get_current_process_creation_time su Linux. Il lavoro è completo quando lo scenario segnalato di collisione della memoria condivisa o di dangling lock è isolato e la causa è documentata o corretta con una riproduzione verificata.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
cpp, linux
Ambito
operating-systems
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.