Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hnhMc-0000w0-Ik for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Jul 2019 10:40:46 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1hnhMb-0007Oa-Ed for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Jul 2019 10:40:45 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hnhMa-0007OQ-UJ for pgsql-hackers@lists.postgresql.org; Wed, 17 Jul 2019 10:40:45 +0000 Received: from cyclops.postgrespro.ru ([93.174.131.138] helo=mail.postgrespro.ru) by makus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1hnhMX-0003QC-22 for pgsql-hackers@lists.postgresql.org; Wed, 17 Jul 2019 10:40:43 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.postgrespro.ru (Postfix) with ESMTP id 529E221C1D1C; Wed, 17 Jul 2019 13:40:37 +0300 (MSK) X-Virus-Scanned: Debian amavisd-new at postgrespro.ru X-Spam-Flag: NO X-Spam-Score: 0 X-Spam-Level: X-Spam-Status: No, score=x tagged_above=-99 required=4 WHITELISTED tests=[] autolearn=unavailable Received: from mail.postgrespro.ru (cyclops.l.postgrespro.ru [192.168.27.1]) by mail.postgrespro.ru (Postfix) with ESMTP id 67A7A21C1CE7; Wed, 17 Jul 2019 13:40:36 +0300 (MSK) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_f8b65275dd92c704ff6a73808b7baffb" Date: Wed, 17 Jul 2019 17:40:36 +0700 From: r.zharkov@postgrespro.ru To: Badrul Chowdhury Cc: Tom Lane , pgsql-hackers@lists.postgresql.org Subject: Re: Intermittent pg_ctl failures on Windows In-Reply-To: References: <16922.1520722108@sss.pgh.pa.us> Message-ID: <0057a0ce5a8893e4713a9a9d7e352162@postgrespro.ru> X-Sender: r.zharkov@postgrespro.ru User-Agent: Roundcube Webmail/1.3.8 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --=_f8b65275dd92c704ff6a73808b7baffb Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Hello! We reproduced these errors on out buildfarm and my windows workstation. We used small TAP test that restarts PostgresNode in loop. Additionally, constant WAITS_PER_SEC in the pg_ctl.c file has been increased 1000 times. There are two different problems with pg_ctl: 1 - share access to postmaster.pid; 2 - share access to logfile. Postmaster runs in the shell (CMD.EXE). When the server stops cmd.exe may blocks logfile from been opened by new cmd.exe. > waiting for server to shut down.... done > server stopped > waiting for server to start....The process cannot access the file > because it is being used by another process. > stopped waiting > pg_ctl: could not start server > Examine the log output. To avoid the first error we made two changes: pg_ctl now opens the postmaster.pid file using pgwin32_open() function to correctly handle share locks. On Windows systems we cannot handle ERROR_DELETE_PENDING because GetLastError() returns ERROR_ACCESS_DENIED instead. So we rename the lock files before delete them. To avoid the second error we added the wait for cmd.exe finish in the do_stop() and do_restart() functions. Git patch is in the attachment. On 2018-03-12 18:55, Badrul Chowdhury wrote: > Hi Tom, > > This is a great catch. I am looking into it: I will start by > reproducing the error as you suggested. > > Thanks, > Badrul > > -----Original Message----- > From: Tom Lane [mailto:tgl@sss.pgh.pa.us] > Sent: Saturday, March 10, 2018 2:48 PM > To: pgsql-hackers@lists.postgresql.org > Subject: Intermittent pg_ctl failures on Windows > > The buildfarm's Windows members occasionally show weird pg_ctl > failures, for instance this recent case: > > https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbuildfarm.postgresql.org%2Fcgi-bin%2Fshow_log.pl%3Fnm%3Dbowerbird%26dt%3D2018-03-10%252020%253A30%253A20&data=04%7C01%7Cbachow%40microsoft.com%7C28a8094e84c74c26ecb108d586d91a9d%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636563189370087651%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwifQ%3D%3D%7C-1&sdata=qBtMsJ0EJFs4DVtkA6TZJhCDNlj392uNxsB6MHnu7po%3D&reserved=0 > > ### Restarting node "master" > # Running: pg_ctl -D > G:/prog/bf/root/HEAD/pgsql.build/src/test/recovery/tmp_check/t_006_logical_decoding_master_data/pgdata > -l > G:/prog/bf/root/HEAD/pgsql.build/src/test/recovery/tmp_check/log/006_logical_decoding_master.log > restart waiting for server to shut down.... done server stopped > waiting for server to start....The process cannot access the file > because it is being used by another process. > stopped waiting > pg_ctl: could not start server > Examine the log output. > Bail out! system pg_ctl failed > > or this one: > > https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbuildfarm.postgresql.org%2Fcgi-bin%2Fshow_log.pl%3Fnm%3Dbowerbird%26dt%3D2017-12-29%252023%253A30%253A24&data=04%7C01%7Cbachow%40microsoft.com%7C28a8094e84c74c26ecb108d586d91a9d%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636563189370087651%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwifQ%3D%3D%7C-1&sdata=NdoDkZxBagXpiPDjNmhN6znHh%2BITyjEv2StPpLaabaw%3D&reserved=0 > > ### Stopping node "subscriber" using mode fast # Running: pg_ctl -D > c:/prog/bf/root/HEAD/pgsql.build/src/test/subscription/tmp_check/t_001_rep_changes_subscriber_data/pgdata > -m fast stop waiting for server to shut down....pg_ctl: could not open > PID file > "c:/prog/bf/root/HEAD/pgsql.build/src/test/subscription/tmp_check/t_001_rep_changes_subscriber_data/pgdata/postmaster.pid": > Permission denied Bail out! system pg_ctl failed > > I'd been writing these off as Microsoft randomness and/or antivirus > interference, but it suddenly occurred to me that there might be a > consistent explanation: since commit f13ea95f9, when pg_ctl is waiting > for server start/stop, it is trying to read postmaster.pid > more-or-less concurrently with the postmaster writing to that file. > On Unix that's not much of a problem, but I believe that on Windows > you have to specifically open the file with sharing enabled, or you > get error messages like these. > The postmaster should be enabling sharing, because port.h redirects > open/fopen to pgwin32_open/pgwin32_fopen which enable the sharing > flags. > But it only does that #ifndef FRONTEND. So pg_ctl is just using naked > open(), which could explain these failures. > > If this theory is accurate, it should be pretty easy to replicate the > problem if you modify the postmaster to hold postmaster.pid open > longer when rewriting it, e.g. stick fractional-second sleeps into > CreateLockFile and AddToDataDirLockFile. > > I'm not in a position to investigate this in detail nor test a fix, > but I think somebody should. > > regards, tom lane -- regars, Roman Zharkov --=_f8b65275dd92c704ff6a73808b7baffb Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=pg_ctl.patch Content-Disposition: attachment; filename=pg_ctl.patch; size=7127 RnJvbSA3ZGIyNDRmNjIyNGQ3NzJhMGMwZmIyNmU2ZGZjMzhiMmJhZDdhOTNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSb21hbiBaaGFya292IDxyLnpoYXJrb3ZAcG9zdGdyZXNwcm8u cnU+CkRhdGU6IEZyaSwgMTIgSnVsIDIwMTkgMTM6MDE6NTggKzA3MDAKU3ViamVjdDogW1BBVENI XSBbcmVmZXIgI1BHUFJPLTI4NDZdIEF2b2lkIHNoYXJlIGxvY2tzIG9uIGxvZ19maWxlIGJldHdl ZW4gb2xkCiBhbmQgbmV3IGNtZC5leGUgd2hlbiB0aGUgc2VydmVyIHJlc3RhcnRzLiBwZ19jdGwg bm93IG9wZW5zIHRoZSBwb3N0bWFzdGVyLnBpZAogZmlsZSB1c2luZyBwZ3dpbjMyX29wZW4oKSBm dW5jdGlvbiB0byBjb3JyZWN0bHkgaGFuZGxlIHNoYXJlIGxvY2tzLiBPbgogV2luZG93cyBzeXN0 ZW1zIHdlIGNhbm5vdCBoYW5kbGUgRVJST1JfREVMRVRFX1BFTkRJTkcgYmVjYXVzZSBHZXRMYXN0 RXJyb3IoKQogcmV0dXJucyBFUlJPUl9BQ0NFU1NfREVOSUVEIGluc3RlYWQuIFNvIHdlIHJlbmFt ZSB0aGUgbG9jayBmaWxlcyBiZWZvcmUKIGRlbGV0ZSB0aGVtLiBEaXNjdXNzaW9uOgogaHR0cHM6 Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0LzE2OTIyLjE1MjA3MjIxMDglNDBz c3MucGdoLnBhLnVzCgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYyB8ICAx OCArKysrLQogc3JjL2Jpbi9wZ19jdGwvcGdfY3RsLmMgICAgICAgICAgIHwgMTM1ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDE1MCBpbnNl cnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2luaXQvbWlzY2luaXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYwppbmRl eCBjZTkyOWQ4ODA2Li4zMmEzZTk1MjBmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9p bml0L21pc2Npbml0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jCkBA IC04NDAsOSArODQwLDIxIEBAIFVubGlua0xvY2tGaWxlcyhpbnQgc3RhdHVzLCBEYXR1bSBhcmcp CiAKIAlmb3JlYWNoKGwsIGxvY2tfZmlsZXMpCiAJewotCQljaGFyCSAgICpjdXJmaWxlID0gKGNo YXIgKikgbGZpcnN0KGwpOwotCi0JCXVubGluayhjdXJmaWxlKTsKKwkJLyoKKwkJICogT24gV2lu ZG93cyBzeXN0ZW1zIHdlIGNhbm5vdCBoYW5kbGUgRVJST1JfREVMRVRFX1BFTkRJTkcKKwkJICog YmVjYXVzZSBHZXRMYXN0RXJyb3IoKSByZXR1cm5zIEVSUk9SX0FDQ0VTU19ERU5JRUQgaW5zdGVh ZC4KKwkJICogU28gcmVuYW1lIHRoZSBmaWxlIGZpcnN0LgorCQkgKi8KKwkJY2hhcgkgICAqdG1w ZmlsZTsKKwkJY2hhcgkgICAqY3VyZmlsZSA9IChjaGFyICopbGZpcnN0KGwpOworCQl0bXBmaWxl ID0gcHNwcmludGYoIiVzLmRlbGV0ZWQiLCBjdXJmaWxlKTsKKwkJaWYgKHJlbmFtZShjdXJmaWxl LCB0bXBmaWxlKSA9PSAwKSB7CisJCQl1bmxpbmsodG1wZmlsZSk7CisJCX0KKwkJZWxzZSB7CisJ CQl1bmxpbmsoY3VyZmlsZSk7CisJCX0KKwkJcGZyZWUodG1wZmlsZSk7CiAJCS8qIFNob3VsZCB3 ZSBjb21wbGFpbiBpZiB0aGUgdW5saW5rIGZhaWxzPyAqLwogCX0KIAkvKiBTaW5jZSB3ZSdyZSBh Ym91dCB0byBleGl0LCBubyBuZWVkIHRvIHJlY2xhaW0gc3RvcmFnZSAqLwpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19jdGwvcGdfY3RsLmMgYi9zcmMvYmluL3BnX2N0bC9wZ19jdGwuYwppbmRleCBl ZDIzOTZhYTZjLi42YjY3MDVlMGYyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2N0bC9wZ19jdGwu YworKysgYi9zcmMvYmluL3BnX2N0bC9wZ19jdGwuYwpAQCAtMzEsNiArMzEsOCBAQAogCiAjaWZk ZWYgV0lOMzIJCQkJCS8qIG9uIFVuaXgsIHdlIGRvbid0IG5lZWQgbGlicHEgKi8KICNpbmNsdWRl ICJwcWV4cGJ1ZmZlci5oIgorI2luY2x1ZGUgIndpbmRvd3MuaCIKKyNpbmNsdWRlICJ0bGhlbHAz Mi5oIgogI2VuZGlmCiAKIC8qIFBJRCBjYW4gYmUgbmVnYXRpdmUgZm9yIHN0YW5kYWxvbmUgYmFj a2VuZCAqLwpAQCAtNzUsNiArNzcsMTEgQEAgdHlwZWRlZiBlbnVtCiAKIHN0YXRpYyBib29sIGRv X3dhaXQgPSB0cnVlOwogc3RhdGljIGludAl3YWl0X3NlY29uZHMgPSBERUZBVUxUX1dBSVQ7Cisj aWZkZWYgV0lOMzIKK3N0YXRpYyBpbnQJd2luZG93c19zaGVsbF93YWl0X3NlY29uZHMgPSAxOwor I2RlZmluZQkJb3BlbihhLGIsYykgcGd3aW4zMl9vcGVuKGEsYixjKSAvKiBJdCBpcyBub3QgbmVj ZXNzYXJ5IHRvIGluY2x1ZGUgd2hvbGUgcG9ydC5oICovCisjZGVmaW5lCQlmb3BlbihhLGIpIHBn d2luMzJfZm9wZW4oYSxiKQorI2VuZGlmCiBzdGF0aWMgYm9vbCB3YWl0X3NlY29uZHNfYXJnID0g ZmFsc2U7CiBzdGF0aWMgYm9vbCBzaWxlbnRfbW9kZSA9IGZhbHNlOwogc3RhdGljIFNodXRkb3du TW9kZSBzaHV0ZG93bl9tb2RlID0gRkFTVF9NT0RFOwpAQCAtMTEwLDYgKzExNyw4IEBAIHN0YXRp YyBwaWRfdCBwb3N0bWFzdGVyUElEID0gLTE7CiAKICNkZWZpbmUgc2h1dGRvd25FdmVudAkgIHNo dXRkb3duSGFuZGxlc1swXQogI2RlZmluZSBwb3N0bWFzdGVyUHJvY2VzcyBzaHV0ZG93bkhhbmRs ZXNbMV0KK3N0YXRpYyBwZ3BpZF90CXBnd2luMzJfZ2V0cHBpZChwZ3BpZF90IHBpZCk7CitzdGF0 aWMgYm9vbAkJcGd3aW4zMl9wYXJlbnRfc2hlbGxfaXNfYWxpdmUocGlkX3QgcGlkKTsKICNlbmRp ZgogCiAKQEAgLTg2Nyw2ICs4NzYsMTIgQEAgZG9fc3RvcCh2b2lkKQogCiAJcGlkID0gZ2V0X3Bn cGlkKGZhbHNlKTsKIAorI2lmZGVmIFdJTjMyCisJLyogT24gV2luZG93cyBzeXN0ZW1zIHdlIG11 c3QgYWRkaXRpb25hbHkgY2hlY2sgc3RhdHVzIG9mIHRoZSBwcm9jZXNzZXMgYWZ0ZXIgc2VydmVy IHN0b3BzICovCisJcGdwaWRfdAkJcG9zdG1hc3RlcnNfc2hlbGxfcGlkOworCXBvc3RtYXN0ZXJz X3NoZWxsX3BpZCA9IHBnd2luMzJfZ2V0cHBpZChwaWQpOworI2VuZGlmCisKIAlpZiAocGlkID09 IDApCQkJCS8qIG5vIHBpZCBmaWxlICovCiAJewogCQl3cml0ZV9zdGRlcnIoXygiJXM6IFBJRCBm aWxlIFwiJXNcIiBkb2VzIG5vdCBleGlzdFxuIiksIHByb2duYW1lLCBwaWRfZmlsZSk7CkBAIC05 MzQsNiArOTQ5LDMyIEBAIGRvX3N0b3Aodm9pZCkKIAkJCQkJCQkgICAid2FpdGluZyBmb3Igc2Vz c2lvbi1pbml0aWF0ZWQgZGlzY29ubmVjdGlvbi5cbiIpKTsKIAkJCWV4aXQoMSk7CiAJCX0KKwor I2lmZGVmIFdJTjMyCisJCS8qCisJCSogT24gV2luZG93cyBzeXN0ZW1zIHBvc3RtYXN0ZXIncyBz aGVsbCBtYXkgc3RpbGwgcnVuIGFmdGVyIHBvc3RtYXN0ZXIucGlkIGZpbGUgaGFzIGRlbGV0ZWQu CisJCSogVGhpcyBtYXkgbGVhZCB0byBzaGFyZSBsb2NrcyBvbiBsb2dfZmlsZSBiZXR3ZWVuIG9s ZCBhbmQgbmV3IGNtZC5leGUgd2hlbiB0aGUgc2VydmVyIHJlc3RhcnRzLgorCQkqIFRoZSBzaGFy ZSBsb2NrcyBkbyBub3QgYWxsb3cgdGhlIG5ldyBjbWQuZXhlIHRvIHJ1bi4KKwkJKi8KKwkJaWYg KHBvc3RtYXN0ZXJzX3NoZWxsX3BpZCA+IDAgJiYgcGd3aW4zMl9wYXJlbnRfc2hlbGxfaXNfYWxp dmUocG9zdG1hc3RlcnNfc2hlbGxfcGlkKSkKKwkJeworCQkJcHJpbnRfbXNnKF8oIlxucG9zdG1h c3RlcidzIHNoZWxsIGlzIHN0aWxsIGFsaXZlLiB3YWl0aW5nIGZvciBzZXJ2ZXIgdG8gc2h1dCBk b3duIGFnYWluLi4uIikpOworCQkJLyogd2FpdCBmb3Igc3RvcCAqLworCQkJZm9yIChjbnQgPSAw OyBjbnQgPCB3aW5kb3dzX3NoZWxsX3dhaXRfc2Vjb25kcyAqIFdBSVRTX1BFUl9TRUM7IGNudCsr KQorCQkJeworCQkJCWlmIChwZ3dpbjMyX3BhcmVudF9zaGVsbF9pc19hbGl2ZShwb3N0bWFzdGVy c19zaGVsbF9waWQpKQorCQkJCXsKKwkJCQkJaWYgKGNudCAlIFdBSVRTX1BFUl9TRUMgPT0gMCkK KwkJCQkJCXByaW50X21zZygiLiIpOworCQkJCQlwZ191c2xlZXAoVVNFQ19QRVJfU0VDIC8gV0FJ VFNfUEVSX1NFQyk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQkJYnJlYWs7CisJCQl9CisJCQkvKiBE byBub3QgZmFpbCBpZiB0aGUgcGFyZW50IHByb2Nlc3MgaXMgc3RpbGwgcnVubmluZy4gKi8KKwkJ fQorI2VuZGlmCisKIAkJcHJpbnRfbXNnKF8oIiBkb25lXG4iKSk7CiAKIAkJcHJpbnRfbXNnKF8o InNlcnZlciBzdG9wcGVkXG4iKSk7CkBAIC05NTQsNiArOTk1LDEyIEBAIGRvX3Jlc3RhcnQodm9p ZCkKIAogCXBpZCA9IGdldF9wZ3BpZChmYWxzZSk7CiAKKyNpZmRlZiBXSU4zMgorCS8qIE9uIFdp bmRvd3Mgc3lzdGVtcyB3ZSBtdXN0IGFkZGl0aW9uYWx5IGNoZWNrIHN0YXR1cyBvZiB0aGUgcHJv Y2Vzc2VzIGFmdGVyIHNlcnZlciBzdG9wcyAqLworCXBncGlkX3QJCXBvc3RtYXN0ZXJzX3NoZWxs X3BpZDsKKwlwb3N0bWFzdGVyc19zaGVsbF9waWQgPSBwZ3dpbjMyX2dldHBwaWQocGlkKTsKKyNl bmRpZgorCiAJaWYgKHBpZCA9PSAwKQkJCQkvKiBubyBwaWQgZmlsZSAqLwogCXsKIAkJd3JpdGVf c3RkZXJyKF8oIiVzOiBQSUQgZmlsZSBcIiVzXCIgZG9lcyBub3QgZXhpc3RcbiIpLApAQCAtMTAy Niw2ICsxMDczLDMxIEBAIGRvX3Jlc3RhcnQodm9pZCkKIAkJCWV4aXQoMSk7CiAJCX0KIAorI2lm ZGVmIFdJTjMyCisJCS8qCisJCSogT24gV2luZG93cyBzeXN0ZW1zIHBvc3RtYXN0ZXIncyBzaGVs bCBtYXkgc3RpbGwgcnVuIGFmdGVyIHBvc3RtYXN0ZXIucGlkIGZpbGUgaGFzIGRlbGV0ZWQuCisJ CSogVGhpcyBtYXkgbGVhZCB0byBzaGFyZSBsb2NrcyBvbiBsb2dfZmlsZSBiZXR3ZWVuIG9sZCBh bmQgbmV3IGNtZC5leGUgd2hlbiB0aGUgc2VydmVyIHJlc3RhcnRzLgorCQkqIFRoZSBzaGFyZSBs b2NrcyBkbyBub3QgYWxsb3cgdGhlIG5ldyBjbWQuZXhlIHRvIHJ1bi4KKwkJKi8KKwkJaWYgKHBv c3RtYXN0ZXJzX3NoZWxsX3BpZCA+IDAgJiYgcGd3aW4zMl9wYXJlbnRfc2hlbGxfaXNfYWxpdmUo cG9zdG1hc3RlcnNfc2hlbGxfcGlkKSkKKwkJeworCQkJcHJpbnRfbXNnKF8oIlxucG9zdG1hc3Rl cidzIHNoZWxsIGlzIHN0aWxsIGFsaXZlLiB3YWl0aW5nIGZvciBzZXJ2ZXIgdG8gc2h1dCBkb3du IGFnYWluLi4uIikpOworCQkJLyogd2FpdCBmb3Igc3RvcCAqLworCQkJZm9yIChjbnQgPSAwOyBj bnQgPCB3aW5kb3dzX3NoZWxsX3dhaXRfc2Vjb25kcyAqIFdBSVRTX1BFUl9TRUM7IGNudCsrKQor CQkJeworCQkJCWlmIChwZ3dpbjMyX3BhcmVudF9zaGVsbF9pc19hbGl2ZShwb3N0bWFzdGVyc19z aGVsbF9waWQpKQorCQkJCXsKKwkJCQkJaWYgKGNudCAlIFdBSVRTX1BFUl9TRUMgPT0gMCkKKwkJ CQkJCXByaW50X21zZygiLiIpOworCQkJCQlwZ191c2xlZXAoVVNFQ19QRVJfU0VDIC8gV0FJVFNf UEVSX1NFQyk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQkJYnJlYWs7CisJCQl9CisJCQkvKiBEbyBu b3QgZmFpbCBpZiB0aGUgcGFyZW50IHByb2Nlc3MgaXMgc3RpbGwgcnVubmluZy4gKi8KKwkJfQor I2VuZGlmCisKIAkJcHJpbnRfbXNnKF8oIiBkb25lXG4iKSk7CiAJCXByaW50X21zZyhfKCJzZXJ2 ZXIgc3RvcHBlZFxuIikpOwogCX0KQEAgLTExNzYsNiArMTI0OCw2OSBAQCBkb19wcm9tb3RlKHZv aWQpCiAgKgl1dGlsaXR5IHJvdXRpbmVzCiAgKi8KIAorI2lmZGVmIFdJTjMyCitzdGF0aWMgcGdw aWRfdAorcGd3aW4zMl9nZXRwcGlkKHBncGlkX3QgcGlkKQoreworCS8qIEZpbmRzIHBhcmVudCBw cm9jZXNzIGlkLiBSZXR1cm5zIDAgYnkgZGVmYXVsdC4gKi8KKwlIQU5ETEUgaFNuYXBzaG90Owor CVBST0NFU1NFTlRSWTMyIHBlMzI7CisJcGdwaWRfdCBwcGlkID0gMDsKKworCWhTbmFwc2hvdCA9 IENyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdChUSDMyQ1NfU05BUFBST0NFU1MsIChEV09SRClwaWQp OworCV9fdHJ5eworCQlpZiAoaFNuYXBzaG90ID09IElOVkFMSURfSEFORExFX1ZBTFVFKSBfX2xl YXZlOworCisJCVplcm9NZW1vcnkoJnBlMzIsIHNpemVvZihwZTMyKSk7CisJCXBlMzIuZHdTaXpl ID0gc2l6ZW9mKHBlMzIpOworCQlpZiAoIVByb2Nlc3MzMkZpcnN0KGhTbmFwc2hvdCwgJnBlMzIp KSBfX2xlYXZlOworCisJCWRveworCQkJaWYgKHBlMzIudGgzMlByb2Nlc3NJRCA9PSBwaWQpewor CQkJCXBwaWQgPSAocGdwaWRfdClwZTMyLnRoMzJQYXJlbnRQcm9jZXNzSUQ7CisJCQkJYnJlYWs7 CisJCQl9CisJCX0gd2hpbGUgKFByb2Nlc3MzMk5leHQoaFNuYXBzaG90LCAmcGUzMikpOworCisJ fQorCV9fZmluYWxseXsKKwkJaWYgKGhTbmFwc2hvdCAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkg Q2xvc2VIYW5kbGUoaFNuYXBzaG90KTsKKwl9CisJcmV0dXJuIHBwaWQ7Cit9CisKK3N0YXRpYyBi b29sCitwZ3dpbjMyX3BhcmVudF9zaGVsbF9pc19hbGl2ZShwaWRfdCBwaWQpCit7CisJeworCQkv KiBDaGVja3MgdGhlIHBhcmVudCBjbWQuZXhlIHdpdGggc3BlY2lmaWVkIHBpZCBpcyBydW5uaW5n ICovCisJCUhBTkRMRSBoU25hcHNob3Q7CisJCVBST0NFU1NFTlRSWTMyIHBlMzI7CisJCWJvb2wg cmVzID0gZmFsc2U7CisKKwkJaFNuYXBzaG90ID0gQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90KFRI MzJDU19TTkFQUFJPQ0VTUywgKERXT1JEKXBpZCk7CisJCV9fdHJ5eworCQkJaWYgKGhTbmFwc2hv dCA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgX19sZWF2ZTsKKworCQkJWmVyb01lbW9yeSgmcGUz Miwgc2l6ZW9mKHBlMzIpKTsKKwkJCXBlMzIuZHdTaXplID0gc2l6ZW9mKHBlMzIpOworCQkJaWYg KCFQcm9jZXNzMzJGaXJzdChoU25hcHNob3QsICZwZTMyKSkgX19sZWF2ZTsKKworCQkJZG97CisJ CQkJaWYgKHBlMzIudGgzMlByb2Nlc3NJRCA9PSBwaWQgJiYgc3RyY21wKHBlMzIuc3pFeGVGaWxl LCAiY21kLmV4ZSIpID09IDApeworCQkJCQlyZXMgPSB0cnVlOworCQkJCX0KKwkJCX0gd2hpbGUg KFByb2Nlc3MzMk5leHQoaFNuYXBzaG90LCAmcGUzMikpOworCisJCX0KKwkJX19maW5hbGx5ewor CQkJaWYgKGhTbmFwc2hvdCAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgQ2xvc2VIYW5kbGUoaFNu YXBzaG90KTsKKwkJfQorCQlyZXR1cm4gcmVzOworCX0KK30KKyNlbmRpZgorCiBzdGF0aWMgYm9v bAogcG9zdG1hc3Rlcl9pc19hbGl2ZShwaWRfdCBwaWQpCiB7Ci0tIAoyLjE0LjEud2luZG93cy4x Cgo= --=_f8b65275dd92c704ff6a73808b7baffb--