On 07/06/17 10:53 AM, Stefan G. Weichinger wrote:
Am 2017-06-07 um 16:46 schrieb Jean-Louis Martineau:
> On 07/06/17 10:43 AM, Stefan G. Weichinger wrote:
>> Am 2017-06-07 um 14:08 schrieb Jean-Louis Martineau:
>>
>> > And please, learn to send good bug report, just telling a process
loop
>> > is not enough.It
<http://enough.It>
<http://enough.It
<http://enough.It>> is
always better to send more
>> information that nothing.
>>
>> sure ... sorry
>>
>> > Don't ask what to send, send the most information you can, if
something
>> > is missing, I will ask for.
>> >
>> > You said the planner is looping, why not send the planner debug file,
>> > that is the minimum.
>> > An strace of the planner process
>> > A gdb stacktrace of all threads.
>> > The amdump (or amdump.1) log file.
>> > As the loop in the planner can be triggered by a bug in another
process,
>> > all error you get from any other processes.
>>
>> pls advise on how to gdb planner or "all threads"
>
> In gdb: thread apply all bt
did
gdp -p $PID_of_planner
(gdb) thread apply all bt
Thread 1 (Thread 0xb7052700 (LWP 32123)):
#0 0xb7462d32 in _IO_vfscanf () from /lib/libc.so.6
#1 0xb747310b in vsscanf () from /lib/libc.so.6
#2 0xb746df24 in sscanf () from /lib/libc.so.6
#3 0xb77c2e61 in get_info () from /usr/lib/amanda/libamserver-3.4.4.so
#4 0x08050ec7 in delay_dumps ()
#5 0x0804c39a in main ()
(gdb) bt
#0 0xb7462d32 in _IO_vfscanf () from /lib/libc.so.6
#1 0xb747310b in vsscanf () from /lib/libc.so.6
#2 0xb746df24 in sscanf () from /lib/libc.so.6
#3 0xb77c2e61 in get_info () from /usr/lib/amanda/libamserver-3.4.4.so
#4 0x08050ec7 in delay_dumps ()
#5 0x0804c39a in main ()
Does *that* help ?
Yes, I know it loop in delay_dumps or get_info.
Can you apply the attached patch and retry a dump?
Send me the resulting planner debug file.
Jean-Louis
This message is the property of CARBONITE, INC. and may contain confidential or
privileged information.
If this message has been delivered to you by mistake, then do not copy or
deliver this message to anyone. Instead, destroy it and notify me by reply
e-mail
diff --git a/server-src/infofile.c b/server-src/infofile.c
index 0103191..4adb53f 100644
--- a/server-src/infofile.c
+++ b/server-src/infofile.c
@@ -621,6 +621,7 @@ get_info(
{
int rc;
+g_debug("enter get_info");
(void) zero_info(info);
{
@@ -638,6 +639,7 @@ get_info(
}
}
+g_debug("leave get_info");
return rc;
}
diff --git a/server-src/planner.c b/server-src/planner.c
index 4d2b55b..4194a8a 100644
--- a/server-src/planner.c
+++ b/server-src/planner.c
@@ -2789,6 +2789,7 @@ static void delay_dumps(void)
biq.head = biq.tail = NULL;
+g_debug("enter delay_dumps");
/*
** 1. Delay dumps that are way oversize.
**
@@ -2868,6 +2869,7 @@ static void delay_dumps(void)
"), ", message, NULL);
}
+g_debug("delay_dumps 2");
/*
** 2. Delay total dumps.
**
@@ -2900,23 +2902,28 @@ static void delay_dumps(void)
}
}
+g_debug("delay_dumps 2.a");
/* 2.a. Do not delay forced full */
delayed_ep = NULL;
delayed_dp = NULL;
do {
+g_debug("delay_dumps 2.a1");
delayed_ep = NULL;
delayed_dp = NULL;
timestamps = 0;
for (elist = schedq.tail;
elist != NULL && total_size > tape_length;
elist = elist_prev) {
+g_debug("delay_dumps 2.a1a");
elist_prev = elist->prev;
ep = get_est(elist);
dp = ep->disk;
if(ep->dump_est->level != 0) continue;
+g_debug("delay_dumps 2.a1b");
get_info(dp->host->hostname, dp->name, &info);
+g_debug("delay_dumps 2.a1c");
if(ISSET(info.command, FORCE_FULL)) {
nb_forced_level_0 += 1;
preserve_ep = ep;
@@ -2930,6 +2937,7 @@ static void delay_dumps(void)
timestamps = ep->info->inf[0].date;
}
}
+g_debug("delay_dumps 2.a2");
if (delayed_ep) {
/* Format dumpsize for messages */
g_snprintf(est_kb, 20, "%lld KB,",
@@ -2954,8 +2962,10 @@ static void delay_dumps(void)
delay_one_dump(delayed_ep, delete, _("dumps too big,"), est_kb,
message, NULL);
}
+g_debug("delay_dumps 2.a3");
} while (delayed_ep);
+g_debug("delay_dumps 2.b");
/* 2.b. Delay forced full if needed */
if(nb_forced_level_0 > 0 && total_size > tape_length) {
for (elist = schedq.tail;