[devel] [python] sem_open in multiprocessing.queues.Queue

Vitaly Kuznetsov vitty на altlinux.ru
Чт Апр 19 13:24:14 MSK 2012


On Thu, 19 Apr 2012 15:04:57 +0600, Ildar Mulyukov wrote:
> On 19.04.2012 15:01:32, Vitaly Kuznetsov wrote:
>> On Thu, 19 Apr 2012 12:32:05 +0600, Ildar Mulyukov wrote:
>>> Оба наших питона выдают следующее:
>>> $ python3 -c 'from multiprocessing.queues import Queue;'
>>> Traceback (most recent call last):
>>>    File "/usr/lib64/python3.2/multiprocessing/synchronize.py", line
>>> 54,
>>> in <module>
>>>      from _multiprocessing import SemLock
>>> ImportError: cannot import name SemLock
>>>
>>> During handling of the above exception, another exception occurred:
>>>
>>> Traceback (most recent call last):
>>>    File "<string>", line 1, in <module>
>>>    File "/usr/lib64/python3.2/multiprocessing/queues.py", line 48, 
>>> in
>>> <module>
>>>      from multiprocessing.synchronize import Lock, 
>>> BoundedSemaphore,
>>> Semaphore, Condition
>>>    File "/usr/lib64/python3.2/multiprocessing/synchronize.py", line
>>> 59,
>>> in <module>
>>>      " function, see issue 3770.")
>>> ImportError: This platform lacks a functioning sem_open
>>> implementation,
>>> therefore, the required synchronization primitives needed will not
>>> function, see issue 3770.
>>
>> Это баг, при сборке в нашей сборочнице не проходит тест sem_open:
>>
>> к примеру,
>> 
>> http://git.altlinux.org/tasks/archive/done/_67/69340/build/100/x86_64/log:
>> checking whether POSIX semaphores are enabled... no
>> checking for broken sem_getvalue... yes
>>
>> сейчас попробую посмотреть как объехать.
>
> Этот баг воспроизводится на полноценной машине. Даже в сборочницу не
> надо залезать.

При сборке питон проверяет, работает ли sem_open. В хешере sem_open() 
обламывается (ему нужен /dev/shm) и поэтому в собранном питоне отключена 
соответствующая поддержка. Я сейчас уберу соответствующие проверки и 
соберу рабочие питоны в Сизиф.



Подробная информация о списке рассылки Devel