sem(4) lockup in python?

Ivan Voras ivoras at freebsd.org
Wed Jan 11 15:02:00 UTC 2012


On 11 January 2012 14:06, John Baldwin <jhb at freebsd.org> wrote:
> On Wednesday, January 11, 2012 6:21:18 am Ivan Voras wrote:
>> The lang/python27 port can optionally be built with the support for
>> POSIX semaphores - i.e. sem(4). This option is labeled as experimental
>> so it may be that the code is simply incorrect. I've tried it and get
>> frequent hangs with the python process in the "usem" state. The kernel
>> stack is as follows and looks reasonable:
>>
>> # procstat -kk 19008
>>    PID    TID COMM             TDNAME           KSTACK
>>
>> 19008 101605 python           -                mi_switch+0x174
>> sleepq_catch_signals+0x2f4 sleepq_wait_sig+0x16 _sleep+0x269
>> do_sem_wait+0xa19 __umtx_op_sem_wait+0x51 amd64_syscall+0x450
>> Xfast_syscall+0xf7
>>
>> The process doesn't react to SIGINT or SIGTERM but fortunately reacts to
>> SIGKILL.
>>
>> This could be an error in Python code but OTOH this code is not
>> FreeBSD-specific so it's unlikely.
>
> This is using the new umtx-based semaphore code that David Xu wrote.  He is
> probably the best person to ask (cc'd).
>

Ok, I've encountered the problem repeatedly while building databases/tdb:
 it uses Python in the build process (but maybe it needs something else in
parallel to provoke the problem).


More information about the freebsd-hackers mailing list