From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by sourceware.org (Postfix) with ESMTPS id DEFCC385782B for ; Sun, 13 Nov 2022 23:00:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org DEFCC385782B Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=ibm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=ibm.com Received: from pps.filterd (m0098417.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.5) with ESMTP id 2ADMwVO3013923; Sun, 13 Nov 2022 23:00:13 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : mime-version; s=pp1; bh=oYI/TJttqZgqFBeKhWBWKx/gplWRLmFVoC33fgHhzN0=; b=KW5ctPrT/RSbzaCZCCqG63uSvanp2498YUryHC576fG8al+KstAwFovuzuep6XZJ3oXB FBkB/XiieptYfU+HqQnv/WbXNSgtq5bxMwKTsXZzqspkQyrbJTh+/DbcXch+obckLsaI cAwbUgjBYnfgCi8AriqLMb6gfllQPjf9O6n1G1axJtdHr0z1ih17Y0KnjI85wmn9pRgl uN6/rgCJXWWyIJ3oVQYnmHfObUQesRuO03Ym1zzqaD0mXcrPK8g80ZW4a/KA+lz8oVnb pi5x4vulIDQR5bhfKi37660P9okNLSd0cceV7OJaOMPgQWmVcuwjeTZGobTp0MgsISE0 +A== Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2106.outbound.protection.outlook.com [104.47.70.106]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3ku9um00tk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sun, 13 Nov 2022 23:00:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NWe+ItGE6JZXtBm5CLJhLChDQswVMMfq6EYev+stEkpqCWngbz4Hd67JgwWX09/Rjh8nhD1DPQ7njIYeZ4a+5wdYD6/F0TuVEkErDZ67pmE4P+KNMSE0DF8jO6RelcuUrY8t5ghErEqYdz76DeGGQqJLEw8Fqgx7UZFGb/LOXamvzEB/KyWPgfsCrlTBa+PQrE7ngTIb0zouO1Qny3c/hxUzmcfJwEmtyhZQ4hWKjamE313pB1R370UrF0XHowmj+KFjIIlvgZQOV2BHn6mzrSXOU7ClVYBQrYPH8kN8NFgEtT9D3uPbkn0eZKnfTNKjdBlYcE3cNK3ru49ihzawUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=oYI/TJttqZgqFBeKhWBWKx/gplWRLmFVoC33fgHhzN0=; b=ehZtS3ri54tphkFXPpcf/UDOGiDw+f9h7+CUicfIWIxd6Hy5JzaTOgUGeOcCHYjweTCsk+CyF7NBssSaGfYzkfxb+Adw0Z1ZIH2LmKM5AX7ApcJwkzYrVuyETW+xLZ9HHzIu/vmPAL/awfH2T0dEwbeSyHiCD8/+RyCzflzBvWfC3FbSngE94rdoA51k+eG/sK/YP0O6nm6Q3rc9mVk0cUK94CZ8RoAJL7DNk2fIsxmzjhwamfmdhVz4pOAmPe3wuYqf7+jx5MnCPh9GO20Z5IFQjWoF2jcS6w3inda34v6uJjQUCgMvPkO+2Oh6GHqXkHRb739s5sIqWV6zyLszNA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ibm.com; dmarc=pass action=none header.from=ibm.com; dkim=pass header.d=ibm.com; arc=none Received: from CH2PR15MB3544.namprd15.prod.outlook.com (2603:10b6:610:5::26) by MN2PR15MB4287.namprd15.prod.outlook.com (2603:10b6:208:1b6::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.24; Sun, 13 Nov 2022 23:00:11 +0000 Received: from CH2PR15MB3544.namprd15.prod.outlook.com ([fe80::4b0:172e:c48:151d]) by CH2PR15MB3544.namprd15.prod.outlook.com ([fe80::4b0:172e:c48:151d%7]) with mapi id 15.20.5813.013; Sun, 13 Nov 2022 23:00:11 +0000 From: Aditya Kamath1 To: Ulrich Weigand , "simark@simark.ca" , "gdb-patches@sourceware.org" CC: Sangamesh Mallayya Subject: Re: [PATCH] 0001-Fix-multi-thread-debug-bug-in-AIX.patch Thread-Topic: [PATCH] 0001-Fix-multi-thread-debug-bug-in-AIX.patch Thread-Index: AQHY6DximDPpCqTL9kGyFvcEZokFBq4jlIiAgBFljYeAAA2HgIAIORay Date: Sun, 13 Nov 2022 18:15:43 +0000 Message-ID: References: <0866c91331b08f2870fad6e6a13fbcd1a9823b48.camel@de.ibm.com> <5df6ab523034d1997ffda5bb06c3bd87777dcccb.camel@de.ibm.com> In-Reply-To: <5df6ab523034d1997ffda5bb06c3bd87777dcccb.camel@de.ibm.com> Accept-Language: en-IN, en-US Content-Language: en-IN X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH2PR15MB3544:EE_|MN2PR15MB4287:EE_ x-ms-office365-filtering-correlation-id: 3e1cc66b-2a48-40a7-c2c7-08dac5cad169 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Vapysac9ZyGimJq5FjjCcN85CAH2V4zwGD3+UigOul8PiA2PFFSEb1HVv4+QhKXZ8Vy4dSM0UztiP3crquWZ2v90+6KQcAg+45y3uQwAyaifWI8yQ1FrWZx/ntWadkxP9rS4LrNHGIoRhsgfx4EIJxfQ/uimJC7214N90Gp2Fecnkkqj6OhX/+2EvJDT7cTJEYKOLBWH6cFMUcojE97Z4YYv/7AJs3Gc0eYCtgROcIWM/oSoU/sUSahX6k3o93SbYyuUwD30SUaaR588a8fLsxnrDOMzD6ZY7xz2iRDC8E+LaoEpS/O9LlaDWCpOaSdKbNcQd8wPSF9FUxcuIwUfwAXpSJPQWBWjJU4vAQx/QJLKzg2VpeR8VjOLYmr+tiJzrv7DvMS+9ZBnLBu5jicsOVQalMGCj8+QtyIel4z4A3upBMQp9dU1JlAKjrnkFhSaAqogJGI9hijVG0Wr+Fcm6Kvx7HnJyUtRKbW2rVFBIMqDWCBdBDCkh28KGBz9+5AoG9CpRIg4zBPCeN8JJmqhvVijDXBvTSyuouox2mWsf/ugun8cX4fq6q10k5RCEbSbMr8m/EmIysRiEGrKjGRJ6KKAD5KmbdGuXaw/QCovZGTOV4LsAw4zGuJ5DHAo9l+3iKNbT3uoDlhoHdHjIDMUc4jnpf9VmeLZmvp2D3oiqIH0rE/n8qc+1w1RHrvU1pOp3ajTY/axGIjYPDMTf0x7CrBUUUp5Gq/Igk1ANca9x2y5Eh8MWiaGg3ueuXBwYqOjwiCE12whUv52ar9Mhcd68Q== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR15MB3544.namprd15.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(396003)(39860400002)(346002)(136003)(376002)(366004)(451199015)(478600001)(9686003)(71200400001)(6666004)(53546011)(7696005)(110136005)(6506007)(38100700002)(55016003)(122000001)(99936003)(316002)(38070700005)(83380400001)(33656002)(2906002)(86362001)(186003)(19627405001)(64756008)(4326008)(76116006)(8936002)(66446008)(41300700001)(66556008)(8676002)(91956017)(66476007)(66946007)(52536014)(5660300002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?TEVl3UHZ+VJ69EiQZB6vY7DrRuDnujjCj1XjM0Lc3uqQj4MZIn0IrWyDHy?= =?iso-8859-1?Q?RzCTmIz/x1qjKoa+Lsr8/os0GOJNSmDk6Lr6/iNRsB3NLriBXGLKgrJEfX?= =?iso-8859-1?Q?Knf5IF3luykdbZes2qPkt25iyIwaUG2xAbd/7SgwVTLdiqjU921arJ3C+y?= =?iso-8859-1?Q?F404NazQKTSAGH7lMDgWnPXD1ziUcAnt8VVVE1M+BZ5P5EzNhaWGmOoBR1?= =?iso-8859-1?Q?/HQHaLeIMaspWNKlkdOsctDwnK9A7UlzFJdi8gAgzExITu1IexneTwu7/j?= =?iso-8859-1?Q?sSev4pAJbL5ZhDEWO4ZFV5PJGhUS7jBmfhyCcXQ45fG4Agl2pokz6AH0in?= =?iso-8859-1?Q?CNttnNsW+Q56Bf2hxRtZwGOjs2bN8S2yXg/P+ACIYKriJNvYxbm6Jld2aZ?= =?iso-8859-1?Q?OKDZiP2qgmkqImGh3X5Weqo4iZMdwWNgfnFRd9vwSLQQc4Uv+dkTPz5Ozf?= =?iso-8859-1?Q?60c9Yx3Gvg+SlyB/njFNG864cV3kxQKPMRavLtcgfyy+VUdUMABFgtEFTk?= =?iso-8859-1?Q?RLDoxAxY9HPhkoIHjXrl+9l252LO/wS5aHkCpPxSq5UlB5fCTt44g9Iajn?= =?iso-8859-1?Q?x0uySUDRnw5eg4jGfQfbqQWcbT9zn9KTwMdsc4IWABMVktWx1rNBBExxrE?= =?iso-8859-1?Q?SY7RaKYpCg/b8p43ih6Px59b1bIm55oYQJ3226DayL2fsWcx7G8EAJer8e?= =?iso-8859-1?Q?hd953pKD2Q5ZbCye8vDavsR9pQRB4BjEYmUxj6CY9RUcHi9hZd0ggytTKm?= =?iso-8859-1?Q?ul4zrbdXoKthNXIlYFgCamlyofbQPzes35ptJt00ziX0tCu5obYpGgRZe9?= =?iso-8859-1?Q?qcQ8W18LoYZg27KiG0hucYhO5DzK/iIaN9SmgInUTsB5iB/pKa3Awjz2+2?= =?iso-8859-1?Q?OC7POxD0qWgV6La8vv9zkEo0QEGzDFJrI33EZoSfoSqTX0Jmz28sLyqrlh?= =?iso-8859-1?Q?v8WT17auWcXFqyRdT+P4urgrAYm5n0godRoXpBWYgyDYux3qlfWkBYTy0w?= =?iso-8859-1?Q?0TTdnHfLW1gqWuQkAnZI+vWh/opw6cgy6EJ25p5UhVTYGbVEMD8i4ZpqWn?= =?iso-8859-1?Q?zf/g+dBcKnwAgPk96WnJbeskfHolbuZ4qDddZ+X4pN3Hwt2qkIzhn9ei0f?= =?iso-8859-1?Q?ZMalS+VQIkFmKXV551EhDuLxlvti8GZOUXd16/SGy0kpd+3QLsoV8PNTqd?= =?iso-8859-1?Q?31xnWrHnXLcdE5f0teOxo/K2BZis0Q1wfhh5jNTX9PoLy37XU8hNgRq+cq?= =?iso-8859-1?Q?awiVFfFKCgdYIPL6S4uLIVp3XGM31iMSF36qJ1/2zANGZVDbJIi45bZwZI?= =?iso-8859-1?Q?oj9G0Dh2k+Bf518VkYsL/R3+Cn2XlllmLeDMOJxWxQUVXTW1cYmm+bV0F0?= =?iso-8859-1?Q?q1EMKAxYBsZ97yBNt2m7BXgY7jQ8UuJ3beXCDbpZAsakZBsmE1eBKA98HQ?= =?iso-8859-1?Q?yrzHUikZCFW4gs4xwdUHCJNwkt3mvzScHMMujcE9MiG4+wQNr6m08XCTho?= =?iso-8859-1?Q?2okTZcJ52xtV+jftc7usyEikhUP9qVbdLUuXavzXFsIiWXej7JZOXSxmie?= =?iso-8859-1?Q?jlv1Dk6vlSxS4Tm8AB9N0krKHRKI8yVJGvQPc5lAdkUsWUN0soYi2hkDJm?= =?iso-8859-1?Q?EmDRn7jNtfJFlEKBiQW+9zLxl8xM/P94EpLg9W2bCAMPOHXdpIfAaAbKp9?= =?iso-8859-1?Q?n3+7S8B00z0z1d+FbCa4IlRrpRUUkmhjKu+JTkpi?= Content-Type: multipart/mixed; boundary="_004_CH2PR15MB3544E198B0622C3AD22597A2D6029CH2PR15MB3544namp_" MIME-Version: 1.0 X-OriginatorOrg: ibm.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH2PR15MB3544.namprd15.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3e1cc66b-2a48-40a7-c2c7-08dac5cad169 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Nov 2022 23:00:11.3312 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: fcf67057-50c9-4ad4-98f3-ffca64add9e9 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 1cBrjXdv9zB8BQV0YFfwglHXJETT1ZIJ19Ky7m+4rDnTarUtSpNu+4LQyBElwUww5YyNQsrrNLSwA+DRPwN1dw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR15MB4287 X-Proofpoint-ORIG-GUID: PuRYZ-B_d6v81fT_dn_P7V5O5T5QhVGl X-Proofpoint-GUID: PuRYZ-B_d6v81fT_dn_P7V5O5T5QhVGl X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-13_14,2022-11-11_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 phishscore=0 adultscore=0 impostorscore=0 malwarescore=0 mlxscore=0 clxscore=1015 suspectscore=0 bulkscore=0 mlxlogscore=999 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211130154 X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00,DATE_IN_PAST_03_06,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,HTML_MESSAGE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --_004_CH2PR15MB3544E198B0622C3AD22597A2D6029CH2PR15MB3544namp_ Content-Type: multipart/alternative; boundary="_000_CH2PR15MB3544E198B0622C3AD22597A2D6029CH2PR15MB3544namp_" --_000_CH2PR15MB3544E198B0622C3AD22597A2D6029CH2PR15MB3544namp_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi Ulrich, Please find attached the new patch. See 0001-Fix-Multi-thread-debug-bug-fix= -in-AIX.patch .. >So I think instead of adding a "priv" struct to that GDB thread >identifying the main process, the sync_threadlists routine should >actually just delete it (or replace it with the actual first thread, >whatever is easier). I have chosen not to add the first main thread as new thread. Instead, we c= arry on with main process thread itself adding private data to it. Kindly s= ee the first if condition. I observed this with the linux folks where in th= eir output as you mentioned do not add any new threads the first time on re= cognition of multi thread debugee for the main process. >Looking at the code, there already seems to be a place where >sync_threadlists deletes GDB threads that do not match onto >and of the threads reported by the AIX thread library - can >you verify why this doesn't trigger here? So that is when there is a thread that exits, and it will reflect in pthrea= d library thread buffer but not in the GDB thread buffer. In order to keep = both of them in sync we delete extra one's in GDB thread library buffer to = maintain sync in both of them. It is not going to hit to delete extra threa= ds representing the same thread be it for the main process or anything else= . pi =3D=3D pcount will happen only in the thread exit case where pthread b= uf threads are deleted as it will immediately reflect but in GDB thread buf= we need to take care of the same by deleting the exited threads. A couple of things I want to inform you is that the way the second for loop= is executing is not correct from here on to sync both the buffer lists [pt= hread and GDB thread]. Since we are now not adding multiple threads for the= same process main thread one representing the GDB thread and the other by = the pthread those conditions and indices like pi and gi will fail. Now ther= e has not pcount - 1 threads in the GDB thread buffer always. Condition 2 a= nd 3 in the patch take care of them for addition and deletion of threads. Attaching a sample output with source code. Let me know what you think and if any case that I may have missed out. If i= t is okay, then kindly push this patch. Have a nice day ahead. Thanks, Regards, Aditya. ------------------------------------------------------------------ Consider the program below:- [ Program Credits:- GDB test case continue-pe= nding-status.c] #include #include #include #include #include pthread_barrier_t barrier; #define NUM_THREADS 2 void * thread_function (void *arg) { pthread_barrier_wait (&barrier); while (1); /* break here */ } int main (void) { int i; alarm (300); pthread_barrier_init (&barrier, NULL, NUM_THREADS); for (i =3D 0; i < NUM_THREADS; i++) { pthread_t thread; int res; res =3D pthread_create (&thread, NULL, thread_function, NULL); assert (res =3D=3D 0); } while (1) sleep (1); return 0; } Output after patch:- Reading symbols from /home/XYZ/gdb_tests/continue-pending-status... (gdb) r Starting program: /home/XYZ/gdb_tests/continue-pending-status ^C[New Thread 258] [New Thread 515] Thread 1 received signal SIGINT, Interrupt. 0xd0595fb0 in _p_nsleep () from /usr/lib/libpthread.a(shr_xpg5.o) (gdb) info threads Id Target Id Frame * 1 process 26149278 0xd0595fb0 in _p_nsleep () from /usr/lib/libpthread.a(shr_xpg5.o) 2 Thread 258 (tid 24445361, running) thread_function (arg=3D0x0) at continue-pending-status.c:36 3 Thread 515 (tid 16187681, running) thread_function (arg=3Dwarning: (= Internal error: pc 0x0 in read in psymtab, but not in symtab.) 0x0) at continue-pending-status.c:36 (gdb) ________________________________ From: Ulrich Weigand Sent: 08 November 2022 17:47 To: simark@simark.ca ; Aditya Kamath1 ; gdb-patches@sourceware.org Cc: Sangamesh Mallayya Subject: Re: [PATCH] 0001-Fix-multi-thread-debug-bug-in-AIX.patch Aditya Kamath1 wrote: >>You should find out why the "priv" field isn't >>set up correctly, and fix whatever was going >>wrong there. (I believe this should have been >>done in sync_threadlists.) > >You were right about this. What is happening is the main process >and the thread representing it are treated as two separate threads >by the libpthread library. Main process had no private data set >whereas the thread representing it had. Usually, both of them >should have it and their private data must be the same. I see. I agree this is the root cause of the issue, but the fix doesn't look quite right to me. You should not even *have* the duplicate GDB thread in the first place. >(gdb) info threads > Id Target Id Frame >* 1 process 12059046 0xd0595fb0 in _p_nsleep () from = /usr/lib/libpthread.a(shr_xpg5.o) > 2 Thread 1 (tid 39125487, running) 0xd0595fb0 in _p_nsleep () from = /usr/lib/libpthread.a(shr_xpg5.o) > 3 Thread 258 (tid 23396809, running) thread_function (arg=3D0x0) at c= ontinue-pending-status.c:36 > 4 Thread 515 (tid 36503883, running) thread_function (arg=3Dwarning: = (Internal error: pc 0x0 in read in psymtab, but not in symtab.) This is not how GDB threads are handled on any other platform. While you do have a single dummy thread representing the process if it is *non-threaded*, as soon as the process is recognized as multi-threaded, you will only see a single GDB thread per target thread, and no separate "thread" for the whole process. So I think instead of adding a "priv" struct to that GDB thread identifying the main process, the sync_threadlists routine should actually just delete it (or replace it with the actual first thread, whatever is easier). Looking at the code, there already seems to be a place where sync_threadlists deletes GDB threads that do not match onto and of the threads reported by the AIX thread library - can you verify why this doesn't trigger here? Bye, Ulrich --_000_CH2PR15MB3544E198B0622C3AD22597A2D6029CH2PR15MB3544namp_-- --_004_CH2PR15MB3544E198B0622C3AD22597A2D6029CH2PR15MB3544namp_ Content-Type: application/octet-stream; name="0001-Fix-multi-thread-debug-bug-in-AIX.patch" Content-Description: 0001-Fix-multi-thread-debug-bug-in-AIX.patch Content-Disposition: attachment; filename="0001-Fix-multi-thread-debug-bug-in-AIX.patch"; size=4134; creation-date="Sun, 13 Nov 2022 18:07:15 GMT"; modification-date="Sun, 13 Nov 2022 18:07:39 GMT" Content-Transfer-Encoding: base64 RnJvbSBiOWFmMzA2MmFkMjAzN2I4YWNiNDYzYTBiYmEwYjhjZmM2YTFjNDA1 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBZGl0eWEgVmlkeWFk aGFyIEthbWF0aCA8QWRpdHlhLkthbWF0aDFAaWJtLmNvbT4KRGF0ZTogU3Vu LCAxMyBOb3YgMjAyMiAxMTo0ODo1MiAtMDYwMApTdWJqZWN0OiBbUEFUQ0hd IEZpeCBtdWx0aSB0aHJlYWQgZGVidWcgYnVnIGluIEFJWAoKV2hlbiBhIHBy b2Nlc3MgaXMgbXVsdGkgdGhyZWFkZWQgdGhlbiBBSVggd2FzIGFkZGluZyBh IG5ldyB0aHJlYWQgd2l0aCBhIHByaXYgc2V0LgoKVGhpcyB0aHJlYWQgaXMg dGhlIHNhbWUgYXMgbWFpbiBwcm9jZXNzIHRocmVhZCB3aXRob3V0IGEgcHJp dmF0ZSBkYXRhIHNldC4KCkhlbmNlIGFuIGFzc2VydGlvbiBmYWlsdXJlIGNo ZWNrZWRfc3RhdGljX2Nhc3Q6IEFzc2VydGlvbiByZXN1bHQgIT0gbnVsbHB0 ciBmYWlsZWQgaXMgc2VlbgoKVGhpcyBwYXRjaCBpcyBhIGZpeCBmb3IgdGhl IHNhbWUgd2hlcmUgb25seSBuZXcgdGhyZWFkcyBjcmVhdGVkIGFyZSBhZGRl ZCBhbmQgb25jZSBhIHByb2dyYW0KCiBpcyBtdWx0aSB0aHJlYWRlZCB0aGVu IHRoZSBtYWluIHByb2Nlc3MgcHJpdmF0ZSBkYXRhIGlzIHNldCBpbnN0ZWFk IG9mIGFkZGluZyBhIG5ldyB0aHJlYWQgZm9yIGl0c2VsZi4KLS0tCiBnZGIv YWl4LXRocmVhZC5jIHwgMTA0ICsrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNDcgaW5z ZXJ0aW9ucygrKSwgNTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ2Ri L2FpeC10aHJlYWQuYyBiL2dkYi9haXgtdGhyZWFkLmMKaW5kZXggZTU1NmMx NTM1NzYuLjZmOTEwZmNmODQ3IDEwMDY0NAotLS0gYS9nZGIvYWl4LXRocmVh ZC5jCisrKyBiL2dkYi9haXgtdGhyZWFkLmMKQEAgLTc5NSw2OSArNzk1LDU5 IEBAIHN5bmNfdGhyZWFkbGlzdHMgKGludCBwaWQpCiAgIGcgPSBnYnVmID0g WE5FV1ZFQyAoc3RydWN0IHRocmVhZF9pbmZvICosIGdjb3VudCk7CiAgIGl0 ZXJhdGVfb3Zlcl90aHJlYWRzIChnaXRlcl9hY2N1bSwgJmcpOwogICBxc29y dCAoZ2J1ZiwgZ2NvdW50LCBzaXplb2YgKmdidWYsIGdjbXApOworICAKKyAg LyogSWYgdGhpcyBpcyB0aGUgZmlyc3QgdGltZSB0aGUgcHJvY2VzcyBpcyBw dGhyZWFkZWQgdGhlbgorICAgICB0aGUgbWFpbiBwcm9jZXNzIHJ1bm5pbmcg YXMgb25lIHRocmVhZCBtdXN0IGhhdmUgYSBwcml2YXRlCisgICAgIGRhdGEu ICAqLworIAorICBpZiAocGNvdW50ID09IDEgJiYgZ2NvdW50ID09IDApCisg IHsKKyAgICBwaSA9IDA7CisgICAgYWl4X3RocmVhZF9pbmZvICpwcml2ID0g bmV3IGFpeF90aHJlYWRfaW5mbzsKKyAgICBwcml2LT5wZHRpZCA9IHBidWZb cGldLnBkdGlkOworICAgIHByaXYtPnRpZCA9IHBidWZbcGldLnRpZDsKKyAg ICBwcm9jZXNzX3N0cmF0dW1fdGFyZ2V0ICpwcm9jX3RhcmdldAorICAgICAg ICAgICAgICAgID0gY3VycmVudF9pbmZlcmlvciAoKS0+cHJvY2Vzc190YXJn ZXQgKCk7CisgICAgdGhyZWFkX2luZm8gKnRwID0gZmluZF90aHJlYWRfcHRp ZCAocHJvY190YXJnZXQsIHB0aWRfdCAocGlkKSk7CisgICAgICBpZiAodHAt PnByaXYgPT0gTlVMTCkKKyAgICAgICAgdHAtPnByaXYucmVzZXQgKHByaXYp OworICB9CiAKLSAgLyogQXBwbHkgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUg dHdvIGFycmF5cyB0byBHREIncyB0aHJlYWQgbGlzdC4gICovCi0gIGZvciAo cGkgPSBnaSA9IDA7IHBpIDwgcGNvdW50IHx8IGdpIDwgZ2NvdW50OykKLSAg ICB7Ci0gICAgICBpZiAocGkgPT0gcGNvdW50KQotCXsKLQkgIGRlbGV0ZV90 aHJlYWQgKGdidWZbZ2ldKTsKLQkgIGdpKys7Ci0JfQotICAgICAgZWxzZSBp ZiAoZ2kgPT0gZ2NvdW50KQotCXsKLQkgIGFpeF90aHJlYWRfaW5mbyAqcHJp diA9IG5ldyBhaXhfdGhyZWFkX2luZm87Ci0JICBwcml2LT5wZHRpZCA9IHBi dWZbcGldLnBkdGlkOwotCSAgcHJpdi0+dGlkID0gcGJ1ZltwaV0udGlkOwot Ci0JICBwcm9jZXNzX3N0cmF0dW1fdGFyZ2V0ICpwcm9jX3RhcmdldAotCSAg ICA9IGN1cnJlbnRfaW5mZXJpb3IgKCktPnByb2Nlc3NfdGFyZ2V0ICgpOwot CSAgdGhyZWFkID0gYWRkX3RocmVhZF93aXRoX2luZm8gKHByb2NfdGFyZ2V0 LAotCQkJCQkgcHRpZF90IChwaWQsIDAsIHBidWZbcGldLnB0aGlkKSwKLQkJ CQkJIHByaXYpOwotCi0JICBwaSsrOwotCX0KLSAgICAgIGVsc2UKLQl7Ci0J ICBwdGlkX3QgcHB0aWQsIGdwdGlkOwotCSAgaW50IGNtcF9yZXN1bHQ7Cisg IC8qIFRoaXMgbWVhbnMgdGhhdCBuZXcgdGhyZWFkcyBoYXZlIGJlZW4gY3Jl YXRlZCBhbmQKKyAgICAgdGhleSBuZWVkIHRvIGJlIGFkZGVkIGluIHRoZSBH REIgdGhyZWFkcyBsaXN0LiAgKi8KIAotCSAgcHB0aWQgPSBwdGlkX3QgKHBp ZCwgMCwgcGJ1ZltwaV0ucHRoaWQpOwotCSAgZ3B0aWQgPSBnYnVmW2dpXS0+ cHRpZDsKLQkgIHBkdGlkID0gcGJ1ZltwaV0ucGR0aWQ7Ci0JICB0aWQgPSBw YnVmW3BpXS50aWQ7CisgIGVsc2UgaWYgKHBjb3VudCA+IDEgJiYgZ2NvdW50 IDwgcGNvdW50KQorICB7CisgICAgcGkgPSAxOworICAgIHdoaWxlIChwY291 bnQgLSAxICE9IGdjb3VudCkKKyAgICB7CisgICAgICBhaXhfdGhyZWFkX2lu Zm8gKnByaXYgPSBuZXcgYWl4X3RocmVhZF9pbmZvOworICAgICAgcHJpdi0+ cGR0aWQgPSBwYnVmW3BpXS5wZHRpZDsKKyAgICAgIHByaXYtPnRpZCA9IHBi dWZbcGldLnRpZDsKIAotCSAgY21wX3Jlc3VsdCA9IHB0aWRfY21wIChwcHRp ZCwgZ3B0aWQpOworICAgICAgcHJvY2Vzc19zdHJhdHVtX3RhcmdldCAqcHJv Y190YXJnZXQKKyAgICAgICAgPSBjdXJyZW50X2luZmVyaW9yICgpLT5wcm9j ZXNzX3RhcmdldCAoKTsKKyAgICAgIHRocmVhZCA9IGFkZF90aHJlYWRfd2l0 aF9pbmZvIChwcm9jX3RhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwdGlkX3QgKHBpZCwgMCwgcGJ1ZltwaV0ucHRoaWQp LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYp OworICAgICAgcGkrKzsKKyAgICAgIGdjb3VudCsrOyAKKyAgICB9ICAgIAor ICB9CiAKLQkgIGlmIChjbXBfcmVzdWx0ID09IDApCi0JICAgIHsKLQkgICAg ICBhaXhfdGhyZWFkX2luZm8gKnByaXYgPSBnZXRfYWl4X3RocmVhZF9pbmZv IChnYnVmW2dpXSk7CisgIC8qIFRoaXMgY29uZGl0aW9uIGltcGxpZXMgdGhl IHRocmVhZHMgaGF2ZSBleGl0ZWQgb3IgZGllZC4gIEhlbmNlCisgICAgIHdl IGRlbGV0ZSB0aG9zZSBleGl0ZWQgdGhyZWFkcy4gIFNpbmNlIHdlIGRvbid0 IGFkZCBhIHRocmVhZAorICAgICBmb3IgbWFpbiBwcm9jZXNzIHBjb3VudCBt dXN0IGJlIGVxdWFsIHRvIGdjb3VudCArIDEuICAqLwogCi0JICAgICAgcHJp di0+cGR0aWQgPSBwZHRpZDsKLQkgICAgICBwcml2LT50aWQgPSB0aWQ7Ci0J ICAgICAgcGkrKzsKLQkgICAgICBnaSsrOwotCSAgICB9Ci0JICBlbHNlIGlm IChjbXBfcmVzdWx0ID4gMCkKLQkgICAgewotCSAgICAgIGRlbGV0ZV90aHJl YWQgKGdidWZbZ2ldKTsKLQkgICAgICBnaSsrOwotCSAgICB9Ci0JICBlbHNl Ci0JICAgIHsKLQkgICAgICBwcm9jZXNzX3N0cmF0dW1fdGFyZ2V0ICpwcm9j X3RhcmdldAotCQk9IGN1cnJlbnRfaW5mZXJpb3IgKCktPnByb2Nlc3NfdGFy Z2V0ICgpOwotCSAgICAgIHRocmVhZCA9IGFkZF90aHJlYWQgKHByb2NfdGFy Z2V0LCBwcHRpZCk7Ci0KLQkgICAgICBhaXhfdGhyZWFkX2luZm8gKnByaXYg PSBuZXcgYWl4X3RocmVhZF9pbmZvOwotCSAgICAgIHRocmVhZC0+cHJpdi5y ZXNldCAocHJpdik7Ci0JICAgICAgcHJpdi0+cGR0aWQgPSBwZHRpZDsKLQkg ICAgICBwcml2LT50aWQgPSB0aWQ7Ci0JICAgICAgcGkrKzsKLQkgICAgfQot CX0KKyAgZWxzZSBpZiAocGNvdW50ID49IDEgJiYgZ2NvdW50ID4gcGNvdW50 KQorICB7CisgICAgZ2kgID0gMDsKKyAgICB3aGlsZSAoZ2NvdW50ICE9IHBj b3VudCAtIDEpCisgICAgeworICAgICAgZGVsZXRlX3RocmVhZCAoZ2J1Zltn aSsrXSk7CisgICAgICBnY291bnQtLTsKICAgICB9CisgIH0KIAogICB4ZnJl ZSAocGJ1Zik7CiAgIHhmcmVlIChnYnVmKTsKLS0gCjIuMzEuMQoK --_004_CH2PR15MB3544E198B0622C3AD22597A2D6029CH2PR15MB3544namp_--