pthread_mutex_init should initialize mutex appropriately for robust mutex_init
Sun mutexes expect that a mutex_t for a robust mutex be initialized to all 0 prior to mutex_init(), posix mutexes do not.
pthread_mutex_init() should 0 out any uninitialized mutex_t prior to calling mutex_t on it, if a robust mutex is requested.
Updated by Electric Monk almost 5 years ago
- Status changed from In Progress to Closed
- % Done changed from 0 to 100
commit 6da2547363ddbd247ee9513db83b05a31bca31af Author: Richard Lowe <firstname.lastname@example.org> Date: 2018-11-26T02:13:30.000Z 9959 pthread_mutex_init should initialize mutex appropriately for robust mutex_init Reviewed by: Jason King <email@example.com> Reviewed by: Robert Mustacchi <firstname.lastname@example.org> Approved by: Dan McDonald <email@example.com>
Updated by Gordon Ross about 1 year ago
There's a remaining problem with Samba 4.10.6 and later. See:
and later commits where that gets renamed a couple times:
Samba loads a TDB file at startup, mapping that file into memory.
In that file, there are pthread_mutex_t objects that were initialized by some previous TDB user and written out.
In this scenario, it's not clear what pthread_mutex_init() should do, but it returns EBUSY because the
mutex objects appear to be already initialized (they contain mutex_magic == MUTEX_MAGIC).
The Linux version of pthread_mutex_init appears to initialize unconditionally.
Perhaps we should do the same?