Author: Armin Rigo <ar...@tunes.org> Branch: ec-keepalive Changeset: r81563:2f853825ff8f Date: 2016-01-05 01:21 +0100 http://bitbucket.org/pypy/pypy/changeset/2f853825ff8f/
Log: Potential fix: need to use __sync_lock_release() here diff --git a/rpython/translator/c/src/thread.h b/rpython/translator/c/src/thread.h --- a/rpython/translator/c/src/thread.h +++ b/rpython/translator/c/src/thread.h @@ -48,7 +48,7 @@ } static inline void _RPyGilRelease(void) { assert(RPY_FASTGIL_LOCKED(rpy_fastgil)); - rpy_fastgil = 0; + lock_release(&rpy_fastgil); } static inline long *_RPyFetchFastGil(void) { return &rpy_fastgil; diff --git a/rpython/translator/c/src/thread_nt.h b/rpython/translator/c/src/thread_nt.h --- a/rpython/translator/c/src/thread_nt.h +++ b/rpython/translator/c/src/thread_nt.h @@ -38,3 +38,4 @@ #else #define lock_test_and_set(ptr, value) InterlockedExchange(ptr, value) #endif +#define lock_release(ptr) (*((volatile long *)ptr) = 0) diff --git a/rpython/translator/c/src/thread_pthread.h b/rpython/translator/c/src/thread_pthread.h --- a/rpython/translator/c/src/thread_pthread.h +++ b/rpython/translator/c/src/thread_pthread.h @@ -81,3 +81,4 @@ #define lock_test_and_set(ptr, value) __sync_lock_test_and_set(ptr, value) +#define lock_release(ptr) __sync_lock_release(ptr) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit