Date: Sun, 9 Nov 2003 23:22:41 -0800 (PST) From: "Tim J. Robbins" <tjr@FreeBSD.org> To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/kern sysv_sem.c Message-ID: <200311100722.hAA7MgGe084957@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
tjr 2003/11/09 23:22:41 PST FreeBSD src repository Modified files: sys/kern sysv_sem.c Log: When there are no free sem_undo structs available in semu_alloc(), only free one sem_undo with un_cnt == 0 instead of all of them. This is a temporary workaround until the SLIST_FOREACH_PREVPTR loop gets fixed so that it doesn't cause cycles in semu_list when removing multiple adjacent items. It might be easier to just use (doubly-linked) LISTs here instead of complicated SLIST code to achieve O(1) removals. This bug manifested itself as a complete lockup under heavy semaphore use by multiple processes with the SEM_UNDO flag set. PR: 58984 Revision Changes Path 1.66 +4 -3 src/sys/kern/sysv_sem.c
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200311100722.hAA7MgGe084957>