From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 111415 invoked by alias); 22 Oct 2015 02:08:50 -0000 Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner@cygwin.com Mail-Followup-To: cygwin@cygwin.com Received: (qmail 111247 invoked by uid 89); 22 Oct 2015 02:08:47 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=0.1 required=5.0 tests=BAYES_50,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: gwo5.mbox.net Received: from gwo5.mbox.net (HELO gwo5.mbox.net) (165.212.64.23) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Thu, 22 Oct 2015 02:08:45 +0000 Received: from gwo5.mbox.net (localhost [127.0.0.1]) by gwo5.mbox.net (Postfix) with ESMTP id 3nhBtz0NW0zlhMhk for ; Thu, 22 Oct 2015 02:08:43 +0000 (UTC) X-USANET-Received: from gwo5.mbox.net [127.0.0.1] by gwo5.mbox.net via mtad (C8.MAIN.4.02J) with ESMTP id 999TJVciM5248Mo5; Thu, 22 Oct 2015 02:08:38 -0000 X-USANET-Routed: 5 gwsout-gwsd Q:gwsd X-USANET-Routed: 3 gwsout-vs Q:bmvirus X-USANET-GWS2-Tenant: electric-cloud.com X-USANET-GWS2-Tagid: ECLD Received: from S1P5HUB8.EXCHPROD.USA.NET [165.212.120.254] by gwo5.mbox.net via smtad (C8.MAIN.4.02Q) with ESMTPS id XID543TJVciM6152Xo5; Thu, 22 Oct 2015 02:08:38 -0000 X-USANET-Source: 165.212.120.254 OUT aeolus@electric-cloud.com S1P5HUB8.EXCHPROD.USA.NET TLS X-USANET-MsgId: XID543TJVciM6152Xo5 Received: from S1P5DAG5C.EXCHPROD.USA.NET ([169.254.3.161]) by S1P5HUB8.EXCHPROD.USA.NET ([10.120.223.38]) with mapi id 14.03.0235.001; Thu, 22 Oct 2015 02:08:38 +0000 From: John Carey To: "cygwin@cygwin.com" Subject: RE: pthread_kill: signals remain pending after target thread exits Date: Thu, 22 Oct 2015 08:34:00 -0000 Message-ID: <28F5B565B6F6424C87E4AC0DCC84316575D73A86@S1P5DAG5C.EXCHPROD.USA.NET> References: <28F5B565B6F6424C87E4AC0DCC84316575D71070@S1P5DAG5C.EXCHPROD.USA.NET>,<20151021114810.GQ5319@calimero.vinschen.de> In-Reply-To: <20151021114810.GQ5319@calimero.vinschen.de> Content-Type: multipart/mixed; boundary="_002_28F5B565B6F6424C87E4AC0DCC84316575D73A86S1P5DAG5CEXCHPR_" MIME-Version: 1.0 X-IsSubscribed: yes X-SW-Source: 2015-10/txt/msg00365.txt.bz2 --_002_28F5B565B6F6424C87E4AC0DCC84316575D73A86S1P5DAG5CEXCHPR_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Content-length: 3326 > From: Corinna Vinschen [corinna-cygwin@cygwin.com] > Sent: Wednesday, October 21, 2015 4:48 AM > Subject: Re: pthread_kill: signals remain pending after target thread exi= ts ... > > On Sep 11 18:11, John Carey wrote: > > There seems to be a problem with pthread_kill: a pending signal > > targeting a particular thread prevents other threads from receiving > > signals sharing the same signal number--even after the original target > > thread exits and is joined. ... > The important thing here is to get rid of the pending signal. Yes, I agree that is the most important thing. > > In my view it would be desirable if: > > > > - Pending signals targeting a particular thread would not outlast > > that thread. >=20 > Since you looked into the code anyway, do you have an idea how to > implement that? For a start, do you have a simple testcase, only > the bare code needed to reproduce the issue? I've attached a test case that I *think* gets into the right spot, at least= for 64-bit Cygwin 2.0.4. That is, it hangs trying to receive the signal, = instead of terminating. (This test passes (terminates) in 32-bit Cygwin 1.= 7.9 and 64-bit Ubuntu 14.04.3 LTS.) As to a fix: sorry, but though I looked at the code, I am not sufficiently = confident to suggest a specific change. I think that the internal signal h= andling thread has exclusive access to the pending signal collection, which= is one difficulty. And I'm not sure how the race is resolved between some= thing trying to use the cygtls and the cygtls being destroyed. At a guess,= there are at least two general approaches to a fix: 1. Somehow prevent new signals from being sent to the terminating thread, t= hen notify the internal signal handling thread of the need to purge pending= signals targeting the doomed thread, then delay cygtls destruction until c= onfirmation that that purge is complete. 2. In the pending signal representation, replace the direct cygtls address = with a pointer to some small reference-counted object associated with the c= ygtls. That small object could live on for a while, even after the origina= l cygtls has been destroyed and its memory reused for a new cygtls, so that= the signal processing thread can take its time purging references. But th= ere has to be some way to atomically do two things: 1) check whether this s= mall object still points to a valid cygtls, and 2) if it does, delay destru= ction of that cygtls until some task has been performed (such as processing= a signal). Perhaps this small object could contain an invalidation flag a= nd some synchronization objects (mutex, condition variable, etc.) in additi= on to the raw cygtls pointer. > > - Multiple pending signals targeting different threads could > > coexist, even if they shared the same signal number. This happens > > on Linux (Ubuntu 14.04.3), where I can generate two signals for two > > different threads, then sleep for a bit in each target thread, and > > finally have each thread receive its signal with sigwait()--neither > > signal is lost during the sleeping period. >=20 > That requires to extend the handling for pending signals. That's > a rather bigger task... Yeah. It's nice if threads don't interfere with each other, but this part = would indeed be harder to change. -- John Carey --_002_28F5B565B6F6424C87E4AC0DCC84316575D73A86S1P5DAG5CEXCHPR_ Content-Type: text/x-csrc; name="test_pending_signal.c" Content-Description: test_pending_signal.c Content-Disposition: attachment; filename="test_pending_signal.c"; size=6688; creation-date="Thu, 22 Oct 2015 01:10:32 GMT"; modification-date="Thu, 22 Oct 2015 01:10:32 GMT" Content-Transfer-Encoding: base64 Content-length: 9069 LyogQ29weXJpZ2h0IChjKSAyMDE1LCBFbGVjdHJpYyBDbG91ZCwgSW5jLgog KiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3RyaWJ1dGlvbiBh bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp dGhvdXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCiAqIGFyZSBtZXQ6CiAq CiAqICAgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogKiAgICAgbm90aWNlLCB0aGlz IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp bWVyLgogKgogKiAgIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICogICAgIG5v dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp bmcgZGlzY2xhaW1lciBpbiB0aGUKICogICAgIGRvY3VtZW50YXRpb24gYW5k L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli dXRpb24uCiAqCiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKICogIkFTIElT IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM VURJTkcsIEJVVCBOT1QKICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCiAq IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCiAqIEhPTERFUiBPUiBDT05UUklC VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D SURFTlRBTCwKICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAogKiBMSU1JVEVEIFRP LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT OyBMT1NTIE9GIFVTRSwKICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCiAq IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICogKElOQ0xVRElORyBORUdMSUdF TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU SEUgVVNFCiAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAqLwoKLyogVGhp cyB0ZXN0IHByb2dyYW0gZGVtb25zdGF0ZXMgYSBDeWd3aW4gYnVnIGluIHdo aWNoIGEgc2lnbmFsIHNlbnQKICogdG8gYSBwYXJ0aWN1bGFyIHRocmVhZCBy ZW1haW5zIHBlbmRpbmcgYWZ0ZXIgdGhlIHRocmVhZCB0ZXJtaW5hdGVzLgog Ki8KCiNpbmNsdWRlIDx1bmlzdGQuaD4KI2luY2x1ZGUgPHB0aHJlYWQuaD4K I2luY2x1ZGUgPGVycm5vLmg+CiNpbmNsdWRlIDxzaWduYWwuaD4KI2luY2x1 ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0 cmluZy5oPgoKc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBtdXRleCA9IFBUSFJF QURfTVVURVhfSU5JVElBTElaRVI7CnN0YXRpYyBwdGhyZWFkX2NvbmRfdCBj b25kID0gUFRIUkVBRF9DT05EX0lOSVRJQUxJWkVSOwpzdGF0aWMgaW50IGZ1 bGx5X3VwID0gMDsKc3RhdGljIGludCBhbGxvd19leGl0ID0gMDsKc3RhdGlj IGludCBhYm91dF90b19zaWd3YWl0ID0gMDsKc3RhdGljIGludCBzaWduYWxf cmVjZWl2ZWQgPSAtMTsKCnN0YXRpYyB2b2lkIGNoZWNrX3N5c2NhbGwoY2hh ciBjb25zdCAqY29udGV4dCwgaW50IHJlc3VsdCkKewogICAgaWYgKHJlc3Vs dCA9PSAtMSkgewogICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6ICVzXG4i LCBjb250ZXh0LCBzdHJlcnJvcihlcnJubykpOwogICAgICAgIGV4aXQoRVhJ VF9GQUlMVVJFKTsKICAgIH0KfQoKc3RhdGljIHZvaWQgY2hlY2tfdGhyZWFk Y2FsbChjaGFyIGNvbnN0ICpjb250ZXh0LCBpbnQgZXJyb3JfbnVtYmVyKQp7 CiAgICBpZiAoZXJyb3JfbnVtYmVyKSB7CiAgICAgICAgZnByaW50ZihzdGRl cnIsICIlczogJXNcbiIsIGNvbnRleHQsIHN0cmVycm9yKGVycm9yX251bWJl cikpOwogICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKICAgIH0KfQoKc3Rh dGljIHZvaWQgKnRocmVhZDEodm9pZCAqYXJnKQp7CiAgICBjaGVja190aHJl YWRjYWxsKCJwdGhyZWFkX211dGV4X2xvY2siLAogICAgICAgICAgICBwdGhy ZWFkX211dGV4X2xvY2soJm11dGV4KSk7CgogICAgZnVsbHlfdXAgPSAxOwoK ICAgIGNoZWNrX3RocmVhZGNhbGwoInB0aHJlYWRfY29uZF9icm9hZGNhc3Qi LAogICAgICAgICAgICBwdGhyZWFkX2NvbmRfYnJvYWRjYXN0KCZjb25kKSk7 CgogICAgd2hpbGUgKCEgYWxsb3dfZXhpdCkgewogICAgICAgIHB0aHJlYWRf Y29uZF93YWl0KCZjb25kLCAmbXV0ZXgpOwogICAgfQoKICAgIGNoZWNrX3Ro cmVhZGNhbGwoInB0aHJlYWRfbXV0ZXhfdW5sb2NrIiwKICAgICAgICAgICAg cHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4KSk7CiAgICByZXR1cm4gTlVM TDsKfQoKc3RhdGljIHZvaWQgKnRocmVhZDIodm9pZCAqYXJnKQp7CiAgICBz aWdzZXRfdCBzZXQ7CiAgICBpbnQgc2lnOwoKICAgIGNoZWNrX3N5c2NhbGwo InNpZ2VtcHR5c2V0IiwKICAgICAgICAgICAgc2lnZW1wdHlzZXQoJnNldCkp OwoKICAgIGNoZWNrX3N5c2NhbGwoInNpZ2FkZHNldCIsCiAgICAgICAgICAg IHNpZ2FkZHNldCgmc2V0LCBTSUdURVJNKSk7CgogICAgY2hlY2tfdGhyZWFk Y2FsbCgicHRocmVhZF9tdXRleF9sb2NrIiwKICAgICAgICAgICAgcHRocmVh ZF9tdXRleF9sb2NrKCZtdXRleCkpOwoKICAgIGFib3V0X3RvX3NpZ3dhaXQg PSAxOwoKICAgIGNoZWNrX3RocmVhZGNhbGwoInB0aHJlYWRfY29uZF9icm9h ZGNhc3QiLAogICAgICAgICAgICBwdGhyZWFkX2NvbmRfYnJvYWRjYXN0KCZj b25kKSk7CgogICAgY2hlY2tfdGhyZWFkY2FsbCgicHRocmVhZF9tdXRleF91 bmxvY2siLAogICAgICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmbXV0 ZXgpKTsKCiAgICAvKiBUcnkgdG8gcmVjZWl2ZSBhIHNpZ25hbC4gKi8KCiAg ICBzaWcgPSAwOwogICAgY2hlY2tfdGhyZWFkY2FsbCgic2lnd2FpdCIsCiAg ICAgICAgICAgIHNpZ3dhaXQoJnNldCwgJnNpZykpOwoKICAgIGNoZWNrX3Ro cmVhZGNhbGwoInB0aHJlYWRfbXV0ZXhfbG9jayIsCiAgICAgICAgICAgIHB0 aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXgpKTsKCiAgICBzaWduYWxfcmVjZWl2 ZWQgPSBzaWc7CgogICAgY2hlY2tfdGhyZWFkY2FsbCgicHRocmVhZF9jb25k X2Jyb2FkY2FzdCIsCiAgICAgICAgICAgIHB0aHJlYWRfY29uZF9icm9hZGNh c3QoJmNvbmQpKTsKCiAgICBjaGVja190aHJlYWRjYWxsKCJwdGhyZWFkX211 dGV4X3VubG9jayIsCiAgICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2Nr KCZtdXRleCkpOwoKICAgIHJldHVybiBOVUxMOwp9CgppbnQgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCnsKICAgIHNpZ3NldF90IHNldDsKICAgIHB0 aHJlYWRfdCB0aWQxLCB0aWQyOwogICAgaW50IHNpZzsKCiAgICAvKiBCbG9j ayBTSUdURVJNIGZvciB0aGlzIHRocmVhZCBhbmQgYWxsIHRocmVhZHMgaXQg Y3JlYXRlcy4gKi8KCiAgICBjaGVja19zeXNjYWxsKCJzaWdlbXB0eXNldCIs CiAgICAgICAgICAgIHNpZ2VtcHR5c2V0KCZzZXQpKTsKCiAgICBjaGVja19z eXNjYWxsKCJzaWdhZGRzZXQiLAogICAgICAgICAgICBzaWdhZGRzZXQoJnNl dCwgU0lHVEVSTSkpOwoKICAgIGNoZWNrX3RocmVhZGNhbGwoInB0aHJlYWRf c2lnbWFzayIsCiAgICAgICAgICAgIHB0aHJlYWRfc2lnbWFzayhTSUdfQkxP Q0ssICZzZXQsIE5VTEwpKTsKCiAgICBjaGVja190aHJlYWRjYWxsKCJwdGhy ZWFkX2NyZWF0ZSIsCiAgICAgICAgICAgIHB0aHJlYWRfY3JlYXRlKCZ0aWQx LCBOVUxMLCB0aHJlYWQxLCBOVUxMKSk7CgogICAgLyogSnVzdCBiZSBzdXJl LCB3YWl0IHVudGlsIGEga25vd24gcG9pbnQgaW4gdGhlIG90aGVyIHRocmVh ZC4gKi8KCiAgICBjaGVja190aHJlYWRjYWxsKCJwdGhyZWFkX211dGV4X2xv Y2siLAogICAgICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJm11dGV4KSk7 CgogICAgd2hpbGUgKCEgZnVsbHlfdXApIHsKICAgICAgICBwdGhyZWFkX2Nv bmRfd2FpdCgmY29uZCwgJm11dGV4KTsKICAgIH0KCiAgICAvKiBTZW5kIGEg c2lnbmFsIHNwZWNpZmljYWxseSB0byB0aGF0IG90aGVyIHRocmVhZAogICAg ICogKGFzIG9wcG9zZWQgdG8gdGhlIHByb2Nlc3MgYXMgYSB3aG9sZSkuICov CgogICAgY2hlY2tfdGhyZWFkY2FsbCgicHRocmVhZF9raWxsIiwKICAgICAg ICAgICAgcHRocmVhZF9raWxsKHRpZDEsIFNJR1RFUk0pKTsKCiAgICAvKiBB bGxvdyB0aGUgb3RoZXIgdGhyZWFkIHRvIHRlcm1pbmF0ZS4gKi8KCiAgICBh bGxvd19leGl0ID0gMTsKCiAgICBjaGVja190aHJlYWRjYWxsKCJwdGhyZWFk X2NvbmRfYnJvYWRjYXN0IiwKICAgICAgICAgICAgcHRocmVhZF9jb25kX2Jy b2FkY2FzdCgmY29uZCkpOwoKICAgIGNoZWNrX3RocmVhZGNhbGwoInB0aHJl YWRfbXV0ZXhfdW5sb2NrIiwKICAgICAgICAgICAgcHRocmVhZF9tdXRleF91 bmxvY2soJm11dGV4KSk7CgogICAgLyogSm9pbiB0aGUgb3RoZXIgdGhyZWFk LiAqLwoKICAgIGNoZWNrX3RocmVhZGNhbGwoInB0aHJlYWRfam9pbiIsCiAg ICAgICAgICAgIHB0aHJlYWRfam9pbih0aWQxLCBOVUxMKSk7CgogICAgLyog QXQgdGhpcyBwb2ludCB0aGUgb3RoZXIgdGhyZWFkIGlzIGdvbmUsIGJ1dCBi ZWNhdXNlIG9mIHRoZSBidWcKICAgICAqIHRoZXJlIGlzIHN0aWxsIGEgU0lH VEVSTSB0aGF0IGNhbm5vdCBiZSBkZWxpdmVyZWQgdW5sZXNzIGFuZAogICAg ICogdW50aWwgYSBuZXcgdGhyZWFkIG9idGFpbnMgdGhlIHNhbWUgY3lndGxz IGluc3RhbmNlLiAqLwoKICAgIC8qIFN0YXJ0IGEgbmV3IHNpZ25hbC1oYW5k bGluZyB0aHJlYWQuICovCgogICAgY2hlY2tfdGhyZWFkY2FsbCgicHRocmVh ZF9jcmVhdGUiLAogICAgICAgICAgICBwdGhyZWFkX2NyZWF0ZSgmdGlkMiwg TlVMTCwgdGhyZWFkMiwgTlVMTCkpOwoKICAgIGNoZWNrX3RocmVhZGNhbGwo InB0aHJlYWRfbXV0ZXhfbG9jayIsCiAgICAgICAgICAgIHB0aHJlYWRfbXV0 ZXhfbG9jaygmbXV0ZXgpKTsKCiAgICB3aGlsZSAoISBhYm91dF90b19zaWd3 YWl0KSB7CiAgICAgICAgcHRocmVhZF9jb25kX3dhaXQoJmNvbmQsICZtdXRl eCk7CiAgICB9CgogICAgY2hlY2tfdGhyZWFkY2FsbCgicHRocmVhZF9tdXRl eF91bmxvY2siLAogICAgICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygm bXV0ZXgpKTsKCiAgICAvKiBVbmZvcnR1bmF0ZWx5LCB3ZSBoYXZlIG5vIHdh eSB0byBiZSBzdXJlIHRoYXQgdGhlCiAgICAgKiBvdGhlciB0aHJlYWQgcmVh bGx5IGlzIGJsb2NrZWQgaW4gc2lnd2FpdC4gIFNsZWVwCiAgICAgKiBhIHNl Y29uZCB0byBnaXZlIGl0IHRpbWUgdG8gZ2V0IGludG8gc2lnd2FpdC4gKi8K CiAgICBzbGVlcCgxKTsKCiAgICAvKiBTZW5kIHRoZSBzYW1lIHNpZ25hbCB0 byB0aGUgcHJvY2VzcyBhcyBhIHdob2xlOwogICAgICogaWYgdGhpbmdzIHdl cmUgd29ya2luZywgdGhlIG5ldyBzaWduYWwgaGFuZGxpbmcKICAgICAqIHRo cmVhZCB3b3VsZCByZWNlaXZlIGl0IGluc2lkZSBvZiBzaWd3YWl0KCkuCiAg ICAgKgogICAgICogV2UgYXZvaWQgcmFpc2Uoc2lnKSBiZWNhdXNlIFBPU0lY IHNheXMgaXQgbWVhbnMKICAgICAqIHB0aHJlYWRfa2lsbChwdGhyZWFkX3Nl bGYoKSwgc2lnKSwgbWVhbmluZyB0aGF0CiAgICAgKiB0aGlzIHRocmVhZCB3 b3VsZCBoYXZlIHRvIHJlY2VpdmUgdGhlIHNpZ25hbC4gKi8KCiAgICBjaGVj a19zeXNjYWxsKCJraWxsIiwKICAgICAgICAgICAga2lsbChnZXRwaWQoKSwg U0lHVEVSTSkpOwoKICAgIHByaW50Zigic3RhcnRpbmcgdG8gYXdhaXQgc2ln bmFsXG4iKTsKICAgIGZmbHVzaChzdGRvdXQpOwoKICAgIC8qIFdhaXQgZm9y IHRoYXQgdGhyZWFkIHRvIHJlY2VpdmUgdGhhdCBzaWduYWwuICovCgogICAg Y2hlY2tfdGhyZWFkY2FsbCgicHRocmVhZF9tdXRleF9sb2NrIiwKICAgICAg ICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCZtdXRleCkpOwoKICAgIHdoaWxl ICgoc2lnID0gc2lnbmFsX3JlY2VpdmVkKSA9PSAtMSkgewogICAgICAgIHB0 aHJlYWRfY29uZF93YWl0KCZjb25kLCAmbXV0ZXgpOwogICAgfQoKICAgIGNo ZWNrX3RocmVhZGNhbGwoInB0aHJlYWRfbXV0ZXhfdW5sb2NrIiwKICAgICAg ICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4KSk7CgogICAgcHJp bnRmKCJyZWNlaXZlZCBzaWduYWw6ICVkIChcIiVzXCIpXG4iLCBzaWcsIHN0 cnNpZ25hbChzaWcpKTsKICAgIGZmbHVzaChzdGRvdXQpOwoKICAgIC8qIEpv aW4gdGhlIG90aGVyIHRocmVhZC4gKi8KCiAgICBjaGVja190aHJlYWRjYWxs KCJwdGhyZWFkX2pvaW4iLAogICAgICAgICAgICBwdGhyZWFkX2pvaW4odGlk MiwgTlVMTCkpOwoKICAgIHJldHVybiAwOwp9Cg== --_002_28F5B565B6F6424C87E4AC0DCC84316575D73A86S1P5DAG5CEXCHPR_ Content-Type: text/plain; charset=us-ascii Content-length: 218 -- 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 --_002_28F5B565B6F6424C87E4AC0DCC84316575D73A86S1P5DAG5CEXCHPR_--