Re: [chrony-users] Chronyd unexpected abort after server was set to "online"

[ Thread Index | Date Index | More chrony.tuxfamily.org/chrony-users Archives ]


.... but (surpringsingly):

#include <stdio.h>

int main(int argc, char **argv) {
        double x = argc - 1;
        printf("%e %d %d\n", x, x >= 0.0, x == 0.0);
        x = -x;
        printf("%e %d %d\n", x, x >= 0.0, x == 0.0);

        return 0;
}

prints:

~ # /usr/bin/numerik-test
0.000000e+00 1 1
-0.000000e+00 0 1
~ #

Am 16.06.2014 15:31, schrieb Miroslav Lichvar:
> On Mon, Jun 16, 2014 at 02:38:22PM +0200, Arndt Kritzner wrote:
>> Miroslav, thanks for your quick answer. With your suggested modifications applied I get this log output:
>>
>> ~ # chronyd -d -d
>> main.c:355:(main)[16-12:44:24] chronyd version 1.29.1 starting
>> sys_linux.c:1022:(get_version_specific_details)[16-12:44:25] Linux kernel major=3 minor=4 patch=93
>> sys_linux.c:1080:(get_version_specific_details)[16-12:44:25] hz=100 shift_hz=7 freq_scale=1.00000000 nominal_tick=10000
>> slew_delta_tick=833 max_tick_bias=1000 shift_pll=2
>> reference.c:194:(REF_Initialise)[16-12:44:25] Initial frequency -83300.000 ppm
>> acquire.c:699:(process_measurements)[16-12:44:25] System's initial offset : 946.636438 seconds fast of true (step)
>> ntp_core.c:1575:(NCR_TakeSourceOnline)[16-12:31:14] Source 148.251.9.60 online
>> sourcestats.c:345:(find_best_sample_index)[16-12:31:15] n=1 i=0 best=-1 elapsed=-0.000000e+00
>> chronyd: sourcestats.c: 346: find_best_sample_index: Assertion `elapsed >= 0.0' failed.
>> Aborted
> 
> Hm, negative zero should be equal to positive zero. This looks like a
> bug in the floating point implementation. I'm not familiar with AVR32,
> does it have a HW implementation or is it emulated?
> 
> To make sure this is really the case and not some kind of numerical problem,
> can you please compile and run the following program?
> 
> #include <stdio.h>                                                                                                                                     
> 
> int main(int argc, char **argv) {
>         double x = argc - 1;
>         printf("%e %d\n", x, x >= 0.0);
>         x = -x;
>         printf("%e %d\n", x, x >= 0.0);
> 
>         return 0;
> }
> 
> Here, it prints this:
> 0.000000e+00 0x0p+0 1
> -0.000000e+00 -0x0p+0 1
> 
> Thanks,
> 

-- 

--
###############################################################
Dipl. Ing Arndt Kritzner    Tel:    (0385) 3993 448
Logic Way GmbH              Fax:    (0385) 3993 458
Hagenower Strasse 73        HTTP:   http://www.logicway.de
19061 Schwerin              email:  mailto:kritzner@xxxxxxxxxxx
###############################################################

-- 
To unsubscribe email chrony-users-request@xxxxxxxxxxxxxxxxxxxx 
with "unsubscribe" in the subject.
For help email chrony-users-request@xxxxxxxxxxxxxxxxxxxx 
with "help" in the subject.
Trouble?  Email listmaster@xxxxxxxxxxxxxxxxxxxx.


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/