If semop() returns EINTR, semptr->sem[nz]cnt is not properly decremented. The FreeBSD patch which fixes this should apply to OpenBSD: http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/kern/sysv_sem.c.diff?r1=1.68&r2=1.69 Colin Percival