cvs commit: src/sys/kern sysv_sem.c

Tim J. Robbins tjr at FreeBSD.org
Sun Nov 9 23:22:43 PST 2003


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


More information about the cvs-src mailing list