From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dedi548.your-server.de (dedi548.your-server.de [85.10.215.148]) by sourceware.org (Postfix) with ESMTPS id B89593834F39; Wed, 22 Jun 2022 08:55:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B89593834F39 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=embedded-brains.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=embedded-brains.de Received: from sslproxy02.your-server.de ([78.47.166.47]) by dedi548.your-server.de with esmtpsa (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1o3w93-000403-Oe; Wed, 22 Jun 2022 10:55:30 +0200 Received: from [82.100.198.138] (helo=mail.embedded-brains.de) by sslproxy02.your-server.de with esmtpsa (TLSv1.3:TLS_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o3w93-000PFV-Us; Wed, 22 Jun 2022 10:55:29 +0200 Received: from localhost (localhost [127.0.0.1]) by mail.embedded-brains.de (Postfix) with ESMTP id A102E480056; Wed, 22 Jun 2022 10:55:29 +0200 (CEST) Received: from mail.embedded-brains.de ([127.0.0.1]) by localhost (zimbra.eb.localhost [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id BCvgfc9jDQ0C; Wed, 22 Jun 2022 10:55:29 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by mail.embedded-brains.de (Postfix) with ESMTP id 50B9F4800C0; Wed, 22 Jun 2022 10:55:29 +0200 (CEST) X-Virus-Scanned: amavisd-new at zimbra.eb.localhost Received: from mail.embedded-brains.de ([127.0.0.1]) by localhost (zimbra.eb.localhost [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id MwwC36oejegp; Wed, 22 Jun 2022 10:55:29 +0200 (CEST) Received: from [10.10.171.14] (unknown [10.10.171.14]) by mail.embedded-brains.de (Postfix) with ESMTPSA id 069E3480056; Wed, 22 Jun 2022 10:55:28 +0200 (CEST) Message-ID: <695d0ddd-35a9-86de-7ce2-4ba64c47379e@embedded-brains.de> Date: Wed, 22 Jun 2022 10:55:27 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.10.0 Subject: Re: [PATCH] libstdc++: 60241.cc: tolerate slightly shorter aggregate sleep Content-Language: en-US From: Sebastian Huber To: Alexandre Oliva , gcc-patches@gcc.gnu.org, libstdc++@gcc.gnu.org, RTEMS References: <9feeef3a-105b-ba95-3327-8a15320ec215@embedded-brains.de> In-Reply-To: <9feeef3a-105b-ba95-3327-8a15320ec215@embedded-brains.de> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Authenticated-Sender: smtp-embedded@poldinet.de X-Virus-Scanned: Clear (ClamAV 0.103.6/26580/Wed Jun 22 10:06:47 2022) X-Spam-Status: No, score=-10.0 required=5.0 tests=BAYES_00, BODY_8BITS, GIT_PATCH_0, KAM_DMARC_STATUS, NICE_REPLY_A, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libstdc++@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libstdc++ mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 22 Jun 2022 08:55:34 -0000 On 22/06/2022 08:22, Sebastian Huber wrote: > On 22/06/2022 08:01, Alexandre Oliva via Gcc-patches wrote: >> >> On rtems under qemu, the frequently-interrupted nanosleep ends up >> sleeping shorter than expected, by a margin of less than 0,3%. >> >> I figured failing the library test over a system (emulator?) bug is >> undesirable, so I put in some tolerance for the drift. >> >> Regstrapped on x86_64-linux-gnu, also tested with a cross to >> aarch64-rtems6.=C2=A0 Ok to install? >> >> PS: I see nothing wrong with the implementation of clock_nanosleep (us= ed >> by nanosleep) on rtems6 that could cause it to wake up too early.=C2=A0= I >> suspect some artifact of the emulation environment. >> >> >> for=C2=A0 libstdc++-v3/ChangeLog >> >> =C2=A0=C2=A0=C2=A0=C2=A0* testsuite/30_threads/this_thread/60421.cc: T= olerate a >> =C2=A0=C2=A0=C2=A0=C2=A0slightly early wakeup. >> --- >> =C2=A0 .../testsuite/30_threads/this_thread/60421.cc=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 |=C2=A0=C2=A0=C2=A0 3 ++- >> =C2=A0 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/libstdc++-v3/testsuite/30_threads/this_thread/60421.cc=20 >> b/libstdc++-v3/testsuite/30_threads/this_thread/60421.cc >> index 12dbeba1cc492..f3a5af453c4ad 100644 >> --- a/libstdc++-v3/testsuite/30_threads/this_thread/60421.cc >> +++ b/libstdc++-v3/testsuite/30_threads/this_thread/60421.cc >> @@ -51,9 +51,10 @@ test02() >> =C2=A0=C2=A0=C2=A0 std::thread t([&result, &sleeping] { >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 auto start =3D std::chrono::system_cloc= k::now(); >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 auto time =3D std::chrono::seconds(3); >> +=C2=A0=C2=A0=C2=A0 auto tolerance =3D std::chrono::milliseconds(10); >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 sleeping =3D true; >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 std::this_thread::sleep_for(time); >> -=C2=A0=C2=A0=C2=A0 result =3D std::chrono::system_clock::now() >=3D (= start + time); >> +=C2=A0=C2=A0=C2=A0 result =3D std::chrono::system_clock::now() + tole= rance >=3D (start +=20 >> time); >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 sleeping =3D false; >> =C2=A0=C2=A0=C2=A0 }); >> =C2=A0=C2=A0=C2=A0 while (!sleeping) >=20 > This looks like a bug in RTEMS or the BSP for the test platform. I woul= d=20 > first investigate this and then change the test which looks all right t= o=20 > me. This is a problem in RTEMS. RTEMS uses the FreeBSD timecounters to=20 maintain CLOCK_REALTIME and provides two methods to get the time in a=20 coarse and fine resolution. The std::chrono::system_clock::now() uses=20 the fine resolution (higher overhead). The clock_nanosleep() uses the=20 coarse resolution which may give a time before now(). --=20 embedded brains GmbH Herr Sebastian HUBER Dornierstr. 4 82178 Puchheim Germany email: sebastian.huber@embedded-brains.de phone: +49-89-18 94 741 - 16 fax: +49-89-18 94 741 - 08 Registergericht: Amtsgericht M=C3=BCnchen Registernummer: HRB 157899 Vertretungsberechtigte Gesch=C3=A4ftsf=C3=BChrer: Peter Rasmussen, Thomas= D=C3=B6rfler Unsere Datenschutzerkl=C3=A4rung finden Sie hier: https://embedded-brains.de/datenschutzerklaerung/