Port-sparc archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: ntpd wedged by libc?



On Mar 7,  5:14pm, hart%ntp.org@localhost (Dave Hart) wrote:
-- Subject: Re: ntpd wedged by libc?

| On Wed, Mar 7, 2012 at 12:08, Christos Zoulas <christos%zoulas.com@localhost> 
wrote:
| > On Mar 7, 12:08am, agcarver+netbsd%acarver.net@localhost (AGC) wrote:
| > -- Subject: Re: ntpd wedged by libc?
| >
| > | I ran the test with both %.6f and stepped it up even further all the wa=
| y
| > | to %.10f with no ill effects. =A0The test passed all the extra precisio=
| n
| > | formats:
| >
| > Comment out the sprintf in ntpd or replace it with something else and see
| > if it survives...
| 
| I'm pretty sure it will.  Before the libc repair, AGC found he could
| work around the problem by configuring ntpd 4.2.7 with
| --enable-C99-snprintf, which forces use of a handrolled
| printf/snprintf/vsnprintf replacement package otherwise used only if
| the default snprintf is not C99-compliant.  That implementation does
| not use dtoa() and he found ntpd survived indefinitely.
| 
| The key difference between ntpd's use of snprintf and t_printf.c may
| be simply the number of calls over time from the same process.  AGC is
| polling ntpd every 5 seconds with ntpq -p, which triggers about 7
| floating point snprintf()s per peer (line of the ntpq -p peers
| billboard table).  I believe all of those are using "%.3f".
| 
| You might be able to expose the bug with t_printf.c by changing it to
| generate and snprintf thousands of random floating point numbers.
| 
That is what t_printf does... One million snprintf random numbers. Another
thing to do is to run top while it is running to see if it grows...

christos


Home | Main Index | Thread Index | Old Index