Fix nsync_mu_unlock_slow_() on Apple Silicon

We torture test dlmalloc() in test/libc/stdio/memory_test.c. That test
was crashing on occasion on Apple M1 microprocessors when dlmalloc was
using *NSYNC locks. It was relatively easy to spot the cause, which is
this one particular compare and swap operation, which needed to change
to use sequentially-consistent ordering rather than an acquire barrier
This commit is contained in:
Justine Tunney 2023-11-13 10:57:02 -08:00
parent 3b15d31247
commit 751d20d98d
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
5 changed files with 36 additions and 2 deletions

View file

@ -23,6 +23,7 @@
#include "libc/thread/thread.h"
#include "libc/thread/tls.h"
#include "third_party/dlmalloc/vespene.internal.h"
#include "third_party/nsync/mu.h"
// clang-format off
#define FOOTERS 0