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*/
}
|