From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12159 invoked by alias); 13 Aug 2013 13:59:29 -0000 Mailing-List: contact ecos-devel-help@ecos.sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: ecos-devel-owner@ecos.sourceware.org Received: (qmail 12145 invoked by uid 89); 13 Aug 2013 13:59:29 -0000 X-Spam-SWARE-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,SPF_PASS autolearn=ham version=3.3.2 Received: from mail-pa0-f44.google.com (HELO mail-pa0-f44.google.com) (209.85.220.44) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Tue, 13 Aug 2013 13:59:28 +0000 Received: by mail-pa0-f44.google.com with SMTP id fz6so6112068pac.31 for ; Tue, 13 Aug 2013 06:59:27 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.68.2.69 with SMTP id 5mr4731021pbs.124.1376402367158; Tue, 13 Aug 2013 06:59:27 -0700 (PDT) Received: by 10.70.50.129 with HTTP; Tue, 13 Aug 2013 06:59:27 -0700 (PDT) Date: Tue, 13 Aug 2013 13:59:00 -0000 Message-ID: Subject: thread2 test gets deadlocked... Is it possible or am I missing some config option? From: David Fernandez To: eCos development list Content-Type: multipart/mixed; boundary=bcaec52156bd29a2ae04e3d4a61f X-Virus-Found: No X-SW-Source: 2013-08/txt/msg00002.txt.bz2 --bcaec52156bd29a2ae04e3d4a61f Content-Type: text/plain; charset=ISO-8859-1 Content-length: 2473 Hi there, Testing my hal for Cortex-R4, I'm getting a funny behaviour for test kernel/.../thread2. It seems that when two threads have the same priority, there is no timeslicing working (interestingly, the timeslice tests also get deadlocked). The problem seems to appear because thread#2 preempts thread #1, (thread #1 seems to do more API calls than thread #2, but reducing the unnecessary ones does not solve the problem), so thread #2 gets waiting for thread #1 to increase "q", and thread #1 never gets scheduled to realize that "q" has moved to 101, so it can move it to 102... I've added lots of traces (see attached modified thread2.cxx, and the trace output below). Is this test expected to succeed without timeslicing? Is it possible that the checks that thread#1 does at that critical point might tip off the things to the wrong side? Or is it that I might have some wrong configuration option set or unset? If none of the above... Any idea on what could be wrong? Regards. These are the extra output that tries to show what is wrong: INFO:
INFO:
INFO:
INFO: INFO: 1.> INFO: INFO: 2.> INFO: INFO: 3.> INFO: INFO: INFO: 4.> INFO: INFO: 5.> INFO: INFO: INFO: 6.> INFO: INFO: INFO: 7.> INFO: INFO: 8.> INFO: INFO: 9.> INFO: INFO: INFO: 10.> INFO: INFO: 11.> INFO: INFO: 12.> INFO: INFO: 13.> INFO: 100.> INFO: INFO: 101.> INFO: --bcaec52156bd29a2ae04e3d4a61f Content-Type: application/octet-stream; name="thread2.cxx" Content-Disposition: attachment; filename="thread2.cxx" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hkb6epiy0 Content-length: 14205 Ly89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLwovLyAgICAgICAg dGhyZWFkMi5jeHgKLy8KLy8gICAgICAgIFRocmVhZCB0ZXN0IDIKLy8KLy89 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyAjIyMjRUNPU0dQTENP UFlSSUdIVEJFR0lOIyMjIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgZUNvcywgdGhlIEVtYmVkZGVk IENvbmZpZ3VyYWJsZSBPcGVyYXRpbmcgU3lzdGVtLiAgIAovLyBDb3B5cmln aHQgKEMpIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi8vCi8vIGVDb3MgaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBp dCB1bmRlciAgICAKLy8gdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgICAgIAov LyBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9yIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyICAgICAgCi8vIHZlcnNpb24uICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKLy8KLy8gZUNvcyBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9V VCAgICAgIAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgICAgCi8vIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSAgICAKLy8gZm9yIG1vcmUgZGV0YWls cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAovLwovLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAgICAg ICAgCi8vIGFsb25nIHdpdGggZUNvczsgaWYgbm90LCB3cml0ZSB0byB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCAgICAKLy8gNTEgRnJh bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAt MTMwMSwgVVNBLiAgICAgICAgICAgIAovLwovLyBBcyBhIHNwZWNpYWwgZXhj ZXB0aW9uLCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZSB0ZW1wbGF0ZXMg b3IgdXNlICAgICAgCi8vIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZy b20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZSB0aGlzIGZpbGUgICAgICAK Ly8gYW5kIGxpbmsgaXQgd2l0aCBvdGhlciB3b3JrcyB0byBwcm9kdWNlIGEg d29yayBiYXNlZCBvbiB0aGlzIGZpbGUsICAgICAgIAovLyB0aGlzIGZpbGUg ZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgd29yayB0 byBiZSBjb3ZlcmVkIGJ5ICAgCi8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZS4gSG93ZXZlciB0aGUgc291cmNlIGNvZGUgZm9yIHRoaXMgZmls ZSAgICAKLy8gbXVzdCBzdGlsbCBiZSBtYWRlIGF2YWlsYWJsZSBpbiBhY2Nv cmRhbmNlIHdpdGggc2VjdGlvbiAoMykgb2YgdGhlIEdOVSAgIAovLyBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIHYyLiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCi8vCi8vIFRoaXMgZXhjZXB0aW9u IGRvZXMgbm90IGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IGEg d29yayBiYXNlZCAgICAKLy8gb24gdGhpcyBmaWxlIG1pZ2h0IGJlIGNvdmVy ZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgICAgICAg IAovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi8vICMjIyNFQ09T R1BMQ09QWVJJR0hURU5EIyMjIyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKLy89PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQovLyMjIyMjREVTQ1JJUFRJT05CRUdJTiMjIyMKLy8KLy8gQXV0 aG9yKHMpOiAgICAgZHNtCi8vIENvbnRyaWJ1dG9yczogICAgZHNtCi8vIERh dGU6ICAgICAgICAgIDE5OTgtMDItMTkKLy8gRGVzY3JpcHRpb246Ci8vICAg IHRlc3RzIHNjaGVkdWxlciAmIHRocmVhZHMgJiBwcmlvcml0aWVzCi8vICAg ICsgY3JlYXRlIG11bHRpcGxlIHRocmVhZHMgd2l0aCB2YXJpb3VzIHByaW9y aXRpZXMKLy8gICAgKyBjaGVjayBoaWdoZXN0IHByaW9yaXR5IHJ1bm5pbmcg dGhyZWFkIGlzIGFsd2F5cyBydW5uaW5nCi8vICAgICsgY2hlY2sgbmV4dCBo aWdoZXN0IHJ1bnMgd2hlbiBoaWdoZXN0IHN1c3BlbmRlZAovLyAgICArIGNo ZWNrIHNldmVyYWwgdGhyZWFkcyBvZiBlcXVhbCBwcmlvcml0eSBzaGFyZSB0 aW1lCi8vICAgICAgKG9ubHkgIUNZR0lOVF9LRVJORUxfU0NIRURVTEVSX1VO SVFVRV9QUklPUklUSUVTKQovLyAgICArIGNoZWNrIG90aGVyIHRocmVhZHMg YXJlIHN0YXJ2ZWQKLy8gICAgKyBjaGVjayBzZXR0aW5nIHByaW9yaXR5IGR5 bmFtaWNhbGx5IGNhdXNlcyBhIHRocmVhZCB0bwovLyAgICAgIGJlY29tZS9z dGF5IGN1cnJlbnQvbm9uLWN1cnJlbnQKLy8gT21pc3Npb25zOgovLyAgICAg Y2hlY2sgeWllbGQKLy8gICAgIGNoZWNrIGNhbiBzZXQgdGhyZWFkcyB3aXRo IG1pbiBhbmQgbWF4IHByaW9yaXR5Ci8vIE9wdGlvbnM6Ci8vICAgIENZR0lO VF9LRVJORUxfU0NIRURVTEVSX1VOSVFVRV9QUklPUklUSUVTCi8vICAgIENZ R0lNUF9USFJFQURfUFJJT1JJVFkKLy8gICAgQ1lHTlVNX0tFUk5FTF9TQ0hF RF9QUklPUklUSUVTCi8vICAgIENZR1NFTV9LRVJORUxfU0NIRURfQklUTUFQ Ci8vICAgIENZR1NFTV9LRVJORUxfU0NIRURfTUxRVUVVRQovLyMjIyNERVND UklQVElPTkVORCMjIyMKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQoKI2luY2x1ZGUgPHBrZ2NvbmYva2VybmVsLmg+CgojaW5jbHVkZSA8Y3ln L2tlcm5lbC90aHJlYWQuaHh4PgojaW5jbHVkZSA8Y3lnL2tlcm5lbC90aHJl YWQuaW5sPgojaW5jbHVkZSA8Y3lnL2tlcm5lbC9zY2hlZC5oeHg+CiNpbmNs dWRlIDxjeWcva2VybmVsL211dGV4Lmh4eD4KI2luY2x1ZGUgPGN5Zy9rZXJu ZWwvc2VtYS5oeHg+CgojaW5jbHVkZSA8Y3lnL2luZnJhL3Rlc3RjYXNlLmg+ CgojaW5jbHVkZSA8Y3lnL2tlcm5lbC9zY2hlZC5pbmw+CgovLyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KCiNpZiBkZWZpbmVkKENZR0lNUF9USFJF QURfUFJJT1JJVFkpICYmIFwKICAgICFkZWZpbmVkKENZR1BLR19LRVJORUxf U01QX1NVUFBPUlQpCgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K CnN0YXRpYyBDeWdfQ291bnRpbmdfU2VtYXBob3JlIHMwLCBzMSwgczI7Cgpz dGF0aWMgdm9sYXRpbGUgY3lnX3Vjb3VudDggcSA9IDA7CgpzdGF0aWMgQ3ln X1RocmVhZCAqdGhyZWFkMCwgKnRocmVhZDEsICp0aHJlYWQyOwoKI2RlZmlu ZSBOVEhSRUFEUyAzCiNpbmNsdWRlICJ0ZXN0YXV4Lmh4eCIKCi8vIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKc3RhdGljIHZvaWQgZW50cnkwKCBD WUdfQUREUldPUkQgZGF0YSApCnsKICAgIENIRUNLKCAgMCA9PSBxKysgKTsK ICAgIENZR19URVNUX0lORk8oIlRocmVhZCAjMCBIYXMgcSAwID0+IDEuIik7 CiAgICBDWUdfVEVTVF9JTkZPKCJUaHJlYWQgIzAgd2FpdGluZyBvbiBzMC4u LiIpOwogICAgczAud2FpdCgpOwogICAgQ1lHX1RFU1RfSU5GTygiVGhyZWFk ICMwIHdhaXRpbmcgb24gczAgZG9uZS4iKTsKICAgIENIRUNLKCAgMyA9PSBx KysgKTsKICAgIENZR19URVNUX0lORk8oIlRocmVhZCAjMCBIYXMgcSAzID0+ IDQuIik7CiAgICBDWUdfVEVTVF9JTkZPKCJUaHJlYWQgIzAgUG9zdHMgczEu Iik7CiAgICBzMS5wb3N0KCk7CiAgICBDSEVDSyggIDQgPT0gcSsrICk7CiAg ICBDWUdfVEVTVF9JTkZPKCJUaHJlYWQgIzAgSGFzIHEgNCA9PiA1LiIpOwog ICAgQ1lHX1RFU1RfSU5GTygiVGhyZWFkICMwIHdhaXRpbmcgb24gczAgKDEv MikuLi4iKTsKICAgIHMwLndhaXQoKTsKICAgIENZR19URVNUX0lORk8oIlRo cmVhZCAjMCB3YWl0aW5nIG9uIHMwICgxLzIpIGRvbmUuIik7CiAgICBDWUdf VEVTVF9JTkZPKCJUaHJlYWQgIzAgd2FpdGluZyBvbiBzMCAoMi8yKS4uLiIp OwogICAgczAud2FpdCgpOwogICAgQ1lHX1RFU1RfSU5GTygiVGhyZWFkICMw IHdhaXRpbmcgb24gczAgKDIvMikgZG9uZS4iKTsKICAgIENZR19URVNUX1BB U1NfRklOSVNIKCJUaHJlYWQgMiBPSyIpOwp9CgovLyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KCnN0YXRpYyB2b2lkIGVudHJ5MSggQ1lHX0FERFJX T1JEIGRhdGEgKQp7CiAgICBDSEVDSyggIDEgPT0gcSsrICk7CiAgICBDWUdf VEVTVF9JTkZPKCJUaHJlYWQgIzEgSGFzIHEgMSA9PiAyLiIpOwogICAgQ1lH X1RFU1RfSU5GTygiVGhyZWFkICMxIHdhaXRpbmcgb24gczEuLi4iKTsKICAg IHMxLndhaXQoKTsKICAgIENZR19URVNUX0lORk8oIlRocmVhZCAjMSB3YWl0 aW5nIG9uIHMxIGRvbmUuIik7CiAgICBDSEVDSyggIDUgPT0gcSsrICk7CiAg ICBDWUdfVEVTVF9JTkZPKCJUaHJlYWQgIzEgSGFzIHEgNSA9PiA2LiIpOwog ICAgQ1lHX1RFU1RfSU5GTygiVGhyZWFkICMxIGNoYW5naW5nIHByaW9yaXR5 IGZvciB0aHJlYWQgIzAgdG8gOS4iKTsKICAgIHRocmVhZDAtPnNldF9wcmlv cml0eSg5KTsKICAgIENZR19URVNUX0lORk8oIlRocmVhZCAjMSBQb3N0cyBz MC4iKTsKICAgIHMwLnBvc3QoKTsKICAgIENIRUNLKCAgNiA9PSBxKysgKTsK ICAgIENZR19URVNUX0lORk8oIlRocmVhZCAjMSBIYXMgcSA2ID0+IDcuIik7 CiAgICBDWUdfVEVTVF9JTkZPKCJUaHJlYWQgIzEgY2hhbmdpbmcgcHJpb3Jp dHkgZm9yIHRocmVhZCAjMiB0byAzLiIpOwogICAgdGhyZWFkMi0+c2V0X3By aW9yaXR5KDMpOwogICAgQ0hFQ0soICA4ID09IHErKyApOwogICAgQ1lHX1RF U1RfSU5GTygiVGhyZWFkICMxIEhhcyBxIDggPT4gOS4iKTsKICAgIENZR19U RVNUX0lORk8oIlRocmVhZCAjMSBQb3N0cyBzMi4iKTsKICAgIHMyLnBvc3Qo KTsKICAgIENIRUNLKCAxMiA9PSBxKysgKTsKICAgIENZR19URVNUX0lORk8o IlRocmVhZCAjMSBIYXMgcSAxMiA9PiAxMy4iKTsKICAgIENIRUNLKCA5ID09 IHRocmVhZDAtPmdldF9wcmlvcml0eSgpICk7CiAgICBDSEVDSyggNiA9PSB0 aHJlYWQxLT5nZXRfcHJpb3JpdHkoKSApOwogICAgQ0hFQ0soIDcgPT0gdGhy ZWFkMi0+Z2V0X3ByaW9yaXR5KCkgKTsKICAgIHEgPSAxMDA7CiAgICBDWUdf VEVTVF9JTkZPKCJUaHJlYWQgIzEgSGFzIHEgPT4gMTAwLiIpOwojaWYgIShD WUdJTlRfS0VSTkVMX1NDSEVEVUxFUl9VTklRVUVfUFJJT1JJVElFUykgXAog ICAgJiYgZGVmaW5lZChDWUdTRU1fS0VSTkVMX1NDSEVEX1RJTUVTTElDRSkK ICAgIENZR19URVNUX0lORk8oIlRocmVhZCAjMSBjaGFuZ2luZyBwcmlvcml0 eSBmb3IgdGhyZWFkICMyIHRvIDYuIik7CiAgICB0aHJlYWQyLT5zZXRfcHJp b3JpdHkoNik7CiAgICBDSEVDSyggNiA9PSB0aHJlYWQxLT5nZXRfcHJpb3Jp dHkoKSApOwogICAgQ0hFQ0soIDYgPT0gdGhyZWFkMi0+Z2V0X3ByaW9yaXR5 KCkgKTsKCiAgICBDWUdfVEVTVF9JTkZPKCJUaHJlYWQgIzEgd2FpdGluZyBm b3IgJ3EnIHRvIGJlICE9IDEwMC4uLiIpOwogICAgd2hpbGUgKCAxMDAgPT0g cSApCiAgICAgICAgOwogICAgQ1lHX1RFU1RfSU5GTygiVGhyZWFkICMxIHdh aXRpbmcgZm9yICdxJyB0byBiZSAhPSAxMDAgZG9uZS4iKTsKICAgIENIRUNL KCAxMDEgPT0gcSsrICk7CiAgICBDWUdfVEVTVF9JTkZPKCJUaHJlYWQgIzEg SGFzIHEgMTAxID0+IDEwMi4iKTsKICAgIENZR19URVNUX0lORk8oIlRocmVh ZCAjMSB3YWl0aW5nIG9uIHMxLi4uIik7CiAgICBzMS53YWl0KCk7CiAgICBD WUdfVEVTVF9JTkZPKCJUaHJlYWQgIzEgd2FpdGluZyBvbiBzMSBkb25lLiIp OwogICAgQ0hFQ0soIDEwMyA9PSBxKysgKTsKICAgIENZR19URVNUX0lORk8o IlRocmVhZCAjMSBIYXMgcSAxMDMgPT4gMTA0LiIpOwojZW5kaWYKICAgIENZ R19URVNUX0lORk8oIlRocmVhZCAjMSBQb3N0cyBzMC4iKTsKICAgIHMwLnBv c3QoKTsKICAgIENZR19URVNUX0lORk8oIlRocmVhZCAjMSB3YWl0aW5nIG9u IHMxLi4uIik7CiAgICBzMS53YWl0KCk7CiAgICBDWUdfVEVTVF9JTkZPKCJU aHJlYWQgIzEgd2FpdGluZyBvbiBzMSBkb25lLiIpOwp9CgovLyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KCnN0YXRpYyB2b2lkIGVudHJ5MiggQ1lH X0FERFJXT1JEIGRhdGEgKQp7CiAgICBDSEVDSyggIDIgPT0gcSsrICk7CiAg ICBDWUdfVEVTVF9JTkZPKCJUaHJlYWQgIzIgSGFzIHEgMiA9PiAzLiIpOwog ICAgQ1lHX1RFU1RfSU5GTygiVGhyZWFkICMyIFBvc3RzIHMwLiIpOwogICAg czAucG9zdCgpOwogICAgQ0hFQ0soICA3ID09IHErKyApOwogICAgQ1lHX1RF U1RfSU5GTygiVGhyZWFkICMyIEhhcyBxIDcgPT4gOC4iKTsKICAgIENZR19U RVNUX0lORk8oIlRocmVhZCAjMiB3YWl0aW5nIG9uIHMyLi4uIik7CiAgICBz Mi53YWl0KCk7CiAgICBDWUdfVEVTVF9JTkZPKCJUaHJlYWQgIzIgd2FpdGlu ZyBvbiBzMiBkb25lLiIpOwogICAgQ0hFQ0soICA5ID09IHErKyApOwogICAg Q1lHX1RFU1RfSU5GTygiVGhyZWFkICMyIEhhcyBxIDkgPT4gMTAuIik7CiAg ICBDWUdfVEVTVF9JTkZPKCJUaHJlYWQgIzIgY2hhbmdpbmcgcHJpb3JpdHkg Zm9yIHRocmVhZCAjMSB0byA2LiIpOwogICAgdGhyZWFkMS0+c2V0X3ByaW9y aXR5KDYpOwogICAgQ0hFQ0soIDEwID09IHErKyApOwogICAgQ1lHX1RFU1Rf SU5GTygiVGhyZWFkICMyIEhhcyBxIDEwID0+IDExLiIpOwogICAgQ1lHX1RF U1RfSU5GTygiVGhyZWFkICMyIGNoYW5naW5nIGl0cyBwcmlvcml0eSB0byAy LiIpOwogICAgdGhyZWFkMi0+c2V0X3ByaW9yaXR5KDIpOwogICAgQ0hFQ0so IDExID09IHErKyApOwogICAgQ1lHX1RFU1RfSU5GTygiVGhyZWFkICMyIEhh cyBxIDExID0+IDEyLiIpOwogICAgQ1lHX1RFU1RfSU5GTygiVGhyZWFkICMy IGNoYW5naW5nIGl0cyBwcmlvcml0eSB0byA3LiIpOwogICAgdGhyZWFkMi0+ c2V0X3ByaW9yaXR5KDcpOwoKI2lmICEoQ1lHSU5UX0tFUk5FTF9TQ0hFRFVM RVJfVU5JUVVFX1BSSU9SSVRJRVMpIFwKICAgICYmIGRlZmluZWQoQ1lHU0VN X0tFUk5FTF9TQ0hFRF9USU1FU0xJQ0UpCiAgICBDSEVDSyggNiA9PSB0aHJl YWQxLT5nZXRfcHJpb3JpdHkoKSApOwogICAgQ0hFQ0soIDYgPT0gdGhyZWFk Mi0+Z2V0X3ByaW9yaXR5KCkgKTsKCiAgICBDSEVDSyggMTAwID09IHErKyAp OwogICAgQ1lHX1RFU1RfSU5GTygiVGhyZWFkICMyIEhhcyBxIDEwMCA9PiAx MDEuIik7CiAgICBDWUdfVEVTVF9JTkZPKCJUaHJlYWQgIzIgd2FpdGluZyBm b3IgJ3EnIHRvIGJlICE9IDEwMS4uLiIpOwogICAgd2hpbGUgKCAxMDEgPT0g cSApCiAgICAgICAgOwogICAgQ1lHX1RFU1RfSU5GTygiVGhyZWFkICMyIHdh aXRpbmcgZm9yICdxJyB0byBiZSAhPSAxMDEgZG9uZS4iKTsKICAgIENIRUNL KCAxMDIgPT0gcSsrICk7CiAgICBDWUdfVEVTVF9JTkZPKCJUaHJlYWQgIzIg SGFzIHEgMTAyID0+IDEwMy4iKTsKICAgIENZR19URVNUX0lORk8oIlRocmVh ZCAjMiBQb3N0cyBzMS4iKTsKICAgIHMxLnBvc3QoKTsKI2VuZGlmCiAgICBD WUdfVEVTVF9JTkZPKCJUaHJlYWQgIzIgUG9zdHMgczAuIik7CiAgICBzMC5w b3N0KCk7CiAgICBDWUdfVEVTVF9JTkZPKCJUaHJlYWQgIzIgd2FpdGluZyBv biBzMi4uLiIpOwogICAgczIud2FpdCgpOwogICAgQ1lHX1RFU1RfSU5GTygi VGhyZWFkICMyIHdhaXRpbmcgb24gczIgZG9uZS4iKTsKfQoKCi8vIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKdm9pZCB0aHJlYWQyX21haW4oIHZv aWQgKQp7CiAgICBDWUdfVEVTVF9JTklUKCk7CiAgICAKICAgIGlmKCA5ID49 IENZR19USFJFQURfTUlOX1BSSU9SSVRZICkKICAgICAgICBDWUdfVEVTVF9G QUlMX0ZJTklTSCgiVGVzdCByZXF1aXJlcyBwcmlvcml0aWVzIHVwIHRvIDki KTsKCiAgICBpZiggMiA8PSBDWUdfVEhSRUFEX01BWF9QUklPUklUWSApCiAg ICAgICAgQ1lHX1RFU1RfRkFJTF9GSU5JU0goIlRlc3QgcmVxdWlyZXMgcHJp b3JpdGllcyBhcyBsb3cgYXMgMiIpOwoKICAgIHRocmVhZDAgPSBuZXdfdGhy ZWFkKCBlbnRyeTAsIDAgKTsKICAgIHRocmVhZDEgPSBuZXdfdGhyZWFkKCBl bnRyeTEsIDEgKTsKICAgIHRocmVhZDIgPSBuZXdfdGhyZWFkKCBlbnRyeTIs IDIgKTsKCiAgICB0aHJlYWQwLT5yZXN1bWUoKTsKICAgIHRocmVhZDEtPnJl c3VtZSgpOwogICAgdGhyZWFkMi0+cmVzdW1lKCk7CgogICAgQ1lHX1RFU1Rf SU5GTygiTWFpbiBjaGFuZ2luZyBwcmlvcml0eSBmb3IgdGhyZWFkICMwIHRv IDUuIik7CiAgICB0aHJlYWQwLT5zZXRfcHJpb3JpdHkoNSk7CiAgICBDWUdf VEVTVF9JTkZPKCJNYWluIGNoYW5naW5nIHByaW9yaXR5IGZvciB0aHJlYWQg IzEgdG8gNi4iKTsKICAgIHRocmVhZDEtPnNldF9wcmlvcml0eSg2KTsKICAg IENZR19URVNUX0lORk8oIk1haW4gY2hhbmdpbmcgcHJpb3JpdHkgZm9yIHRo cmVhZCAjMiB0byA3LiIpOwogICAgdGhyZWFkMi0+c2V0X3ByaW9yaXR5KDcp OwoKICAgIENZR19URVNUX0lORk8oIkNoYW5naW5nIFByaW9yaXRpZXMgaW4g bWFpbiBkb25lLiIpOwoKICAgIGlmKCA5ID49IENZR19USFJFQURfTUlOX1BS SU9SSVRZICkKICAgICAgICBDWUdfVEVTVF9GQUlMX0ZJTklTSCgiVGVzdCBy ZXF1aXJlcyBwcmlvcml0aWVzIHVwIHRvIDkiKTsKCiAgICBpZiggMiA8PSBD WUdfVEhSRUFEX01BWF9QUklPUklUWSApCiAgICAgICAgQ1lHX1RFU1RfRkFJ TF9GSU5JU0goIlRlc3QgcmVxdWlyZXMgcHJpb3JpdGllcyBhcyBsb3cgYXMg MiIpOwoKICAgIEN5Z19TY2hlZHVsZXI6OnN0YXJ0KCk7CgogICAgQ1lHX1RF U1RfRkFJTF9GSU5JU0goIlVucmVzb2x2ZWQiKTsKfQoKLy8gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCgpleHRlcm5DIHZvaWQKY3lnX3N0YXJ0KCB2 b2lkICkKewojaWZkZWYgQ1lHU0VNX0hBTF9TVE9QX0NPTlNUUlVDVE9SU19P Tl9GTEFHCiAgICBjeWdfaGFsX2ludm9rZV9jb25zdHJ1Y3RvcnMoKTsKI2Vu ZGlmCiAgICB0aHJlYWQyX21haW4oKTsKfQovLyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KCgojZWxzZSAvLyBDWUdQS0dfS0VSTkVMX1NNUF9TVVBQ T1JUIGV0YwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpleHRl cm5DIHZvaWQKY3lnX3N0YXJ0KCB2b2lkICkKeyAKICAgIENZR19URVNUX0lO SVQoKTsKICAgIENZR19URVNUX0lORk8oIlRocmVhZDIgdGVzdCByZXF1aXJl czpcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZpbmVkKENZR0lN UF9USFJFQURfUFJJT1JJVFkpICYmXG4iCiAgICAgICAgICAgICAgICAgICAg ICAgICAiIWRlZmluZWQoQ1lHUEtHX0tFUk5FTF9TTVBfU1VQUE9SVClcbiIp OwogICAgQ1lHX1RFU1RfTkEoIlRocmVhZDIgdGVzdCByZXF1aXJlbWVudHMi KTsKfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojZW5kaWYg Ly8gQ1lHUEtHX0tFUk5FTF9TTVBfU1VQUE9SVCBldGMKCi8vIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQovLyBFT0YgdGhyZWFkMi5jeHgK --bcaec52156bd29a2ae04e3d4a61f--