[oi-dev] Issue with pthreads

Andreas Wacknitz A.Wacknitz at gmx.de
Thu Apr 18 16:32:53 UTC 2019


Am 18.04.19 um 17:55 schrieb Rouven WEILER:
> is the following patch included in the actual oi codebase and since when?
>
> https://www.illumos.org/issues/9959
>
> _______________________________________________
> oi-dev mailing list
> oi-dev at openindiana.org
> https://openindiana.org/mailman/listinfo/oi-dev
Obviously, you can see the commit id. With this you can run
git show 6da2547363ddbd247ee9513db83b05a31bca31af
<https://github.com/illumos/illumos-gate/commit/6da2547363ddbd247ee9513db83b05a31bca31af>

commit 6da2547363ddbd247ee9513db83b05a31bca31af
Author: Richard Lowe <richlowe at richlowe.net>
Date:   Tue Nov 6 00:57:32 2018 +0000

    9959 pthread_mutex_init should initialize mutex appropriately for
robust mutex_init
    Reviewed by: Jason King <jason.king at joyent.com>
    Reviewed by: Robert Mustacchi <rm at joyent.com>
    Approved by: Dan McDonald <danmcd at joyent.com>

diff --git a/usr/src/lib/libc/port/threads/pthr_mutex.c
b/usr/src/lib/libc/port/threads/pthr_mutex.c
index 1f70725677..c8943671aa 100644
--- a/usr/src/lib/libc/port/threads/pthr_mutex.c
+++ b/usr/src/lib/libc/port/threads/pthr_mutex.c
@@ -226,6 +226,23 @@ pthread_mutex_init(pthread_mutex_t *_RESTRICT_KYWD
mutex,
                    PTHREAD_PRIO_NONE | PTHREAD_MUTEX_STALLED;
        }

+       /*
+        * POSIX mutexes (this interface) make no guarantee about the
state of
+        * the mutex before pthread_mutex_init(3C) is called.  Sun
mutexes, upon
+        * which these are built and which mutex_init(3C) below represents
+        * require that a robust mutex be initialized to all 0s _prior_ to
+        * mutex_init() being called, and that mutex_init() of an
initialized
+        * mutex return EBUSY.
+        *
+        * We respect both these behaviors by zeroing the mutex here in the
+        * POSIX implementation if and only if the mutex magic is incorrect,
+        * and the mutex is robust.
+        */
+       if (((type & PTHREAD_MUTEX_ROBUST) != 0) &&
+           (((mutex_t *)mutex)->mutex_magic != MUTEX_MAGIC)) {
+               (void) memset(mutex, 0, sizeof (*mutex));
+       }
+
        return (mutex_init((mutex_t *)mutex, type, &prioceiling));
 }


So if you run pkg update on OI after Nov 6th, 2018, you should have it :)

Regards
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://openindiana.org/pipermail/oi-dev/attachments/20190418/81e7e994/attachment-0005.html>


More information about the oi-dev mailing list