mmap'ed robust mutexes and possible undefined behaviour

Florian Weimer
Tue Nov 25 19:25:00 GMT 2014

* Carlos O'Donell:

>> 1. we open a file.
>> 2. we mmap it and use that mem to store a robust mutex.
>> 3. we lock the mutex.
>> 4. we munmap the file.
>> 5. we close the file.
> Undefined behaviour.
> This results in undefined behaviour since the allocated storage for
> the mutex object has been lost. You need to keep that storage around
> for the robust algorithms to work with. Without any data you can't
> do anything.

Some might expect that the mutex enters inconsistent state when the
mutex is unmapped, not just on process death.  Then the data would
still be available at the time the state change would need to happen.

More information about the Libc-help mailing list