From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 26016 invoked from network); 30 Oct 2021 01:01:01 -0000 Received: from mother.openwall.net (195.42.179.200) by inbox.vuxu.org with ESMTPUTF8; 30 Oct 2021 01:01:01 -0000 Received: (qmail 1191 invoked by uid 550); 30 Oct 2021 01:00:59 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 1156 invoked from network); 30 Oct 2021 01:00:57 -0000 Date: Fri, 29 Oct 2021 21:00:43 -0400 From: Rich Felker To: musl@lists.openwall.com, Szabolcs Nagy , =?utf-8?B?w4lyaWNv?= Nogueira Message-ID: <20211030010040.GZ7074@brightrain.aerifal.cx> References: <20211029210445.GT37904@port70.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Subject: Re: [musl] Re: freeswitch and musl 1.2.x (time64 most likely) On Sat, Oct 30, 2021 at 12:44:05AM +0200, Sebastian Kemper wrote: > Am Fri, Oct 29, 2021 at 11:04:45PM +0200 schrieb Szabolcs Nagy: > > * Sebastian Kemper [2021-10-29 16:40:02 +0200]: > > > (gdb) p current > > > $1 = 193277741781 > > > (gdb) p ¤t > > > $2 = (apr_time_t *) 0x7fffac90 > > > (gdb) p os_now > > > $3 = 19521141760827868 > > > (gdb) p &os_now > > > $4 = (time_t *) 0x7fffac88 > > > (gdb) p timediff > > > $5 = 19521141756395521 > > > > these values are completely wrong (may be not set up yet, > > you cannot rely on line numbers in optimized code) > > > > time on your system now should be around > > > > 1635500000 > > > > current / 1000000 is > > > > 193277 > > > > which is 1970-01-03 05:41:17 > > > > os_now is far in the future. > > > > Hello Szabolcs, > > I changed the test program a little bit: > > --- a/test/testtime.c > +++ b/test/testtime.c > @@ -21,6 +21,7 @@ > #include "testutil.h" > #include "apr_strings.h" > #include > +#include > > #define STR_SIZE 45 > > @@ -57,6 +58,7 @@ static void test_now(abts_case *tc, void > apr_time_t timediff; > apr_time_t current; > time_t os_now; > + struct tm * timeinfo; > > current = apr_time_now(); > time(&os_now); > @@ -66,6 +68,10 @@ static void test_now(abts_case *tc, void > * that the time will be slightly off, so accept anything between -1 and > * 1 second. > */ > + timeinfo = localtime ( &os_now ); > + printf ( "Current local time and date: %s - %lld seconds since epoch\n", asctime (timeinfo), os_now); > + timeinfo = localtime ( ¤t ); > + printf ( "Current APR time and date: %s - %lld seconds since epoch\n", asctime (timeinfo), current); > ABTS_ASSERT(tc, "apr_time and OS time do not agree", > (timediff > -2) && (timediff < 2)); > } > > The output is: > > Current local time and date: Sat Oct 30 00:25:11 2021 - 7024617916842658549 seconds since epoch > Current APR time and date: Mon Jan 5 10:46:45 1970 - 1635546302107561 seconds since epoch > |Line 76: apr_time and OS time do not agree > > (gdb) b time > Breakpoint 1 at 0x77fd0b08: file compat/time32/time32.c, line 7. > (gdb) b gettimeofday > Breakpoint 2 at 0x77fcff6c: file compat/time32/gettimeofday_time32.c, line 7. > (gdb) b apr_time_now > Function "apr_time_now" not defined. > Make breakpoint pending on future shared library load? (y or [n]) y > Breakpoint 3 (apr_time_now) pending. > (gdb) c > Continuing. > > Breakpoint 1, time (p=0x7fffac90) at compat/time32/time32.c:7 > 7 { > (gdb) next > 8 time_t t = time(0); > (gdb) > 9 if (t < INT32_MIN || t > INT32_MAX) { > (gdb) > 13 if (p) *p = t; > (gdb) > 14 return t; > (gdb) > test_now (tc=0x7fffacd0, data=0x0) at testtime.c:66 > 66 timediff = os_now - (current / APR_USEC_PER_SEC); > (gdb) p os_now > $1 = 7024617916842658549 > (gdb) p current > $2 = 1635546302107561 > (gdb) p APR_USEC_PER_SEC > $3 = 1000000 > (gdb) c > Continuing. > [Inferior 1 (process 15506) exited with code 01] This function should not be being called. It's only for ABI-compat with old time32 binaries. > So OS time is correct. Something not working right with apr. Likely it is doing something bad bypassing the system headers and declaring gettimeofday (wrongly) itself... Rich