Problem is fixed with the attached patch.
diff -r -u --new-file old/portmap-5/Makefile new/portmap-5/Makefile --- old/portmap-5/Makefile 2005-12-09 11:49:57.000000000 -0500 +++ new/portmap-5/Makefile 2005-12-13 10:32:43.000000000 -0500 @@ -74,6 +74,11 @@ # ZOMBIES = -DIGNORE_SIGCHLD # AIX 4.x, HP-UX 9.x +# Under heavy I/O, sometimes portmap dies w/ SIGPIPE. Enable next macro to +# fix. +# +BROKEN_PIPE = -DIGNORE_SIGPIPE + # Uncomment the following macro if your system does not have u_long. # # ULONG =-Du_long="unsigned long" @@ -120,8 +125,8 @@ SHELL = /bin/sh COPT = $(CONST) $(HOSTS_ACCESS) $(CHECK_PORT) \ - $(SYS) -DFACILITY=$(FACILITY) $(ULONG) $(ZOMBIES) $(SA_LEN) \ - $(LOOPBACK) $(SETPGRP) + $(SYS) -DFACILITY=$(FACILITY) $(ULONG) $(ZOMBIES) $(BROKEN_PIPE) \ + $(SA_LEN) $(LOOPBACK) $(SETPGRP) CFLAGS = -Wall $(COPT) -O2 $(NSARCHS) OBJECTS = portmap.o pmap_check.o from_local.o $(AUX) diff -r -u --new-file old/portmap-5/portmap.c new/portmap-5/portmap.c --- old/portmap-5/portmap.c 2005-12-09 11:49:57.000000000 -0500 +++ new/portmap-5/portmap.c 2005-12-13 10:32:43.000000000 -0500 @@ -312,6 +312,11 @@ #else (void)signal(SIGCHLD, reap); #endif +#ifdef IGNORE_SIGPIPE /* Michael Peek <[EMAIL PROTECTED]> */ + (void)signal(SIGPIPE, SIG_IGN); +#else + (void)signal(SIGPIPE, reap); +#endif svc_run(); syslog(LOG_ERR, "run_svc returned unexpectedly"); abort();
0.044061 accept(4, {sa_family=AF_INET, sin_port=htons(57806), sin_addr=inet_addr("127.0.0.1")}, [16]) = 6 0.042895 poll([{fd=5, events=POLLIN, revents=POLLIN}], 1, 35000) = 1 0.040004 read(5, "\x80\x00\x00\x28\x6c\x53\x9c\x38\x00\x00\x00\x00\x00\x00"..., 400) = 44 0.000104 write(5, "\x00\x00\x01\x8c\x6c\x53\x9c\x38\x00\x00\x00\x01\x00\x00"..., 400) = 400 0.000073 write(5, "\x80\x00\x00\x70\x00\x00\x00\x11\x00\x00\x03\x8d\x00\x00"..., 116) = -1 EPIPE (Broken pipe) 0.000050 --- SIGPIPE (Broken pipe) @ 0 (0) --- 0.000061 close(5) = 0