boostorg / boostorg/interprocess
Incompatible shared memory emulation strategies (Windows)
- Vorherrschende Sprache
- C++
- Sterne
- 185
- Forks
- 131
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
### Info
Boost version: 1.89.0
Platform: Windows (x64)
Compiler: MSVC 14.3 (Visual Studio 2022)
### Description
Boost.Interprocess uses a boot timestamp to construct unique per-boot shared memory file paths (via `create_shared_dir_cleaning_old_and_get_filepath` and related helpers). On each call, it also cleans up all shared folders that do not match the current boot timestamp. On Windows, the boot timestamp can be obtained through different strategies that return different values for the same boot session.
### Impact
- applications that link against the same Boost.Interprocess version but use different strategies for getting the boot timestamp will clean up each others shared memory emulation folder
- same for applications that link against different versions of Boost.Interprocess, since the default changed between versions
### Suggested fix
- standardize on a single reliable mechanism (if even possible) and deprecate all other strategies
- add a fallback/search mechanism that checks all possible locations for the current boot session
- exclude all possible locations for the current boot session from the cleanup in `create_shared_dir_cleaning_old_and_get_filepath`
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Beginne mit dem Lesen von create_shared_dir_cleaning_old_and_get_filepath und den zugehörigen Windows-Hilfsfunktionen für Boot-Zeitstempel. Vergleiche die möglichen Zeitstempelwerte für eine Boot-Sitzung und verfolge, wie die Bereinigung gemeinsame Ordner auswählt. Erledigt ist die Aufgabe, wenn Anwendungen, die unterschiedliche Zeitstempelstrategien verwenden, nicht mehr die Ordner der Shared-Memory-Emulation der jeweils anderen entfernen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- cpp
- Bereich
- operating-systems
- Issue-Typ
- Bug
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100