-fsanitize=address pointed out a use-after free in
objfile_register_static_link.  The bug turned out to be that
reread_symbols does not clear the static_links field; this leaves a
hash table that is filled with freed pointers.
Jan's (now quite old) idea of replacing reread_symbols with a simple
delete/new still seems good to me, and it's worth noting that it would
have avoided this bug.
Tested by the buildbot and by observing the change with
-fsanitize=address.
gdb/ChangeLog
2018-10-19  Tom Tromey  <tom@tromey.com>
	* symfile.c (reread_symbols): Clear "static_links".
+2018-10-19  Tom Tromey  <tom@tromey.com>
+
+       * symfile.c (reread_symbols): Clear "static_links".
+
 2018-10-19  Alan Hayward  <alan.hayward@arm.com>
 
        * aarch64-linux-tdep.c (AARCH64_SIGCONTEXT_RESERVED_SIZE): New
 
          objfile->psymtabs_addrmap = NULL;
          objfile->free_psymtabs = NULL;
          objfile->template_symbols = NULL;
+         objfile->static_links = NULL;
 
          /* obstack_init also initializes the obstack so it is
             empty.  We could use obstack_specify_allocation but