delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2020/09/01/16:30:14

X-Recipient: archive-cygwin AT delorie DOT com
DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 048983870890
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com;
s=default; t=1598992170;
bh=BF/Mq1IvJB3R5B6LDW+7tiVRUbnOCsPOiRKXrMH7mrI=;
h=References:In-Reply-To:Date:Subject:To:List-Id:List-Unsubscribe:
List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:
From;
b=iWfc0vPPMkK4OrX1oCV8RimpVdc4cYD7XCXwyTvPNKtpG9aqDwC9qSbWdm2zIa1LY
GzDsSkS+6R0mEsuprSTsn5py/8Fnui3YkDEQ+8/dreWQ0B3JH0a2SeiK99Iy/wXGA8
XPNLrUFqLZ1GOrcRv/dHTEDeVxMVGfCkXUEmH8XY=
X-Original-To: cygwin AT cygwin DOT com
Delivered-To: cygwin AT cygwin DOT com
DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 62FF9393C858
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20161025;
h=x-gm-message-state:mime-version:references:in-reply-to:from:date
:message-id:subject:to;
bh=PDP4pmxkaPhfXB724noXdo4YgBDiFN7S5h6o0fXRsgE=;
b=hG/gxTYPTOF7Kh4fEZHJQhaSiOIZlVcGShoVItlJrxHd/rEMG3qnna8m7u/BjoF8R8
AXVgGaUyyHQWDrB+9Ud6mFgTwuoRJlv55/MzJIhvDlkPF/61FgrrNfHFCEP7Y4pDTdMx
Awb2pMb61KV/DPlGJSzdTd3JQRNa0i2KPv3JFl+9yojUHXZQuZq6VARcHDcHlGX0c/5w
1rkItfk+ELgrjdQQCDzRFRcodJ2/FDMMFz22Gl+PVi+89p23uA9pTVPwVfyNVqb23TCB
BoVbnjjYsXxiAPoVdIZd/ek1zvPdN5dkdquXWWF5afdlRo5DV3jp0oZMuRbX2+F6zCYr
Ucig==
X-Gm-Message-State: AOAM531Jr9N5Sxg5ySxdag6rnNVhBEu2mBz3GHP/fsW/J7EGbHYNkT4d
eEcXtIcxv+H6qJm81MYw0tbo/7EvM8VGMVNiW9pD3uVIEz0=
X-Google-Smtp-Source: ABdhPJyRAMNFHfgFpXZajXx+EAti8YhEadtR2yZbFUV2DRmT5JZvLJr+pourd9UcWeguVQUL+CLwWqNb34RmelETkhI=
X-Received: by 2002:aca:a88e:: with SMTP id r136mr2203249oie.13.1598992165560;
Tue, 01 Sep 2020 13:29:25 -0700 (PDT)
MIME-Version: 1.0
References: <CAHybJinLYpcviSFiJ=V-EZqoatEzjFfr9DOUzxzmofUmtwMS+w AT mail DOT gmail DOT com>
<c9792fdc-aedc-6934-e11f-732f841b533b AT SystematicSw DOT ab DOT ca>
<CAHybJi=+uKitmwhWfuc564xz6qxZF+H=rA87LaB1NBJPkBAsUA AT mail DOT gmail DOT com>
<1464bc69-4dd5-b63d-d1b9-048b52fe036e AT towo DOT net>
<dd9d0748-4113-1b88-866c-abcb123e7f27 AT SystematicSw DOT ab DOT ca>
In-Reply-To: <dd9d0748-4113-1b88-866c-abcb123e7f27@SystematicSw.ab.ca>
Date: Tue, 1 Sep 2020 13:29:12 -0700
Message-ID: <CAHybJikqf2HdOMAfyN0fgNXcNMLWR=5UX_A5yv7cd-mXDgKwCQ@mail.gmail.com>
Subject: Re: cygwin qsort erratic
To: cygwin AT cygwin DOT com
X-Spam-Status: No, score=1.8 required=5.0 tests=BAYES_00, COVID_BODY,
DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF,
FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, HTML_MESSAGE, RCVD_IN_DNSWL_NONE,
SPF_HELO_NONE, SPF_PASS, TXREP autolearn=no autolearn_force=no version=3.4.2
X-Spam-Level: *
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on
server2.sourceware.org
X-Content-Filtered-By: Mailman/MimeDel 2.1.29
X-BeenThere: cygwin AT cygwin DOT com
X-Mailman-Version: 2.1.29
List-Id: General Cygwin discussions and problem reports <cygwin.cygwin.com>
List-Archive: <https://cygwin.com/pipermail/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-request AT cygwin DOT com?subject=help>
List-Subscribe: <https://cygwin.com/mailman/listinfo/cygwin>,
<mailto:cygwin-request AT cygwin DOT com?subject=subscribe>
From: Kurt-Karen Carlson-Lougheed via Cygwin <cygwin AT cygwin DOT com>
Reply-To: Kurt-Karen Carlson-Lougheed <denalisun907 AT gmail DOT com>
Sender: "Cygwin" <cygwin-bounces AT cygwin DOT com>

