in reply to SIGCHLD interrupting accept call?

You aren't going to like this, but I just tested and it worked like a champ. The machines I used are Redhat 6.2 Linux 2.2.14-5.0 w/ perl 5.005_03 and the other is SGI Irix 6.5.5 w/ perl 5.005_02

So it seems to be a specific Solaris thing. And if the $SIG{'CHLD'} = 'IGNORE' works fine, than it seems to me that your problem would be in REAPER, and not the accept call, but I could be wrong. Maybe Solaris has issues with waitpid?

Another thought is that maybe for some reason the server is getting a SIGPIPE when your client disconnects. This is a total guess though, but you may want to explicitly ingore the SIGPIPE (ie $SIG{'PIPE'} = 'IGNORE';) and see if that works.