python: fix i686 multiprocessing errors

This commit is contained in:
Jürgen Buchmüller 2017-10-27 03:24:50 +02:00
parent 19fc36d63c
commit 637230b81c

View file

@ -0,0 +1,55 @@
It seems that avoiding to create local aliases for the self._rlock and
self._wlock methods prevents the strange errors on i686 related to
semaphore locking and unlocking.
One example of failing builds is firefox-esr running gyp in an i686 environment.
--- Lib/multiprocessing/queues.py 2017-09-16 19:38:35.000000000 +0200
+++ Lib/multiprocessing/queues.py 2017-10-24 19:49:06.291351206 +0200
@@ -369,13 +369,11 @@
def _make_methods(self):
- recv = self._reader.recv
- racquire, rrelease = self._rlock.acquire, self._rlock.release
def get():
- racquire()
- try:
- return recv()
- finally:
- rrelease()
+ self._rlock.acquire()
+ try:
+ return self._reader.recv()
+ finally:
+ self._rlock.release()
self.get = get
if self._wlock is None:
@@ -383,11 +382,9 @@
self.put = self._writer.send
else:
- send = self._writer.send
- wacquire, wrelease = self._wlock.acquire, self._wlock.release
def put(obj):
- wacquire()
- try:
- return send(obj)
- finally:
- wrelease()
+ self._wlock.acquire()
+ try:
+ return self._writer.send(obj)
+ finally:
+ self._wlock.release()
self.put = put
--- Modules/_multiprocessing/semaphore.c 2017-09-16 19:38:35.000000000 +0200
+++ Modules/_multiprocessing/semaphore.c 2017-10-28 10:49:56.944993401 +0200
@@ -378,7 +378,7 @@
}
}
#else
- int sval;
+ int sval = -1;
/* This check is not an absolute guarantee that the semaphore
does not rise above maxvalue. */