--00000000000007246505ae466048
Content-Type: text/plain; charset="UTF-8"

  Brian:
1. The Qsort() source I sent was from netbsd.org, NOT cygwin. netbsd works.
2. Complete package is on SourceForge as uac19 v3.3. I'm happy to send a
tgz if you prefer that. Read 3 choices at end before considering this.
3. Data is curl'd from owid as shown in the script example. Likewise I can
send a sample data set. The program analyzes COVID-19 csv files from either
owid or github/nytimes
4. I've used qsort() for years. I agree, keeping the sort routines simple
is always appropriate. I confirmed today the only ones that fail include
float divides, lDsort() and lXsort() in attached c19sort.c. When it's
pre-calculated and added to the struct it works, the code has a toggle now
for testing that.

Thomas:
I tried (again) today  to build a simple test case. The data structures in
use are complex, probably the only thing I can attempt is stripping down
the code which will be very time consuming. I know you don't know me at
all, but I've written code, debugged proprietary operating systems
(assembler), performed OS dump analysis, troubleshot intermittent hardware
issues, identified disk firmware issues causing intermittent data
corruption, identified nfs performance issues, managed large hpc clusters,
etc. etc. etc. over 40+ years.

I see three choices:
A. One of you look at simple the qqsort wrapper. I modified my code to
toggle between the functional netbsd Qsort() and cygwin qsort(). I have
demonstrated erroneous results coming from the cygwin version in a small
percentage of requests. If you can acknowledge that, perhaps you can check
the cygwin version of qsort() vs. the current netbsd.org?
B. If you could kindly provide me or point me to the cygwin qsort() source
I'll check it out myself.
C. We can thank each other and leave cygwin's qsort() as is broken in some
small number of circumstances since I've compiled netbsd's into my code and
that always works.

Regards, kurt

On Mon, Aug 31, 2020 at 11:50 AM Brian Inglis <
Brian DOT Inglis AT systematicsw DOT ab DOT ca> wrote:

