Amanda-Users

Re: continuing problems - hung client, etc

2009-07-16 12:32:43
Subject: Re: continuing problems - hung client, etc
From: Jean-Louis Martineau <martineau AT zmanda DOT com>
To: Brian Cuttler <brian AT wadsworth DOT org>
Date: Thu, 16 Jul 2009 12:13:32 -0400
Can you apply the attached patch to lyra?
And run the following command on the amand server:
$ amdump curie lyra / -otapedev=/no/such/device -otpchanger=

Post the complete sendbackup.*.debug file

Jean-Louis

Brian Cuttler wrote:
Continuation of previous initiated thread.

Server, Solaris 10/x86 amanda 2.6.1p1, I believe -20090227
Client, also 2.6.1p1, Solaris 10/Sparc.

Have reduced maxdumps to 3, client still hanging...

[lyra] ~ 117> ps -ef | grep amanda
  amanda  9087  7436   0        - ?           0:00 <defunct>
  amanda  7644  7436   0        - ?           0:00 <defunct>
  amanda  8487  7436   0        - ?           0:13 <defunct>
  amanda  8304  7436   0        - ?           0:00 <defunct>
  amanda  7437  7436   0        - ?           0:04 <defunct>
  amanda  7438  7436   0        - ?           0:00 <defunct>
  amanda  8099  7436   0        - ?           0:00 <defunct>
  amanda  9086  7436   0        - ?           0:02 <defunct>
  amanda  7465  7436   0        - ?           0:00 <defunct>
  amanda  7436 15684   0 20:00:01 ?          16:56 
/usr/local/libexec/amanda/amandad
  amanda  9521  7436   0        - ?           0:00 <defunct>
   brian 12593 12573   0 09:39:24 pts/3       0:00 grep amanda
  amanda  8488  7436   0        - ?           0:00 <defunct>
  amanda 11972  7436   0        - ?           0:00 <defunct>
  amanda  8303  7436   0        - ?           0:13 <defunct>
  amanda 10597  7436   0        - ?           0:00 <defunct>
  amanda  9520  7436   0        - ?           0:04 <defunct>


Index: common-src/pipespawn.c
===================================================================
--- common-src/pipespawn.c      (revision 2050)
+++ common-src/pipespawn.c      (working copy)
@@ -199,17 +199,23 @@
         * Shift the pipes to the standard file descriptors as requested.
         */
        if(dup2(inpipe[0], 0) == -1) {
-           g_fprintf(stderr, "error [spawn %s: dup2 in: %s]", prog, 
strerror(errno));
+           struct rlimit openfile;
+           getrlimit(RLIMIT_NOFILE, &openfile);
+           g_fprintf(stderr, "error [spawn %s: dup2(%d, %d) (%d %d) in: %s]", 
prog, inpipe[0], 0, (int)openfile.rlim_cur, (int)openfile.rlim_max, 
strerror(errno));
            exit(1);
            /*NOTREACHED*/
        }
        if(dup2(outpipe[1], 1) == -1) {
-           g_fprintf(stderr, "error [spawn %s: dup2 out: %s]", prog, 
strerror(errno));
+           struct rlimit openfile;
+           getrlimit(RLIMIT_NOFILE, &openfile);
+           g_fprintf(stderr, "error [spawn %s: dup2(%d, %d) (%d %d) out: %s]", 
prog, outpipe[1], 1, (int)openfile.rlim_cur, (int)openfile.rlim_max, 
strerror(errno));
            exit(1);
            /*NOTREACHED*/
        }
        if(dup2(errpipe[1], 2) == -1) {
-           g_fprintf(stderr, "error [spawn %s: dup2 err: %s]", prog, 
strerror(errno));
+           struct rlimit openfile;
+           getrlimit(RLIMIT_NOFILE, &openfile);
+           g_fprintf(stderr, "error [spawn %s: dup2(%d, %d) (%d %d) err: %s]", 
prog, errpipe[1], 2, (int)openfile.rlim_cur, (int)openfile.rlim_max, 
strerror(errno));
            exit(1);
            /*NOTREACHED*/
        }