--On Thursday, June 19, 2008 12:25 PM +0200 Mark Martinec <[EMAIL PROTECTED]> wrote:
>> Since debug mode works, it's hard to gather data on why children won't >> fork. Any thoughts? > > Was the above strace/truss collected with an -f option? > If not, it should be, as apparently the problem is in a > cloned process, not in a parent. > Adding timestamps (strace -tt) might be useful too. Okay, now with following children, I see: 12:00:38.484919 stat("/opt/zimbra/log/amavisd.pid", 0x1b6a7140) = -1 ENOENT (No such file or directory) 12:00:38.484976 open("/dev/null", O_RDONLY) = 6 12:00:38.485019 ioctl(6, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff5c61b590) = -1 ENOTTY (Inappropriate ioctl for device) 12:00:38.485053 lseek(6, 0, SEEK_CUR) = 0 12:00:38.485083 fstat(6, {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 3), ...}) = 0 12:00:38.485136 dup2(6, 0) = 0 12:00:38.485167 close(6) = 0 12:00:38.485197 fcntl(0, F_SETFD, 0) = 0 12:00:38.485231 open("/dev/null", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 6 12:00:38.485275 ioctl(6, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff5c61b590) = -1 ENOTTY (Inappropriate ioctl for device) 12:00:38.485309 lseek(6, 0, SEEK_CUR) = 0 12:00:38.485338 fstat(6, {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 3), ...}) = 0 12:00:38.485382 dup2(6, 1) = 1 12:00:38.485410 close(6) = 0 12:00:38.485439 fcntl(1, F_SETFD, 0) = 0 12:00:38.485470 ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff5c61b590) = -1 ENOTTY (Inappropriate ioctl for device) 12:00:38.485500 lseek(1, 0, SEEK_CUR) = 0 12:00:38.485617 rt_sigprocmask(SIG_BLOCK, [INT], NULL, 8) = 0 12:00:38.485661 lseek(5, 4360, SEEK_SET) = 4360 12:00:38.485692 lseek(5, 0, SEEK_CUR) = 4360 12:00:38.485721 lseek(7, 11431, SEEK_SET) = 11431 12:00:38.485757 lseek(7, 0, SEEK_CUR) = 11431 12:00:38.485801 clone(Process 31204 attached (waiting for parent) Process 31204 resumed (parent 31203 ready) child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x2b5b4fc4f470) = 31204 [pid 31204] 12:00:38.489472 getsockname(3, <unfinished ...> [pid 31203] 12:00:38.489559 rt_sigprocmask(SIG_BLOCK, [INT], <unfinished ...> [pid 31204] 12:00:38.489586 <... getsockname resumed> {sa_family=AF_INET, sin_port=htons(53448), sin_addr=inet_addr("xxx.xxx.xx.xx")}, [16]) = 0 [pid 31203] 12:00:38.489621 <... rt_sigprocmask resumed> [INT], 8) = 0 [pid 31204] 12:00:38.489645 getpeername(3, <unfinished ...> [pid 31203] 12:00:38.489701 rt_sigaction(SIGINT, {SIG_DFL}, <unfinished ...> [pid 31204] 12:00:38.489744 <... getpeername resumed> {sa_family=AF_INET, sin_port=htons(389), sin_addr=inet_addr("xxx.xxx.xx.xx")}, [68719476752]) = 0 [pid 31203] 12:00:38.489776 <... rt_sigaction resumed> {SIG_DFL}, 8) = 0 [pid 31204] 12:00:38.489800 fcntl(3, F_GETFD <unfinished ...> [pid 31203] 12:00:38.489822 rt_sigprocmask(SIG_SETMASK, [INT], <unfinished ...> [pid 31204] 12:00:38.489843 <... fcntl resumed> ) = 0x1 (flags FD_CLOEXEC) [pid 31203] 12:00:38.489873 <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 31204] 12:00:38.489939 dup(3 <unfinished ...> [pid 31203] 12:00:38.490153 rt_sigprocmask(SIG_UNBLOCK, [INT], <unfinished ...> [pid 31204] 12:00:38.490174 <... dup resumed> ) = 6 [pid 31203] 12:00:38.490192 <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 31204] 12:00:38.490210 fcntl(6, F_SETFD, FD_CLOEXEC) = 0 [pid 31204] 12:00:38.491000 socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 8 [pid 31204] 12:00:38.491060 close(3) = 0 [pid 31204] 12:00:38.491094 fcntl(8, F_GETFD) = 0 [pid 31204] 12:00:38.491137 dup2(8, 3) = 3 [pid 31204] 12:00:38.491171 fcntl(3, F_SETFD, 0) = 0 [pid 31204] 12:00:38.491202 close(8) = 0 [pid 31204] 12:00:38.491431 write(3, "\25\3\1\0 \0c\337\2P\225G\215\6\21\362\363P\277T\25\231Ms\27W\332\321\31\200\26\5"..., 37) = -1 EPIPE (Broken pipe) [pid 31204] 12:00:38.491514 --- SIGPIPE (Broken pipe) @ 0 (0) --- Process 31204 detached 12:00:38.494626 stat("/opt/zimbra/zimbramon/lib/x86_64-linux-thread-multi/auto/DBI/DESTROY.al", 0x1b6a7140) = -1 ENOENT (No such file or directory) 12:00:38.494808 stat("/opt/zimbra/zimbramon/lib/x86_64-linux-thread-multi/auto/DBI/DESTROY.al", 0x7fff5c61b490) = -1 ENOENT (No such file or directory) 12:00:38.494856 stat("/opt/zimbra/zimbramon/lib/x86_64-linux-thread-multi/auto/DBI/DESTROY.al", 0x7fff5c61b490) = -1 ENOENT (No such file or directory) 12:00:38.494901 stat("/opt/zimbra/zimbramon/lib/auto/DBI/DESTROY.al", 0x7fff5c61b490) = -1 ENOENT (No such file or directory) 12:00:38.494945 stat("/opt/zimbra/zimbramon/lib/i386-linux-thread-multi/auto/DBI/DESTROY.al", 0x7fff5c61b490) = -1 ENOENT (No such file or directory) 12:00:38.494993 stat("/opt/zimbra/zimbramon/lib/i486-linux-gnu-thread-multi/auto/DBI/DESTROY.al", 0x7fff5c61b490) = -1 ENOENT (No such file or directory) 12:00:38.495038 stat("/opt/zimbra/zimbramon/lib/i586-linux-thread-multi/auto/DBI/DESTROY.al", 0x7fff5c61b490) = -1 ENOENT (No such file or directory) 12:00:38.495096 stat("/opt/zimbra/zimbramon/lib/x86_64-linux-gnu-thread-multi/auto/DBI/DESTROY.al", 0x7fff5c61b490) = -1 ENOENT (No such file or directory) 12:00:38.495150 stat("/opt/zimbra/zimbramon/lib/darwin-thread-multi-2level/auto/DBI/DESTROY.al", 0x7fff5c61b490) = -1 ENOENT (No such file or directory) 12:00:38.495195 stat("/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/auto/DBI/DESTROY.al", 0x7fff5c61b490) = -1 ENOENT (No such file or directory) 12:00:38.495246 --- SIGCHLD (Child exited) @ 0 (0) --- > Btw, don't know if it would help, but the daemonization step > can be skipped by fiddling with 'background' and 'setsid' options > in a call to Net::Server::new (see Net::Server man page): > ># set up Net::Server configuration > my($server) = Amavis->new({ > ... > background => $daemonize ? 1 : undef, > setsid => $daemonize ? 1 : undef, > > but I haven't tried it. Setting $daemonize = 0; :::: default was one allows it to run, but I'd really like to understand why it's failing to fork children happily. :/ --Quanah -- Quanah Gibson-Mount Principal Software Engineer Zimbra, Inc -------------------- Zimbra :: the leader in open source messaging and collaboration ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://sourceforge.net/services/buy/index.php _______________________________________________ AMaViS-user mailing list AMaViS-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/amavis-user AMaViS-FAQ:http://www.amavis.org/amavis-faq.php3 AMaViS-HowTos:http://www.amavis.org/howto/