On Fri, Jun 8, 2018 at 10:08 AM, Ed Maste <ema...@freebsd.org> wrote: > On 7 June 2018 at 16:49, Kirk McKusick <mckus...@freebsd.org> wrote: >> Author: mckusick >> Date: Thu Jun 7 20:49:01 2018 >> New Revision: 334814 >> URL: https://svnweb.freebsd.org/changeset/base/334814 >> >> Log: >> Ensure proper initialization of superblock. >> > ... >> --- head/sbin/dump/main.c Thu Jun 7 19:57:55 2018 (r334813) >> +++ head/sbin/dump/main.c Thu Jun 7 20:49:01 2018 (r334814) >> @@ -433,6 +433,7 @@ main(int argc, char *argv[]) >> msgtail("to %s\n", tape); >> >> sync(); >> + sblock = NULL; >> if ((ret = sbget(diskfd, &sblock, -1)) != 0) { > > sblock is initialized to NULL at the beginning of ffs_sbget, so I'm > not really sure what's happening here. >
Diane just found possibly the real cause of the problem. dump.h is included by almost every .c file, but defines variables, doesn't just declare them. I think the real solution would be to define them in main.c, or somewhere else, and just declare them in dump.h. Or if they're truly only needed on a per-file basis, not as globals, they could be marked static so there is no chance of conflict, and they're pre-initialized to 0. The linker "might" merge them into the common section, or might not, resulting in bizarre conflicts like what she's seeing. Though, I'm surprised we're not seeing a linker error or warning anyway. - Justin _______________________________________________ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"