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: <1464bc69-4dd5-b63d-d1b9-048b52fe036e AT towo DOT net> In-Reply-To: Date: Tue, 1 Sep 2020 13:29:12 -0700 Message-ID: Subject: Re: cygwin qsort erratic To: cygwin AT cygwin DOT com Content-Type: multipart/mixed; boundary="00000000000007246505ae466048" 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 List-Archive: List-Post: List-Help: List-Subscribe: , From: Kurt-Karen Carlson-Lougheed via Cygwin Reply-To: Kurt-Karen Carlson-Lougheed Sender: "Cygwin" --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: 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--