delorie.com/archives/browse.cgi | search |
X-Recipient: | archive-cygwin AT delorie DOT com |
DomainKey-Signature: | a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id |
:list-unsubscribe:list-subscribe:list-archive:list-post | |
:list-help:sender:mime-version:content-type | |
:content-transfer-encoding:date:from:to:subject:in-reply-to | |
:references:message-id; q=dns; s=default; b=uxPvzqxr1K4NcJeIOIad | |
/IE2/MujV3BQNfgLB0GpqGzr8XI3+llwNQWMTPthjMx7qckjaFTIfjB1obJim/TH | |
fu/bBY/Ela1eHLgwLxePJ9SEnPgYy3oZV0+ujYwjiZ3wDYhLvRhy/YZ7kTB+lxgU | |
BsuJoGXxQPkhGE8yZWMionk= | |
DKIM-Signature: | v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id |
:list-unsubscribe:list-subscribe:list-archive:list-post | |
:list-help:sender:mime-version:content-type | |
:content-transfer-encoding:date:from:to:subject:in-reply-to | |
:references:message-id; s=default; bh=tztb0MvUDHOBNtjyeddXkGg4al | |
k=; b=pAhEfe1zr3ily2v0n03qzz06C1yWwwW70KvdfHuaVVpE8BeAiLtuBABB3n | |
790v2yE7d+HBRQpvUVjFMp13c5e3YYEe8APZA7SAOngAUnFAitADdGQpYvNgnfYf | |
kB4yPhRxf1hy2VKcZ2sE8v8Zo/77rGieNzg5UknzsIpovZqnw= | |
Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
List-Id: | <cygwin.cygwin.com> |
List-Subscribe: | <mailto:cygwin-subscribe AT cygwin DOT com> |
List-Archive: | <http://sourceware.org/ml/cygwin/> |
List-Post: | <mailto:cygwin AT cygwin DOT com> |
List-Help: | <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs> |
Sender: | cygwin-owner AT cygwin DOT com |
Mail-Followup-To: | cygwin AT cygwin DOT com |
Delivered-To: | mailing list cygwin AT cygwin DOT com |
Authentication-Results: | sourceware.org; auth=none |
X-Spam-SWARE-Status: | No, score=-2.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=claim, Hx-spam-relays-external:sk:webmail, H*RU:sk:webmail, H*F:D*nl |
X-HELO: | lb1-smtp-cloud9.xs4all.net |
MIME-Version: | 1.0 |
Date: | Sat, 01 Dec 2018 09:57:15 +0100 |
From: | Houder <houder AT xs4all DOT nl> |
To: | cygwin AT cygwin DOT com |
Subject: | Re: MinTTY requires gdiplus.dll ? (2) |
In-Reply-To: | <20181130131918.GI30649@calimero.vinschen.de> |
References: | <1953c30851fd83b67ee9b162b29f4195 AT xs4all DOT nl> <20181129195845 DOT GE30649 AT calimero DOT vinschen DOT de> <4286450150901731f39f9514b8044ded AT xs4all DOT nl> <20181130131918 DOT GI30649 AT calimero DOT vinschen DOT de> |
Message-ID: | <fb45509f322f95b57ae075c05260383a@xs4all.nl> |
X-Sender: | houder AT xs4all DOT nl |
User-Agent: | XS4ALL Webmail |
X-IsSubscribed: | yes |
On 2018-11-30 14:19, Corinna Vinschen wrote: [snip] > I'm trying to avoid remote debugging so I rather try to reproduce this > @work. However, if you're interested in debugging this, set a > breakpoint to clk_monotonic_t::now() and observe how the call to the > virtual init() method hangs or crashes. If you find out why, I'd be > most grateful. Below I included parts of the diff between 1126 and 1129. You have been refactoring the code related to "timing". Above you state that the call to init() (clk_monotonic_t::init(), is my understanding) from clk_monotonic_t::now() makes the cygwin1.dll end up in "some mysterious loop" (my wording). At least on pre-W10 ... Looking at the code (trying to understand it), it appears to me that it is NOT "Windows version" dependent ... My question: why do you claim in https://cygwin.com/ml/cygwin/2018-11/msg00261.html that Windows 10 is NOT affected? Does W10 run a different "thread" in the Cygwin codebase? Regards, Henri ====== https://cygwin.com/snapshots/x86/cygwin-diffs-20181126-20181129 FILE: winsup/cygwin/clock.h: +class clk_t +{ + protected: + LONG inited; + LONGLONG ticks_per_sec; + virtual void init (); + virtual int now (clockid_t, struct timespec *) = 0 ... +class clk_monotonic_t : public clk_t +{ + protected: + virtual void init (); + private: + virtual int now (clockid_t, struct timespec *); +}; ... FILE: winsup/cygwin/clock.cc: +void +clk_t::init () +{ + spinlock spin (inited, 1); + if (!spin) + ticks_per_sec = system_tickcount_resolution (); +} + ... +void +clk_monotonic_t::init () +{ + spinlock spin (inited, 1); + if (!spin) + ticks_per_sec = system_qpc_resolution (); +} ... +int +clk_monotonic_t::now (clockid_t clockid, struct timespec *ts) +{ + if (wincap.has_precise_interrupt_time ()) + { + /* Suspend time not taken into account, as on Linux */ + ULONGLONG now; + + QueryUnbiasedInterruptTimePrecise (&now); + ts->tv_sec = now / NS100PERSEC; + now %= NS100PERSEC; + ts->tv_nsec = now * (NSPERSEC/NS100PERSEC); + } + else + { + /* https://stackoverflow.com/questions/24330496. Skip rounding since + its almost always wrong when working with timestamps */ + UINT64 bias; + LARGE_INTEGER now; + struct timespec bts; + + if (inited <= 0) + init (); // Henri: invocation of clk_monotonic_t::init() + do + { + bias = SharedUserData.InterruptTimeBias; + QueryPerformanceCounter(&now); + } + while (bias != SharedUserData.InterruptTimeBias); + /* Convert perf counter to timespec */ + ts->tv_sec = now.QuadPart / ticks_per_sec; + now.QuadPart %= ticks_per_sec; + ts->tv_nsec = (now.QuadPart * NSPERSEC) / ticks_per_sec; + /* Convert bias to timespec */ + bts.tv_sec = bias / NS100PERSEC; + bias %= NS100PERSEC; + bts.tv_nsec = bias * (NSPERSEC/NS100PERSEC); + /* Subtract bias from perf */ + ts_diff (bts, *ts); + } + return 0; +} ===== -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |