Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tXG5B-00573C-5X for pgsql-general@arkaria.postgresql.org; Mon, 13 Jan 2025 08:46:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tXG59-008vdS-Or for pgsql-general@arkaria.postgresql.org; Mon, 13 Jan 2025 08:46:00 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tXG59-008vaO-2a for pgsql-general@lists.postgresql.org; Mon, 13 Jan 2025 08:45:59 +0000 Received: from zproxy4.mail3d.it ([212.78.3.137]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1tXG56-0008qa-15 for pgsql-general@lists.postgresql.org; Mon, 13 Jan 2025 08:45:58 +0000 Received: from zproxy4.mail3d.it (localhost.localdomain [127.0.0.1]) by zproxy4.mail3d.it (Postfix) with ESMTPS id A564A6086D; Mon, 13 Jan 2025 09:45:54 +0100 (CET) Received: from localhost (localhost.localdomain [127.0.0.1]) by zproxy4.mail3d.it (Postfix) with ESMTP id 9607560858; Mon, 13 Jan 2025 09:45:54 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.10.3 zproxy4.mail3d.it 9607560858 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cleistech.it; s=1D99BE42-E8ED-11ED-9278-A8004466375A; t=1736757954; bh=bsh4ihXO6SoF+0xVGbS7kOpvbUyLq97UnlAaWpatc4w=; h=Message-ID:Date:MIME-Version:To:From; b=Y9v6v9xtZfktis611h6MP4gp0tsHM30lJS6wWgZMi5U6oK0h7HeVGCAUgwg7No1P7 NyISa8CSarqZafuPteHhQ9Qkl+Eozrhf5pGCYQF91KLsBW9c3FyKVt9+vePQ+fWtG9 pYS5J/JLYde7bL71ozLSoArptQqjb7/O/tFTDS7GCIrkkQ/udlc1WPcrVI4jUfNupp rEHs+8/vTcV4xXJKiMMDFO1CewPVU7vIvp+rywGFwMrt/88HUsuvUsFUiK6JjQGdv/ z3NLJWYOOCDVJEnm/uxcNsAqtntePpZmpnzQIjR7JqCSZq6nPwUnQmvXvSqlaKifpJ HZ/9isB5rjMIQ== Received: from zproxy4.mail3d.it ([127.0.0.1]) by localhost (zproxy4.mail3d.it [127.0.0.1]) (amavis, port 10026) with ESMTP id o-fphkvVCL9n; Mon, 13 Jan 2025 09:45:54 +0100 (CET) Received: from [192.168.0.20] (host-87-1-250-25.retail.telecomitalia.it [87.1.250.25]) by zproxy4.mail3d.it (Postfix) with ESMTPSA id 1D3F760846; Mon, 13 Jan 2025 09:45:54 +0100 (CET) Content-Type: multipart/mixed; boundary="------------XTbotTI6G7ihcSSOHX8Og74b" Message-ID: <382a1eec-2069-4010-bbdb-37260a1a53a7@cleistech.it> Date: Mon, 13 Jan 2025 09:45:53 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Intermittent errors when fetching cursor rows on PostgreSQL 16 To: Adrian Klaver , pgsql-general@lists.postgresql.org Cc: Massimo Catti , Livio Pizzolo References: <446423eb-4a4e-4135-bbb8-4d0e5c7aac3b@cleistech.it> <25d5fb16-9bb2-4ad1-969c-eaca03ccbaaf@aklaver.com> <6ce80aaa-970b-4432-938a-39a07f811599@cleistech.it> <9f60eb26-7d34-4228-bd78-74c6deb90e54@aklaver.com> <282c2a48-bb12-4486-b03d-563523cac81b@cleistech.it> <2645a89e-d661-4f2b-92b3-01154a78d535@aklaver.com> <54689a6a-839c-44c4-90b5-b9692e8e7cb0@aklaver.com> <4efe42a2-789c-4957-a564-25199869f6ec@cleistech.it> Content-Language: it From: Enrico Schenone In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------XTbotTI6G7ihcSSOHX8Og74b Content-Type: multipart/alternative; boundary="------------SiPCCsBM0aRhzixssLQ0pmkj" --------------SiPCCsBM0aRhzixssLQ0pmkj Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable Hello, Adrian. As I said days ago, I have arranged a kind of stress test in production=20 environment. I wrote a program that loads a temporary table, loads 2049 rows into=20 them from a baseline_table and finally declare two nested cursors. The first cursor is on the temp table as parent while the second is on a=20 lookup table as child. The program logic is the transposition of one fragment of several=20 production programs that was failing on cursors, and has to be intended=20 as a POC only. The program has been wrote in both pure C with libpq (see attached=20 source program) and in 4Js Genero language. Each program was executed by a shell script loop who ran 10 times the=20 program each minute with 1 second sleep between each run (see attachment)= . An automatic scheduler has continuously submitted 4 parallel tasks (two=20 for C version and two for 4Js version programs). The test was started the Dec, 29 2024 and it was kept in execution for=20 many days directly in production environment. In total, nearly a billion of child test cursors were executed while all=20 other production tasks was running (normally 20 to 30 concurrent batch=20 services on a pool of 100). And Well, I'm quite confused: no error at all has been detected, not=20 only on the test programs but in the whole production system. The error=20 was completely disappeared. Then I have stopped the four tasks of the stress test leaving all other=20 services running for a week, and again no error at all. No setup was changed nor servers was rebooted, nor infrastructure has=20 been upgraded during the test period. As a result, at the moment I'm not understood not only Why & Where the=20 error was occurring, but also Why it is disappeared. Anyone may feel free to give me his opinion. For the moment I'll make no other test unless the error is knocking back=20 to my door. *Enrico Schenone* Software Architect *Cleis Tech s.r.l.* - www.gruppocleis.it Sede di Genova, Via Paolo Emilio Bensa, 2 - 16124 Genova, ITALY Tel: +39-0104071400 =C2=A0 Fax: +39-0104073276 Mobile: +39-320=20 7709352file:///home/enrico/Documenti/Work/Clienti/hh24/Incident/err-6372/= C-test/C-testCursors.c E-mail: eschenone@cleistech.it Il 26/12/24 00:20, Adrian Klaver ha scritto: > On 12/24/24 14:23, Enrico Schenone wrote: >> Hi, Adrian. >> I'm arranging a test program with two nested cursors in two versions: >> >> =C2=A01. 4Js Genero BDL language >> =C2=A02. pure C with libpq language >> >> I'll put both programs in stress execution into the production=20 >> environment looking for some hours how they behaves. >> Possible combinations are: >> >> =C2=A01. no-one throws an error >> =C2=A02. only the 4Js Genero version throws an error >> =C2=A03. only the pure C version throws an error >> =C2=A04. both versions throws the error >> >> This stress test should address further investigations. >> I'll keep you informed. > > Yes, would like to see how this turns out. > >> >> Regards. >> Enrico Schenone >> > > --------------SiPCCsBM0aRhzixssLQ0pmkj Content-Type: multipart/related; boundary="------------SU9tY0K7n5lmqmuzTZUK0BEb" --------------SU9tY0K7n5lmqmuzTZUK0BEb Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hello, Adrian.
As I said days ago, I have arranged a kind of stress test in production environment.
I wrote a program that loads a temporary table, loads 2049 rows into them from a baseline_table and finally declare two nested cursors. The first cursor is on the temp table as parent while the second is on a lookup table as child.

The program logic is the transposition of one fragment of several production programs that was failing on cursors, and has to be intended as a POC only.

The program has been wrote in both pure C with libpq (see attached source program) and in 4Js Genero language.

Each program was executed by a shell script loop who ran 10 times the program each minute with 1 second sleep between each run (see attachment).

An automatic scheduler has continuously submitted 4 parallel tasks (two for C version and two for 4Js version programs).

The test was started the Dec, 29 2024 and it was kept in execution for many days directly in production environment.
In total, nearly a billion of child test cursors were executed while all other production tasks was running (normally 20 to 30 concurrent batch services on a pool of 100).

And Well, I'm quite confused: no error at all has been detected, not only on the test programs but in the whole production system. The error was completely disappeared.

Then I have stopped the four tasks of the stress test leaving all other services running for a week, and again no error at all.

No setup was changed nor servers was rebooted, nor infrastructure has been upgraded during the test period.

As a result, at the moment I'm not understood not only Why & Where the error was occurring, but also Why it is disappeared.

Anyone may feel free to give me his opinion.
For the moment I'll make no other test unless the error is knocking back to my door.

Enrico Schenone=
Software Architect

Cleis Tech s.r.l. - www.gruppocleis.it
Sede di Genova, Via Pao= lo Emilio Bensa, 2 - 16124 Genova, ITALY
Tel: +39-0104071400 =C2=A0 Fax: +39-0104073276
Mobile: +39-320 7709352file:///home/enrico/Documenti/Work/Clienti/hh24/Incident/err-6372/= C-test/C-testCursors.c
E-mail: eschenone@cleistech.it

Il 26/12/24 00:20, Adrian Klaver ha scritto:
On 12/24/24 14:23, Enrico Schenone wrote:
Hi, Adrian.
I'm arranging a test program with two nested cursors in two versions:

=C2=A01. 4Js Genero BDL language
=C2=A02. pure C with libpq language

I'll put both programs in stress execution into the production environment looking for some hours how they behaves.
Possible combinations are:

=C2=A01. no-one throws an error
=C2=A02. only the 4Js Genero version throws an error
=C2=A03. only the pure C version throws an error
=C2=A04. both versions throws the error

This stress test should address further investigations.
I'll keep you informed.

Yes, would like to see how this turns out.


Regards.
Enrico Schenone




--------------SU9tY0K7n5lmqmuzTZUK0BEb Content-Type: image/jpeg; name="LogoCleis" Content-Disposition: inline; filename="LogoCleis" Content-Id: Content-Transfer-Encoding: base64 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 4NIbBxd5at1id9z29vGzw//Z --------------SU9tY0K7n5lmqmuzTZUK0BEb Content-Type: image/png; name="HTTPS://IBM.BIZ/BDQAJH" Content-Disposition: inline; filename="HTTPS://IBM.BIZ/BDQAJH" Content-Id: Content-Transfer-Encoding: base64 iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAABmJLR0QA/wD/AP+gvaeTAAAA CXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5QsREAoxoj9qugAAABl0RVh0Q29tbWVudABD cmVhdGVkIHdpdGggR0lNUFeBDhcAAANiSURBVHja7d1LbuQwDEDB8cD3v7KzyCYJAqMtiAzJ rtqnPzYe1OBo5OO6rusf8Kv/LgEIBAQCAgGBgEBAICAQEAgIBBAIvOZ8+gfHcbT/0nfbz+6+ X/a2texrvXpdJtx3Kwj4iQUCAYGAQEAg0Ne588Uq/e/dSmPJiM9S6VpPvu9WEBAICAQEAgIB gUB9Z9YbTRh1ru70rbR7uNL7dbjvVhAQCAgEBAICAYFAfadLsEfE+HTCQQlWEBAICAQQCAgE BALRjHl/6HI+rdGxFQQEAgIBgYBAQCDAp7Qxb6XzW+90eexZpUfFTbjvVhAQCAgEBAICAYFA X1vHvNN3ikbs9F0d105/xJwVBAQCAgGBgEAAgcCrjqv7dssqF3Jx1Blx+IJbagUBgYBAQCAg EBAIvJPHu3krjTNXZY9BI3blrr5mxHfvsiN55btbQUAgIBAQCAgEBAL1Pd7NO2Hsuvr9sj/n hGvdfYxtBQGBgEBAICAQEAjUt/XQhohdndm7QbN33obc1ELXpfv1tIKAQEAgIBAQCAgE6ksb 867KPmQg+3O+82i8wwjYCgICAYGAQEAgIBCoL+3Qhkpn865651FuxDVzNi/4iQUCAYEAAgGB wA7nzherdMZulx2mXXblroo4R9fZvOAnFggEBAICAYEAXz0e81baldtlp+jqZ8neBZx9/5zN C35igUBAIIBAQCCww9azeW/faMDIssvjxLocrOFsXvATCwQCAgEEAgKBHR7v5jXOrP+a2dez y/2zgoBAQCAgEBAICARmStvN2+aCDD/zNnusXGmMbQUBgYBAQCAgEBAIzJS2m7eSu/Fil6l3 pZ2+k/+lwAoCAgGBgEBAICAQqO/c+WKVxn3Zjz2L+JyVrmelQzcyv4MVBAQCAgGBgEBAIFDf mfVGXQ5DWP0OEQcldHmUmhUEBAIIBAQCAgGBwF86XYLvVseuXUbAEd999TXvVBk5W0FAICAQ EAgIBAQC9RnzPhAxAr7T5e8iRrlVHiNnBQGBgEBAICAQEAjUlzbm7fKYruyzcrN3+kaMZCN2 3trNC35igUBAICAQQCDwqq1j3ulnu0bsdu1yzSqdg7z6dx7BBn5igUBAICAQEAjMdFxdttmC FQQEAgIBgYBAQCCAQEAgIBAQCAgEBAItfQAWP4GprOsaxgAAAABJRU5ErkJggg== --------------SU9tY0K7n5lmqmuzTZUK0BEb-- --------------SiPCCsBM0aRhzixssLQ0pmkj-- --------------XTbotTI6G7ihcSSOHX8Og74b Content-Type: text/x-csrc; charset=UTF-8; name="C-testCursors.c" Content-Disposition: attachment; filename="C-testCursors.c" Content-Transfer-Encoding: base64 I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPC91c3Iv aW5jbHVkZS9wb3N0Z3Jlc3FsL2xpYnBxLWZlLmg+CiNpbmNsdWRlIDxzeXMvdGltZS5oPgoj aW5jbHVkZSA8dGltZS5oPgoKLy8gVGhpcyBmdW5jdGlvbiBwcmludCB0aGUgdGltZXN0YW1w CnZvaWQgcHJpbnRfdGltZXN0YW1wKEZJTEUgKnN0cmVhbSkgewogICAgc3RydWN0IHRpbWV2 YWwgdHY7CiAgICBnZXR0aW1lb2ZkYXkoJnR2LCBOVUxMKTsKCiAgICB0aW1lX3Qgbm93ID0g dHYudHZfc2VjOwogICAgc3RydWN0IHRtICp0aW1laW5mbyA9IGxvY2FsdGltZSgmbm93KTsK CiAgICBjaGFyIGJ1ZmZlcls2NF07CiAgICBzdHJmdGltZShidWZmZXIsIHNpemVvZihidWZm ZXIpLCAiJVktJW0tJWQgJUg6JU06JVMiLCB0aW1laW5mbyk7CgogICAgZnByaW50ZihzdHJl YW0sICJbJXMuJTAzbGRdICIsIGJ1ZmZlciwgdHYudHZfdXNlYyAvIDEwMDApOwp9CgovLyBF cnJvciBoYW5kbGVyCnZvaWQgaGFuZGxlX2Vycm9yKFBHY29ubiAqY29ubiwgUEdyZXN1bHQg KnJlcywgY29uc3QgY2hhciAqY29udGV4dCkgewogICAgcHJpbnRfdGltZXN0YW1wKHN0ZGVy cik7CiAgICBjb25zdCBjaGFyICpzcWxzdGF0ZSA9IHJlcyA/IFBRcmVzdWx0RXJyb3JGaWVs ZChyZXMsIFBHX0RJQUdfU1FMU1RBVEUpIDogTlVMTDsKICAgIGZwcmludGYoc3RkZXJyLCAi RVJST1IgaW4gJXM6ICVzIiwgY29udGV4dCwgUFFlcnJvck1lc3NhZ2UoY29ubikpOwogICAg aWYgKHNxbHN0YXRlKSB7CiAgICAgICAgZnByaW50ZihzdGRlcnIsICIgKFNRTFNUQVRFOiAl cykiLCBzcWxzdGF0ZSk7CiAgICB9CiAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIik7CgogICAg aWYgKHJlcykgUFFjbGVhcihyZXMpOwogICAgUFFmaW5pc2goY29ubik7CiAgICBleGl0KEVY SVRfRkFJTFVSRSk7Cn0KCmludCBtYWluKCkgewogICAgcHJpbnRfdGltZXN0YW1wKHN0ZG91 dCk7CiAgICBwcmludGYoIlN0YXJ0IHByb2dyYW0gQy10ZXN0Q3Vyc29yc1xuIik7CiAgICBj b25zdCBjaGFyICpjb25uaW5mbyA9ICJob3N0PTE5Mi4xNjguMjAuOTQgZGJuYW1lPWhoMjRv ZGRzX3Byb2QgdXNlcj1teV91c2VyIHBhc3N3b3JkPW15X3Bhc3N3b3JkIjsKICAgIFBHY29u biAqY29ubiA9IFBRY29ubmVjdGRiKGNvbm5pbmZvKTsKCiAgICBpZiAoUFFzdGF0dXMoY29u bikgIT0gQ09OTkVDVElPTl9PSykgewogICAgICAgIHByaW50X3RpbWVzdGFtcChzdGRlcnIp OwogICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ29ubmVjdGlvbiB0byBkYXRhYmFzZSBmYWls ZWQ6ICVzXG4iLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAgICAgICAgUFFmaW5pc2goY29u bik7CiAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgIH0KCiAgICBwcmludF90aW1l c3RhbXAoc3Rkb3V0KTsKICAgIHByaW50ZigiQ29ubmVjdGVkIHRvIGRhdGFiYXNlLlxuIik7 CgogICAgLy8gU3RhcnQgdGhlIHRyYW5zYWN0aW9uCiAgICBQR3Jlc3VsdCAqcmVzID0gUFFl eGVjKGNvbm4sICJCRUdJTiIpOwogICAgaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdS RVNfQ09NTUFORF9PSykgewogICAgICAgIGhhbmRsZV9lcnJvcihjb25uLCByZXMsICJCRUdJ TiIpOwogICAgfQogICAgUFFjbGVhcihyZXMpOwoKICAgIC8vIENyZWF0aW5nIHRlbXBvcmFy eSB0YWJsZQogICAgcmVzID0gUFFleGVjKGNvbm4sICJDUkVBVEUgVEVNUCBUQUJMRSBJRiBO T1QgRVhJU1RTIHR0MSAobGlrZSB0ZW1wbGF0ZV90YWJsZSkiKTsKICAgIGlmIChQUXJlc3Vs dFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spIHsKICAgICAgICBoYW5kbGVfZXJy b3IoY29ubiwgcmVzLCAiQ1JFQVRFIFRFTVAgVEFCTEUiKTsKICAgIH0KICAgIFBRY2xlYXIo cmVzKTsKICAgIHByaW50X3RpbWVzdGFtcChzdGRvdXQpOwogICAgcHJpbnRmKCJUZW1wIHRh YmxlIGNyZWF0ZWQuXG4iKTsKCiAgICAvLyBDYXJpY2FtZW50byBkZWxsYSB0ZW1wIHRhYmxl CiAgICByZXMgPSBQUWV4ZWMoY29ubiwgIklOU0VSVCBJTlRPIHR0MSBTRUxFQ1QgKiBGUk9N IHRlc3RfYmFzZWxpbmVfdGFibGUgb3JkZXIgYnkgbmVsYWIsIGJrbWtjX2lkLCBzcG9ydF9p ZCwgcGFsX2NfaWQsIGJ0X2lkLCBvY19pZCwgbXBfaWQsIHNwcmVhZCIpOwogICAgaWYgKFBR cmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykgewogICAgICAgIGhhbmRs ZV9lcnJvcihjb25uLCByZXMsICJJTlNFUlQgSU5UTyBURU1QIFRBQkxFIik7CiAgICB9CiAg ICBQUWNsZWFyKHJlcyk7CiAgICBwcmludF90aW1lc3RhbXAoc3Rkb3V0KTsKICAgIHByaW50 ZigiVGVtcCB0YWJsZSBsb2FkZWQuXG4iKTsKCiAgICAvLyBEZWNsYXJpbmcgcGFyZW50IGN1 cnNvciBvbiB0ZW1wb3JhcnkgdGFibGUKICAgIHJlcyA9IFBRZXhlYyhjb25uLCAiREVDTEFS RSBwYXJlbnRfY3Vyc29yIENVUlNPUiBGT1IgU0VMRUNUIGJ0X2lkLCBldmVudG9faWQgRlJP TSB0dDEiKTsKICAgIGlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPTU1BTkRf T0spIHsKICAgICAgICBoYW5kbGVfZXJyb3IoY29ubiwgcmVzLCAiREVDTEFSRSBwYXJlbnRf Y3Vyc29yIik7CiAgICB9CiAgICBQUWNsZWFyKHJlcyk7CgogICAgLy8gRGVjbGFyaW5nIGNo aWxkIGN1cnNvciBvdXQtb2YtcGFyZW50IGxvb3AKICAgIC8vIEp1c3QgYXMgUE9DCiAgICBy ZXMgPSBQUWV4ZWMoY29ubiwgIkRFQ0xBUkUgY2hpbGRfY3Vyc29yIENVUlNPUiBGT1IgU0VM RUNUIGRlc2NyaSBGUk9NIGxvb2t1cF90YWJsZSIpOwogICAgaWYgKFBRcmVzdWx0U3RhdHVz KHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykgewogICAgICAgIGhhbmRsZV9lcnJvcihjb25u LCByZXMsICJERUNMQVJFIGNoaWxkX2N1cnNvciIpOwogICAgfQogICAgUFFjbGVhcihyZXMp OwoKICAgIC8vIFBhcmVudCBjdXJzb3IgbG9vcAogICAgd2hpbGUgKDEpIHsKICAgICAgICBy ZXMgPSBQUWV4ZWMoY29ubiwgIkZFVENIIE5FWFQgRlJPTSBwYXJlbnRfY3Vyc29yIik7CiAg ICAgICAgaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09LKSB7CiAg ICAgICAgICAgIGhhbmRsZV9lcnJvcihjb25uLCByZXMsICJGRVRDSCBwYXJlbnRfY3Vyc29y Iik7CiAgICAgICAgfQoKICAgICAgICBpbnQgbnJvd3MgPSBQUW50dXBsZXMocmVzKTsKICAg ICAgICBpZiAobnJvd3MgPT0gMCkgewogICAgICAgICAgICBQUWNsZWFyKHJlcyk7CiAgICAg ICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu cm93czsgaSsrKSB7CiAgICAgICAgICAgIGNoYXIgKnBhcmVudF9pZCA9IFBRZ2V0dmFsdWUo cmVzLCBpLCAwKTsKICAgICAgICAgICAgY2hhciAqcGFyZW50X25hbWUgPSBQUWdldHZhbHVl KHJlcywgaSwgMSk7CgogICAgICAgICAgICAvLyBDaGlsZCBjdXJzb3Igd2hpdGggcGFyYW1l dHJpYyBxdWVyeQogICAgICAgICAgICBjaGFyIHF1ZXJ5WzI1Nl07CiAgICAgICAgICAgIHNu cHJpbnRmKHF1ZXJ5LCBzaXplb2YocXVlcnkpLCAiQ0xPU0UgY2hpbGRfY3Vyc29yOyBERUNM QVJFIGNoaWxkX2N1cnNvciBDVVJTT1IgRk9SIFNFTEVDVCBkZXNjcmkgRlJPTSBsb29rdXBf dGFibGUgV0hFUkUgaWQgPSAlcyIsIHBhcmVudF9pZCk7CgogICAgICAgICAgICBQR3Jlc3Vs dCAqY2hpbGRfcmVzID0gUFFleGVjKGNvbm4sIHF1ZXJ5KTsKICAgICAgICAgICAgaWYgKFBR cmVzdWx0U3RhdHVzKGNoaWxkX3JlcykgIT0gUEdSRVNfQ09NTUFORF9PSykgewogICAgICAg ICAgICAgICAgaGFuZGxlX2Vycm9yKGNvbm4sIGNoaWxkX3JlcywgIk9QRU4gY2hpbGRfY3Vy c29yIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgUFFjbGVhcihjaGlsZF9yZXMpOwoK ICAgICAgICAgICAgLy8gQ2hpbGQgY3Vyc29yIGxvb3AKICAgICAgICAgICAgd2hpbGUgKDEp IHsKICAgICAgICAgICAgICAgIGNoaWxkX3JlcyA9IFBRZXhlYyhjb25uLCAiRkVUQ0ggTkVY VCBGUk9NIGNoaWxkX2N1cnNvciIpOwogICAgICAgICAgICAgICAgaWYgKFBRcmVzdWx0U3Rh dHVzKGNoaWxkX3JlcykgIT0gUEdSRVNfVFVQTEVTX09LKSB7CiAgICAgICAgICAgICAgICAg ICAgaGFuZGxlX2Vycm9yKGNvbm4sIGNoaWxkX3JlcywgIkZFVENIIGNoaWxkX2N1cnNvciIp OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGludCBjaGlsZF9ucm93cyA9 IFBRbnR1cGxlcyhjaGlsZF9yZXMpOwogICAgICAgICAgICAgICAgaWYgKGNoaWxkX25yb3dz ID09IDApIHsKICAgICAgICAgICAgICAgICAgICBQUWNsZWFyKGNoaWxkX3Jlcyk7CiAgICAg ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg ICAgZm9yIChpbnQgaiA9IDA7IGogPCBjaGlsZF9ucm93czsgaisrKSB7CiAgICAgICAgICAg ICAgICAgICAgY2hhciAqZGV0YWlsID0gUFFnZXR2YWx1ZShjaGlsZF9yZXMsIGosIDApOwog ICAgICAgICAgICAgICAgICAgIHByaW50X3RpbWVzdGFtcChzdGRvdXQpOwogICAgICAgICAg ICAgICAgICAgIHByaW50ZigiQ2hpbGQgcm93OiAlc1xuIiwgZGV0YWlsKTsKICAgICAgICAg ICAgICAgIH0KCiAgICAgICAgICAgICAgICBQUWNsZWFyKGNoaWxkX3Jlcyk7CiAgICAgICAg ICAgIH0KICAgICAgICB9CgogICAgICAgIFBRY2xlYXIocmVzKTsKICAgIH0KCiAgICBwcmlu dF90aW1lc3RhbXAoc3Rkb3V0KTsKICAgIHByaW50ZigiRW5kIG9mIGN1cnNvcnMgcHJvY2Vz cy5cbiIpOwogICAgLy8gQ2hpdWRpIGlsIGN1cnNvcmUgcGFkcmUKICAgIHJlcyA9IFBRZXhl Yyhjb25uLCAiQ0xPU0UgcGFyZW50X2N1cnNvciIpOwogICAgaWYgKFBRcmVzdWx0U3RhdHVz KHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykgewogICAgICAgIGhhbmRsZV9lcnJvcihjb25u LCByZXMsICJDTE9TRSBwYXJlbnRfY3Vyc29yIik7CiAgICB9CiAgICBQUWNsZWFyKHJlcyk7 CgogICAgLy8gTm90ZTogdGhlIGxhc3QgY2hpbGQgY3Vyc29yIHdhcyBpbnRlbnRpb25hbGx5 IGxlYXZlZCBvcGVuCgogICAgLy8gQ2xvc2luZyB0cmFuc2FjdGlvbgogICAgcmVzID0gUFFl eGVjKGNvbm4sICJFTkQiKTsKICAgIGlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVT X0NPTU1BTkRfT0spIHsKICAgICAgICBoYW5kbGVfZXJyb3IoY29ubiwgcmVzLCAiRU5EIik7 CiAgICB9CiAgICBQUWNsZWFyKHJlcyk7CgogICAgUFFmaW5pc2goY29ubik7CiAgICBwcmlu dF90aW1lc3RhbXAoc3Rkb3V0KTsKICAgIHByaW50ZigiRW5kIHByb2dyYW0gQy10ZXN0Q3Vy c29yczJcbiIpOwogICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKfQoK --------------XTbotTI6G7ihcSSOHX8Og74b Content-Type: application/x-shellscript; name="C-testCursors.sh" Content-Disposition: attachment; filename="C-testCursors.sh" Content-Transfer-Encoding: base64 X3BpZD0kJApfb3V0ZmlsZT0vdG1wL3Rlc3RQZ0N1cnNvcnMvQy10ZXN0Q3Vyc29yc19gZGF0 ZSArJVklbSVkYF8kJAp0b3VjaCAkX291dGZpbGUKZm9yIGkgaW4gYHNlcSAxIDEwYAogIGRv CiAgIGVjaG8gIkxvb3Agbi4gIiAkaSA+PiAkX291dGZpbGUKICAgL3Vzci9sb2NhbC9iaW4v Qy10ZXN0Q3Vyc29yczIgPj4gJF9vdXRmaWxlIDI+PiAkX291dGZpbGUKICAgZWNobyBzbGVl cCAxID4+ICRfb3V0ZmlsZQpkb25lCmVjaG8gIkVuZCBvZiBjdXJzb3JzIHRlc3QuIiA+PiAk X291dGZpbGUK --------------XTbotTI6G7ihcSSOHX8Og74b--