boostorg / boostorg/interprocess

Interprocess anonymous mutex hangs with Apple Silicon

Aperta
#176 2 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

Hi, boost interprocess anonymous mutex seems not to be handling well in ARM64 of Apple Silicon.

```C++
#include
#include
#include

using namespace boost::interprocess;

int main() {
try{
managed_shared_memory managed_shm{open_or_create, "shm", 1024};
interprocess_mutex *mtx =
managed_shm.find_or_construct("mtx")();

mtx->lock();
std::cout << "Critial section" << std::endl;
mtx->unlock();
} catch (const boost::interprocess::interprocess_exception &e) {
std::cerr << "Interprocess exception thrown: " << e.what() << std::endl;
_exit(1);
}
}
```
**Compilation steps followed**
```bash
clang++ -std=c++17 -arch arm64 boost_interprocess.cpp -I -o boost_interprocess_arm64 # For arm64 only build
clang++ -std=c++17 -arch x86_64 boost_interprocess.cpp -I -o boost_interprocess_x64 # For x64 only build
```
**Expected Behavior**
Both the instantiations should work and print *Critical Section*.

**What was observed**
When arm64 build is executed first, it works fine, but when x64 build is executed, the subsequent arm64 execution hangs.

**Steps to reproduce**
* `rm /tmp/boost_interprocess/shm`
* `./boost_interprocess_x64`
* `./boost_interprocess_arm64`

**Environment tested on**
* MacBook Air (M1, 2020)
* MacOS Monterey 12.3.1
* Apple clang version 13.1.6 (clang-1316.0.21.2.5)

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Inizia con il riproduttore minimo in boost_interprocess.cpp ed esegui i comandi di pulizia e arm64/x86_64 elencati nell’ambiente M1. Ispeziona i percorsi di managed_shared_memory e interprocess_mutex coinvolti nello stato del mutex condiviso dipendente dall’architettura; il lavoro è completato quando entrambi gli ordini di esecuzione stampano "Critical section" senza bloccarsi.

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

Valutazione

Stack tecnologico
cpp
Ambito
operating-systems
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
42/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.