Subject: Re: ntpd fails on sparc64?
To: Chris Ross <cross+netbsd@distal.com>
From: john heasley <heas@shrubbery.net>
List: port-sparc64
Date: 06/28/2004 23:23:37
this is PR lib/25892. Not sure what the problem is, but it appears
to actually be occuring within the libc resolver.
you can likely work around by rolling your libc back to ~12.117 or
using addresses instead of names in your ntpd.confg.
Mon, Jun 28, 2004 at 07:18:32PM -0400, Chris Ross:
> Chris Ross wrote:
> > I'm building the current ntp (et al) in usr.sbin/ntp. I built
> >it last week, and when I noticed [while trying to run it] today
> >that it failed, I rebuilt from today's sources (for the binaries,
> >I guess I should rebuild the kernel next, but I don't remember
> >seeing any changes that I think would effect this)
> >
> > ntpd will SEGV shortly after starting. Both the older and current
> >binaries fail in the same way. I have "ca.pool.ntp.org" and
> >two "us.pool.ntp.org" "server" lines in my ntp.conf, which is
> >the default after changing commented lines in and out.
>
> I've done a little more "printf-style debugging" of this problem.
> The problem appears to be in ntpd/ntp_config.c. In the CONFIG_SERVER
> case of the main loop in the getconfig() function, it calls memset()
> on the address of a local (stack) structure. It's declared:
>
> struct sockaddr_storage peeraddr;
>
> And memset is called:
>
> istart = 1;
> memset((char *)&peeraddr, 0, sizeof(peeraddr));
>
> Immediately before those two lines (listed right above, here),
> I put:
>
> if (debug)
> printf("Initializing, NULL'ing 0x%p\n", &peeraddr);
>
> And, when it runs, right before it SEGV's, I see:
>
> Initializing, NULL'ing 0x0xffffffffffffc8d0
> zsh: segmentation fault (core dumped) ./ntpd -d
>
> So, is this a compiler/toolchain bug? Looks like it to me.
> Should I submit a pr on it? I guess I'd have to make a
> better test case. But, this sort of thing can't *always*
> be broken like this, or many more programs would be busted,
> no?
>
> Thanks. Any input welcomed...
>
> - Chris