> On 2020-08-31 12:00, Thomas Wolff wrote:
> > Am 31.08.2020 um 19:50 schrieb Kurt-Karen Carlson-Lougheed via Cygwin:
> >> On Sun, Aug 30, 2020 at 7:55 PM Brian Inglis wrote:
> >>> On 2020-08-30 15:27, Kurt-Karen Carlson-Lougheed via Cygwin wrote:
> >>>> In a small percentage of qsort requests, the results are erratic.
> Running
> >>>> the same code under Linux (RHEL7) does NOT have this problem. I
> updated
> >>> my
> >>>> cygwin to current and the problem persists. I copied the latest
> >>> netbsd.org
> >>>> qsort.c and compiled into my code, the problem is resolved with that
> >>>> version of qsort.
> >>>>
> >>>> In researching this issue, there was a post to this list 2015-01-11
> >>>> reporting a
> >>>> 'damaged' qsort. This may still be the same issue. The netbsd version
> I
> >>> am
> >>>> now using is dated 2017-05-19.
> >>>>
> >>>> My code experiencing this is SourceForge uac19, I'll be posting the
> >>>> corrected version (v3.2) with the netbsd qsort tomorrow after
> completing
> >>>> validation tests. I would ultimately like to see cygwin's qsort fixed.
>
> >>> As qsort depends on the array object data types and comparison
> >>> functions, please post a Simple Test Case, showing at least those types
> >>> and function(s), and the faulty output results.
> >> Corinna,
> >> I'm a cygwin user and neither a cygwin nor netbsd developer. I do not
> know
> >> what newlib or 'git format-patch' are. If I had access to source for
> >> cygwin's qsort  I could probably devise a patch, but it's probably
> better
> >> for somebody familiar with the tools cygwin uses to do that. The
> attached
> >> qqsort.h is an easy geek read. That qsort works with Linux/RHEL7 and
> with
> >> netbsd's version under cygwin should make fixing it straight forward for
> >> somebody in the know.
>
> >> Brian,
> >> It's difficult to produce a simple test case with erratic behavior. I
> have
> >> wrapped my qsort invocations within a qqsort routine. I've attached
> >> qqsort.h which includes both the wrapper and the netbad qsort.c renamed
> as
> >> Qsort (and with _DIAGASSERT's commented out). Also attached is
> cygsort.txt
> >> which is script output demonstrating the problem. My apologies that is
> 200+
> >> lines, the Verbose mode states whether Qsort (netbsd) or qsort (cygwin)
> is
> >> being invoked, I added the '$' command to toggle back and forth.
> Descending
> >> sorts on the D/C (dpc) column have been most problematic. The descending
> >> '+S dpc' after the ascending '+s dpc' is the most graphic example. I did
> >> publish uac19 v3.3 on SourceForge this morning, or I can send somebody a
> >> tgz.
>
> > Kurt-Karen, this is hard to comprehend. It is common practice that
> someone who
> > claims something is buggy, especially about something essential like
> qsort,
> > should demonstrate that claim with a reproducible test case, even if, as
> you
> > say, it may be difficult to produce one. If this happens in a series of
> > invocations you have it should be possible to identify one case with
> wrong
> > results and reproduce its input and invocation scenario.
>
> You attached the qsort source, which is already in Cygwin, but did not
> include
> your input csv data, data structures, data reading, and qsort comparison
> functions, which would allow us to try to reproduce the issue.
> We need your raw input and output data, and the core sorting code, to do
> so.
>
> The simplest approach is to use the sort utility to sort your input data to
> produce the expected output, and compare that to the equivalent output
> generated
> from your sort program.
> If you added that capability to your code, and did that on every run, you
> could
> capture the problem input and output data when diff returned non-zero
> status.
>
> Most sort problems are from premature optimization: trying to be too
> efficient
> in comparison functions, which then don't do exactly as expected in all the
> input data cases: you create a heisenbug, which you then need to detect and
> reproduce.
> Often, making the comparison function code as simple and straightforward as
> possible, and ensuring it will always give exactly the expected result,
> eliminates the issue. First make it correct, then make it fast!
>
> --
> Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada
>
> This email may be disturbing to some readers as it contains
> too much technical detail. Reader discretion is advised.
> [Data in IEC units and prefixes, physical quantities in SI.]
> --
> Problem reports:      https://cygwin.com/problems.html
> FAQ:                  https://cygwin.com/faq/
> Documentation:        https://cygwin.com/docs.html
> Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple
>

--00000000000007246505ae466048
Content-Type: application/octet-stream; name="c19sort.c"
Content-Disposition: attachment; filename="c19sort.c"
Content-Transfer-Encoding: base64
Content-ID: <f_kekeioce0>
X-Attachment-Id: f_kekeioce0

LyogKGMpIENvcHlyaWdodCAyMDIwIGJ5IERlbmFsaSBTdW4gQ29uc3VsdGluZyAtIEt1cnQgQ2Fy
bHNvbiAoRlNGL0dQTCkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoJdWFjMTkgKnNvcnQoKSByb3V0aW5l
cwkJCkhpc3Rvcnk6CQlTZWUgQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbGVkIGNoYW5nZXMKLS0t
LS0tLQoyMDIwLTA4LTI5IGthYwlkdWUgdG8gd2luZG93cy9jeWd3aW4gZXJyYXRpYyBzb3J0IGFk
ZCBxc29ydCBmcm9tOgoJCWh0dHA6Ly9jdnN3ZWIubmV0YnNkLm9yZy9ic2R3ZWIuY2dpL3NyYy9s
aWIvbGliYy9zdGRsaWIvcXNvcnQuYz9yZXY9MS4yMyZjb250ZW50LXR5cGU9dGV4dC94LWN2c3dl
Yi1tYXJrdXAKMjAyMC0wNS0xNSBrYWMJc3BsaXQgKnNvcnQoKSBpbnRvIGMxOXNvcnQuYwogKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqLwojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5j
bHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDx0aW1lLmg+CiNpbmNsdWRlICJjb25maWcuaCIKI2lu
Y2x1ZGUgInVhYzE5LmgiCgpleHRlcm4Jc3RydWN0CVNPUlQJKnFxOwkJLyogbm8gcXNvcnRfcjog
Y3lnd2luICE9IGxpbnV4CSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmludAlmX3NvcnQgKG4xLCBuMikJ
CQkvKiBzb3J0IGZpbGUgcG9pbnRlcnMJCSovCnN0cnVjdAlEQVlTCSpuMSwgKm4yOwp7CmludAlu
ID0gc3RyY21wIChuMS0+ZiwgbjItPmYpOwpyZXR1cm4gKG4pOwp9Ci8qKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov
CmludAlkX3NvcnQgKGQxLCBkMikJCQkvKiBzb3J0IGZpbGVzIGRhdGUgCQkqLwpzdHJ1Y3QJTkRB
WQkqZDEsICpkMjsKewp0aW1lX3QJdDEgPSBkMS0+dG07CnRpbWVfdAl0MiA9IGQyLT50bTsKaW50
CXRpID0gKGludCkgKHQxLXQyKTsKcmV0dXJuICh0aSk7Cn0KLyoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KaW50
CXRfc29ydCAoc3RydWN0IERBVE0gKmQxLCBzdHJ1Y3QgREFUTSAqZDIpCS8qIGRhdGUJCSovCnsK
dGltZV90CXQxID0gZDEtPnQ7CnRpbWVfdAl0MiA9IGQyLT50OwppbnQJdGkgPSAoaW50KSAodDEt
dDIpOwpyZXR1cm4gKHRpKTsKfQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwppbnQJYV9zb3J0IChzdHJ1Y3Qg
TkFNRSAqbjEsIHN0cnVjdCBOQU1FICpuMikJLyogaW5kZXgJKi8KewppbnQJeDEgPSBuMS0+aXg7
CmludAl4MiA9IG4yLT5peDsKaWYgKHFxLT52KQlxcS0+diA9IDAsCWZwcmludGYgKHN0ZGVyciwg
IiMgYV9zb3J0OiVkXG4iLCBxcS0+byk7CmlmIChxcS0+bykJcmV0dXJuICh4MS14Mik7CQllbHNl
CXJldHVybiAoeDIteDEpOwp9Ci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmludAlsX3NvcnQgKHN0cnVjdCBO
QU1FICpuMSwgc3RydWN0IE5BTUUgKm4yKQkvKiBjb25maW1lZAkqLwp7CmludAljMSwgYzI7Cmlm
IChxcS0+dikJcXEtPnYgPSAwLAlmcHJpbnRmIChzdGRlcnIsICIjIGxfc29ydDolZDpcbiIsIHFx
LT5vKTsKCWMxID0gbjEtPmR4WypxcS0+bCAtMV0uY287CgljMiA9IG4yLT5keFsqcXEtPmwgLTFd
LmNvOwppZiAocXEtPm8pCXJldHVybiAoYzEtYzIpOwkJZWxzZQlyZXR1cm4gKGMyLWMxKTsKfQov
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqLwppbnQJbE1zb3J0IChzdHJ1Y3QgTkFNRSAqbjEsIHN0cnVjdCBOQU1F
ICpuMikJLyogY29uZmltZWQrCSovCnsKaW50CWMxID0gbjEtPmR4WypxcS0+bCAtMV0uY28gLSBu
MS0+ZHhbKnFxLT5wXS5jbzsKaW50CWMyID0gbjItPmR4WypxcS0+bCAtMV0uY28gLSBuMi0+ZHhb
KnFxLT5wXS5jbzsKaWYgKGMxPT1jMikKewljMSA9IG4xLT5keFsqcXEtPmwgLTFdLmNvOwoJYzIg
PSBuMi0+ZHhbKnFxLT5sIC0xXS5jbzsKfQppZiAocXEtPnYpCXFxLT52ID0gMCwJZnByaW50ZiAo
c3RkZXJyLCAiIyBsTXNvcnQ6JWRcbiIsIHFxLT5vKTsKaWYgKHFxLT5vKQlyZXR1cm4gKGMxLWMy
KTsJCWVsc2UJcmV0dXJuIChjMi1jMSk7Cn0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KaW50CWxkc29ydCAo
c3RydWN0IE5BTUUgKm4xLCBzdHJ1Y3QgTkFNRSAqbjIpCS8qIGRlYXRocwkqLwp7CmludAlkMSA9
IG4xLT5keFsqcXEtPmwgLTFdLmRlOwppbnQJZDIgPSBuMi0+ZHhbKnFxLT5sIC0xXS5kZTsKaWYg
KGQxPT1kMikKewlkMSA9IG4xLT5keFsqcXEtPmwgLTFdLmNvOwoJZDIgPSBuMi0+ZHhbKnFxLT5s
IC0xXS5jbzsKfQppZiAocXEtPnYpCXFxLT52ID0gMCwJZnByaW50ZiAoc3RkZXJyLCAiIyBsZHNv
cnQ6JWRcbiIsIHFxLT5vKTsKaWYgKHFxLT5vKQlyZXR1cm4gKGQxLWQyKTsJCWVsc2UJcmV0dXJu
IChkMi1kMSk7Cn0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KaW50CWxFc29ydCAoc3RydWN0IE5BTUUgKm4x
LCBzdHJ1Y3QgTkFNRSAqbjIpCS8qIGRpZWQrCSovCnsKaW50CWkxID0gbjEtPmR4WypxcS0+bCAt
MV0uZGUgLSBuMS0+ZHhbKnFxLT5wXS5kZTsKaW50CWkyID0gbjItPmR4WypxcS0+bCAtMV0uZGUg
LSBuMi0+ZHhbKnFxLT5wXS5kZTsKaWYgKGkxPT1pMikJCQkJLyogaWRlbnRpY2FsPwkqLwp7CWkx
ID0gbjEtPmR4WypxcS0+bCAtMV0uZGU7CglpMiA9IG4yLT5keFsqcXEtPmwgLTFdLmRlOwp9Cmlm
IChpMT09aTIpCQkJCS8qIGlkZW50aWNhbD8JKi8KewlpMSA9IG4xLT5keFsqcXEtPmwgLTFdLmNv
OwoJaTIgPSBuMi0+ZHhbKnFxLT5sIC0xXS5jbzsKfQppZiAocXEtPnYpCXFxLT52ID0gMCwJZnBy
aW50ZiAoc3RkZXJyLCAiIyBsRXNvcnQ6JWRcbiIsIHFxLT5vKTsKaWYgKHFxLT5vKQlyZXR1cm4g
KGkxLWkyKTsJCWVsc2UJcmV0dXJuIChpMi1pMSk7Cn0KLyoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KaW50CWxQ
c29ydCAoc3RydWN0IE5BTUUgKm4xLCBzdHJ1Y3QgTkFNRSAqbjIpCS8qIHBjdAkJKi8KewpmbG9h
dAlmMSA9IDEwMDAwLiogbjEtPnBjdDsKZmxvYXQJZjIgPSAxMDAwMC4qIG4yLT5wY3Q7CmlmIChx
cS0+dikJcXEtPnYgPSAwLAlmcHJpbnRmIChzdGRlcnIsICIjIGxQc29ydDolZFxuIiwgcXEtPm8p
OwppZiAocXEtPm8pCXJldHVybiAoKGludCkgKGYxLWYyKSk7CWVsc2UJcmV0dXJuICgoaW50KSAo
ZjItZjEpKTsKfQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqLwppbnQJbERzb3J0IChzdHJ1Y3QgTkFNRSAqbjEs
IHN0cnVjdCBOQU1FICpuMikJLyogZGVhZC9jb25maXJtCSovCnsKaW50CWMxID0gbjEtPmR4Wypx
cS0+bCAtMV0uY28sCWQxID0gbjEtPmR4WypxcS0+bCAtMV0uZGU7CmludAljMiA9IG4yLT5keFsq
cXEtPmwgLTFdLmNvLAlkMiA9IG4yLT5keFsqcXEtPmwgLTFdLmRlOwpmbG9hdAlmMSwgZjI7Cmlm
IChxcS0+ZGl2aWRlKQkJCQkvKiB0aGlzIGZhaWxzIHcvY3lnd2luJ3MgcXNvcnQJKi8KewlmMSA9
IDEwMDAwLiogKGZsb2F0KSBkMSAvIChmbG9hdCkgYzE7CglmMiA9IDEwMDAwLiogKGZsb2F0KSBk
MiAvIChmbG9hdCkgYzI7Cn0gZWxzZQkJCQkJLyogcHJlLWNhbGN1bGF0ZWQgaW50byBzdHJ1Y3QJ
Ki8KewlmMSA9IG4xLT5kcGMgKiAxMDAwMC47CglmMiA9IG4yLT5kcGMgKiAxMDAwMC47Cn0KaWYg
KHFxLT52KQlxcS0+diA9IDAsCWZwcmludGYgKHN0ZGVyciwgIiMgbERzb3J0OiVkXG4iLCBxcS0+
byk7CmlmIChxcS0+bykJcmV0dXJuICgoaW50KSAoZjEtZjIpKTsJZWxzZQlyZXR1cm4gKChpbnQp
IChmMi1mMSkpOwp9Ci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmludAlsWHNvcnQgKHN0cnVjdCBOQU1FICpu
MSwgc3RydWN0IE5BTUUgKm4yKQkvKiBkZWFkL21pbGxpb24JKi8KewpmbG9hdAlmMSwgZjI7Cmlm
IChxcS0+ZGl2aWRlKQkJCQkvKiB0aGlzIGZhaWxzIHcvY3lnd2luJ3MgcXNvcnQJKi8KewlmMSA9
IDEwMDAwLiAqIG4xLT5keFsqcXEtPmwgLTFdLmRlIC8gKGZsb2F0KSBuMS0+cG9wOwoJZjIgPSAx
MDAwMC4gKiBuMi0+ZHhbKnFxLT5sIC0xXS5kZSAvIChmbG9hdCkgbjItPnBvcDsKfSBlbHNlCQkJ
CQkvKiBwcmUtY2FsY3VsYXRlZCBpbnRvIHN0cnVjdAkqLwp7CWYxID0gMTAwMDAuICogbjEtPmRw
bTsKCWYyID0gMTAwMDAuICogbjItPmRwbTsKfQppZiAocXEtPnYpCXFxLT52ID0gMCwJZnByaW50
ZiAoc3RkZXJyLCAiIyBsWHNvcnQ6JWRcbiIsIHFxLT5vKTsKaWYgKHFxLT5vKQlyZXR1cm4gKChp
bnQpIChmMS1mMikpOwllbHNlCXJldHVybiAoKGludCkgKGYyLWYxKSk7Cn0KLyoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKi8KaW50CWxZc29ydCAoc3RydWN0IE5BTUUgKm4xLCBzdHJ1Y3QgTkFNRSAqbjIpCS8qIHBj
dCBjb25mCSovCnsKZmxvYXQJZjEgPSAxMDAwMDAwLiogbjEtPnBjcDsKZmxvYXQJZjIgPSAxMDAw
MDAwLiogbjItPnBjcDsKaWYgKHFxLT52KQlxcS0+diA9IDAsCWZwcmludGYgKHN0ZGVyciwgIiMg
bFlzb3J0OiVkXG4iLCBxcS0+byk7CmlmIChxcS0+bykJcmV0dXJuICgoaW50KSAoZjEtZjIpKTsJ
ZWxzZQlyZXR1cm4gKChpbnQpIChmMi1mMSkpOwp9Ci8qKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmludAlsa3Nv
cnQgKHN0cnVjdCBOQU1FICpuMSwgc3RydWN0IE5BTUUgKm4yKQkvKiBpbmNyLzEwMGsJKi8Kewpm
bG9hdAlmMSA9IDEwMDAwLiogbjEtPmlwazsKZmxvYXQJZjIgPSAxMDAwMC4qIG4yLT5pcGs7Cmlm
IChxcS0+dikJcXEtPnYgPSAwLAlmcHJpbnRmIChzdGRlcnIsICIjIGhrc29ydDolZFxuIiwgcXEt
Pm8pOwppZiAocXEtPm8pCXJldHVybiAoKGludCkgKGYxLWYyKSk7CWVsc2UJcmV0dXJuICgoaW50
KSAoZjItZjEpKTsKfQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwppbnQJbG9zb3J0IChzdHJ1Y3QgTkFNRSAq
bjEsIHN0cnVjdCBOQU1FICpuMikJLyogcG9wdWxhdGlvbgkqLwp7CmxvbmcJaWkgPSBuMS0+cG9w
IC0gbjItPnBvcDsKaWYgKHFxLT52KQlxcS0+diA9IDAsCWZwcmludGYgKHN0ZGVyciwgIiMgbG9z
b3J0OiVkXG4iLCBxcS0+byk7CmlmIChxcS0+bykKeyBpZiAoMDxpaSkJcmV0dXJuICgxKTsJZWxz
ZQlpZiAoMD5paSkJcmV0dXJuICgtMSk7Cn0gZWxzZQp7IGlmICgwPmlpKQlyZXR1cm4gKDEpOwll
bHNlCWlmICgwPGlpKQlyZXR1cm4gKC0xKTsKfQpyZXR1cm4gKDApOwp9Ci8qKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiovCmludAlsdnNvcnQgKHN0cnVjdCBOQU1FICpuMSwgc3RydWN0IE5BTUUgKm4yKQkvKiBjMyxj
MgkqLwp7CmludAlpID0gc3RybmNtcCAobjEtPmMzLCBuMi0+YzMsIDMpOwppZiAoIWkpCWkgPSBz
dHJuY21wIChuMS0+YzIsIG4yLT5jMiwgMik7CmlmIChxcS0+dikJcXEtPnYgPSAwLAlmcHJpbnRm
IChzdGRlcnIsICIjIGx2c29ydDolZFxuIiwgcXEtPm8pOwppZiAocXEtPm8pCXJldHVybiAoaSk7
CQllbHNlCXJldHVybiAoLWkpOwp9Ci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmludAlscnNvcnQgKHN0cnVj
dCBOQU1FICpuMSwgc3RydWN0IE5BTUUgKm4yKQkvKiByZWdpb24JKi8KewppbnQJaSA9IHN0cm5j
bXAgKG4xLT5yNCwgbjItPnI0LCA0KTsKaWYgKCFpKQlpID0gc3RyY21wICAobjEtPm5hLCBuMi0+
bmEpOwppZiAocXEtPnYpCXFxLT52ID0gMCwJZnByaW50ZiAoc3RkZXJyLCAiIyBscnNvcnQ6JWRc
biIsIHFxLT5vKTsKaWYgKHFxLT5vKQlyZXR1cm4gKGkpOwkJZWxzZQlyZXR1cm4gKC1pKTsKfQov
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqLwppbnQJbGxzb3J0IChzdHJ1Y3QgTkFNRSAqbjEsIHN0cnVjdCBOQU1F
ICpuMikJLyogbG9jYXRpb24JKi8KewppbnQJaSA9IHN0cmNtcCAobjEtPm5hLCBuMi0+bmEpOwpp
ZiAocXEtPm8pCXJldHVybiAoaSk7CQllbHNlCXJldHVybiAoLWkpOwp9Ci8qKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiovCmludAlyX3NvcnQgKHN0cnVjdCBSRUNTICpuMiwgc3RydWN0IFJFQ1MgKm4xKQkvKiBjb25m
ICh0b3ApCSovCnsKaW50CWkgPSBuMS0+Y28gLSBuMi0+Y287CnJldHVybiAoaSk7Cn0KLyoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKi8KI2luY2x1ZGUgInFxc29ydC5oIgkJLyogcXNvcnQgaW52b2NhdGlvbiwgbmV0
YnNkIGZvciBjeWd3aW4JKi8K
--00000000000007246505ae466048
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

--
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

--00000000000007246505ae466048--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019