mmap'ed robust mutexes and possible undefined behaviour

Florian Weimer fw@deneb.enyo.de
Tue Nov 25 19:26:00 GMT 2014


* Florian Weimer:

> * 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.

Ugh.  I should have said that this would be an extension, it's not
required by POSIX.



More information about the Libc-help mailing list