Self-follow-up, hopefully useful. I truss the process running the POP tcpserver, then the process it forks when I connect to the POP port. I don't know if the ERR#9 is fatal, and unfortunately can't trace the next forked process 33323 because the child crashes immediately after displaying the info.
Does this help at all? Thanks. mahe# ps -axww|grep tcpser 33265 ?? S 0:00.00 tcpserver -v -u 82 -g 65533 0 smtp /var/qmail/bin/qmail-smtpd 276 p0- S 0:03.25 tcpserver -v -u 82 -g 65533 0 smtp /var/qmail/bin/qmail-smtpd 32797 p1 I 0:00.02 tcpserver 0 pop3 /var/qmail/bin/qmail-popup foo.example.net /usr/local/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir mahe# truss -p 32797 (null)() = 0 (0x0) sigprocmask(0x1,0xbfbffcc8,0x0) = 0 (0x0) fork() = 33316 (0x8224) close(0) = 0 (0x0) sigprocmask(0x2,0xbfbffcc8,0x0) = 0 (0x0) mahe# truss -p 33316 (null)() = 1 (0x1) read(0x0,0x804bfe0,0x80) = 14 (0xe) fcntl(0x1,0x3,0x0) = 2 (0x2) close(2) = 0 (0x0) fcntl(0x1,0x0,0x2) = 2 (0x2) close(3) ERR#9 'Bad file descriptor' pipe() = 3 (0x3) fork() = 33323 (0x822b) close(3) = 0 (0x0) write(4,0x804c100,62) = 62 (0x3e) close(4) = 0 (0x0) SIGNAL 20 wait4(0x822b,0xbfbffbcc,0x0,0x0) = 33323 (0x822b) select(0x2,0x0,0xbfbffa38,0x0,0xbfbffa30) = 1 (0x1) write(1,0x804c080,26) = 26 (0x1a) exit(0x1) process exit, rval = 256