* Jean-Louis Martineau <jmartin...@carbonite.com> [20170210 11:10]: > valgrind is a useful tool to find memory corruption. > > Try the attached patch.
Thanks Jean-Louis. I'll try as soon as the server finishes a flush run. Should take a few more hours to complete. Thanks, jf > > Jean-Louis > > On 10/02/17 09:35 AM, Jean-Francois Malouin wrote: > > * Jean-Louis Martineau <jmartin...@carbonite.com> [20170210 07:54]: > >> Jean-Francois, > >> > >> I was not able to find the problem with the stacktrace. > >> > >> Do you have valgrind installed on your system?, if yes, can you run the > >> following command: > >> G_DEBUG=gc-friendly G_SLICE=always-malloc valgrind --trace-children=yes > >> --log-file=valgrind.amtape.output --leak-check=full > >> --leak-resolution=high --track-origins=yes amadmin top tape > >> > >> And send me the resulting valgrind.amtape.output file. > > The output from valgrind file is attached. > > > > cheers, > > jf > > > >> Jean-Louis > >> > >> On 09/02/17 02:19 PM, Jean-Francois Malouin wrote: > >>> * Jean-Louis Martineau <jmartin...@carbonite.com> [20170209 14:09]: > >>>> Jean-Francois, > >>>> > >>>> Can you run amadmin in gdb and get a stacktrace? > >>>> > >>>> $ gdb ~amanda/sbin/amadmin > >>>> (gdb) run top tape > >>>> (gdb) bt > >>>> (gdb) quit > >>>> > >>>> Jean-Louis > >>> Here you go: > >>> > >>> amanda@dow:~$ gdb ~amanda/sbin/amadmin > >>> GNU gdb (Debian 7.7.1+dfsg-5) 7.7.1 > >>> Copyright (C) 2014 Free Software Foundation, Inc. > >>> License GPLv3+: GNU GPL version 3 or later > >>> <http://gnu.org/licenses/gpl.html> > >>> This is free software: you are free to change and redistribute it. > >>> There is NO WARRANTY, to the extent permitted by law. Type "show copying" > >>> and "show warranty" for details. > >>> This GDB was configured as "x86_64-linux-gnu". > >>> Type "show configuration" for configuration details. > >>> For bug reporting instructions, please see: > >>> <http://www.gnu.org/software/gdb/bugs/>. > >>> Find the GDB manual and other documentation resources online at: > >>> <http://www.gnu.org/software/gdb/documentation/>. > >>> For help, type "help". > >>> Type "apropos word" to search for commands related to "word"... > >>> Reading symbols from /opt/amanda/sbin/amadmin...(no debugging symbols > >>> found)...done. > >>> (gdb) run top tape > >>> Starting program: /opt/amanda-3.4.2/sbin/amadmin top tape > >>> [Thread debugging using libthread_db enabled] > >>> Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". > >>> The next Amanda should go onto 3 new tapes. > >>> *** Error in `/opt/amanda-3.4.2/sbin/amadmin': corrupted double-linked > >>> list: 0x00000000006f4710 *** > >>> The next 3 new tapes already labelled are: NEO-T48-B00022, > >>> NEO-T48-B00023, NEO-T48-B00024 > >>> Program received signal SIGABRT, Aborted. > >>> 0x00007ffff50ee067 in __GI_raise (sig=sig@entry=6) at > >>> ../nptl/sysdeps/unix/sysv/linux/raise.c:56 > >>> 56 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory. > >>> (gdb) bt > >>> #0 0x00007ffff50ee067 in __GI_raise (sig=sig@entry=6) at > >>> ../nptl/sysdeps/unix/sysv/linux/raise.c:56 > >>> #1 0x00007ffff50ef448 in __GI_abort () at abort.c:89 > >>> #2 0x00007ffff512c1b4 in __libc_message (do_abort=do_abort@entry=1, > >>> fmt=fmt@entry=0x7ffff5221210 "*** Error in `%s': %s: 0x%s ***\n") at > >>> ../sysdeps/posix/libc_fatal.c:175 > >>> #3 0x00007ffff513198e in malloc_printerr (action=1, str=0x7ffff521d2ec > >>> "corrupted double-linked list", ptr=<optimized out>) at malloc.c:4996 > >>> #4 0x00007ffff5131c4c in malloc_consolidate (av=av@entry=0x7ffff545e620 > >>> <main_arena>) at malloc.c:4165 > >>> #5 0x00007ffff5132e98 in _int_malloc (av=0x7ffff545e620 <main_arena>, > >>> bytes=32816) at malloc.c:3423 > >>> #6 0x00007ffff5135020 in __GI___libc_malloc (bytes=32816) at > >>> malloc.c:2891 > >>> #7 0x00007ffff516ee31 in __alloc_dir (fd=3, close_fd=<optimized out>, > >>> flags=<optimized out>, statp=<optimized out>) at > >>> ../sysdeps/posix/opendir.c:207 > >>> #8 0x00007ffff74a5d19 in debug_unlink_old () from > >>> /opt/amanda/lib/amanda/libamanda-3.4.2.so > >>> #9 0x00007ffff74a6cf2 in debug_close () from > >>> /opt/amanda/lib/amanda/libamanda-3.4.2.so > >>> #10 0x00000000004038b7 in main () > >>> (gdb) quit > >>> A debugging session is active. > >>> > >>> Inferior 1 [process 4173] will be killed. > >>> > >>> Quit anyway? (y or n) y > >>> > >>> cheers, > >>> jf > >>> > >>>> On 09/02/17 01:56 PM, Jean-Francois Malouin wrote: > >>>>> * Stefan G. Weichinger <s...@amanda.org> [20170209 13:36]: > >>>>>> Does anyone use amanda 3.4.2 packages on debian jessie already? > >>>>>> Which one, do they work? > >>>>> I only see amanda 3.3.6 on Debian/Jessie stable repos at the moment: > >>>>> > >>>>> Inst amanda-common (1:3.3.6-4 Debian:8.7/stable [amd64]) > >>>>> Inst amanda-server (1:3.3.6-4 Debian:8.7/stable [amd64]) > >>>>> Inst amanda-client (1:3.3.6-4 Debian:8.7/stable [amd64]) > >>>>> > >>>>> I've been running a self-compiled amanda-3.4.1 on a Jessie host for a > >>>>> month now with little problems so far, except this > >>>>> > >>>>> :~# su amanda -c "~amanda/sbin/amadmin top tape" > >>>>> The next Amanda should go onto 3 new tapes. > >>>>> *** Error in `/opt/amanda/sbin/amadmin': corrupted double-linked list: > >>>>> 0x0000000001153710 *** > >>>>> The next 3 new tapes already labelled are: NEO-T48-B00022, > >>>>> NEO-T48-B00023, NEO-T48-B00024 > >>>>> > >>>>> I have seen this on 3.4.1 and 3.4.2 (I just upgraded). > >>>>> > >>>>> cheers, > >>>>> jf > >>>>> > >>>>> > >>>>>> I have to switch OS on a backup server and want to stay with > >>>>>> amanda-3.4.x because I need some of the latest features ... > >>>>>> > >>>>>> self-compile, you know ... I can do but I'd like to avoid. > >>>>>> lower maintenance. > diff --git a/server-src/amadmin.c b/server-src/amadmin.c > index 4c25e87..3653bab 100644 > --- a/server-src/amadmin.c > +++ b/server-src/amadmin.c > @@ -774,16 +774,13 @@ tape( > } > if (c == 1) { > printf("The next new tape already labelled is: %s.", *tapes); > - g_free(*tapes); > } else { > printf("The next %d new tapes already labelled are: %s", > c, *tapes); > - g_free(*tapes); > tape = tapes; > tape++; > while (*tape != NULL) { > printf(", %s", *tape); > - g_free(*tape); > tape++; > } > } -- Jean-Francois Malouin | IT Operations and Infrastructure McConnell Brain Imaging Centre | MNI | McGill University