From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id ECBB22BC3 for ; Tue, 19 Apr 2016 09:39:21 +0200 (CEST) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga104.fm.intel.com with ESMTP; 19 Apr 2016 00:39:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.24,505,1455004800"; d="scan'208";a="948181797" Received: from irsmsx109.ger.corp.intel.com ([163.33.3.23]) by fmsmga001.fm.intel.com with ESMTP; 19 Apr 2016 00:39:19 -0700 Received: from irsmsx111.ger.corp.intel.com (10.108.20.4) by IRSMSX109.ger.corp.intel.com (163.33.3.23) with Microsoft SMTP Server (TLS) id 14.3.248.2; Tue, 19 Apr 2016 08:39:18 +0100 Received: from irsmsx108.ger.corp.intel.com ([169.254.11.238]) by irsmsx111.ger.corp.intel.com ([169.254.2.16]) with mapi id 14.03.0248.002; Tue, 19 Apr 2016 08:39:17 +0100 From: "De Lara Guarch, Pablo" To: "zhangwqh@126.com" CC: Thomas Monjalon , "Gonzalez Monroy, Sergio" , "dev@dpdk.org" , "Dhana Eadala" , "Richardson, Bruce" , "Qiu, Michael" Thread-Topic: [dpdk-dev] rte_hash_del_key crash in multi-process environment Thread-Index: AQHRmfgeTlF7YdR4N0Oar1tB2NgaaJ+Q5DnA Date: Tue, 19 Apr 2016 07:39:16 +0000 Message-ID: References: <1457921808-14261-1-git-send-email-edreddy@gmail.com> <76801321.W6WWktetkp@xps13> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiOTU2Y2M1NWEtZmU1NC00NGNhLWJiN2EtNTdiNDViMWYyMmQ1IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE1LjkuNi42IiwiVHJ1c3RlZExhYmVsSGFzaCI6IkNLY3piUVZBZW9yRFwvZE13MUU0eDZWZ2tnckc4ZFNhOXdZb1wvSmdDZ3U1WT0ifQ== x-ctpclassification: CTP_IC x-originating-ip: [163.33.239.181] Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] rte_hash_del_key crash in multi-process environment X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Apr 2016 07:39:22 -0000 SGksDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZGV2IFttYWlsdG86 ZGV2LWJvdW5jZXNAZHBkay5vcmddIE9uIEJlaGFsZiBPZiA/Pw0KPiBTZW50OiBUdWVzZGF5LCBB cHJpbCAxOSwgMjAxNiA1OjU4IEFNDQo+IFRvOiBEZSBMYXJhIEd1YXJjaCwgUGFibG8NCj4gQ2M6 IFRob21hcyBNb25qYWxvbjsgR29uemFsZXogTW9ucm95LCBTZXJnaW87IGRldkBkcGRrLm9yZzsg RGhhbmENCj4gRWFkYWxhOyBSaWNoYXJkc29uLCBCcnVjZTsgUWl1LCBNaWNoYWVsDQo+IFN1Ympl Y3Q6IFtkcGRrLWRldl0gcnRlX2hhc2hfZGVsX2tleSBjcmFzaCBpbiBtdWx0aS1wcm9jZXNzIGVu dmlyb25tZW50DQo+IA0KPiBIaSBhbGwsDQo+IA0KPiANCj4gSW4gdGhlIG11bHRpLXByb2Nlc3Mg ZW52aXJvbm1lbnQsIGJlZm9yZSBJIG1ldCBhIGJ1ZyB3aGVuIGNhbGxpbmcNCj4gcnRlX2hhc2hf bG9va3VwX3dpdGhfaGFzaC4gVXNpbmcgRGhhbmEncyBwYXRjaCBmaXhlZCBteSBwcm9ibGVtLiBO b3cgSQ0KPiBuZWVkIHRvIHJlbW92ZSB0aGUgZmxvdyBpbiB0aGUgbXVsdGktcHJvY2VzcyBlbnZp cm9ubWVudCwgdGhlIHN5c3RlbSBnZXRzDQo+IGNyYXNoZWQgd2hlbiBjYWxsaW5nIHJ0ZV9oYXNo X2RlbF9rZXkgZnVuY3Rpb24uIFRoZSBmb2xsb3dpbmcgaXMgdGhlIGdkYg0KPiB0cmFjZS4gRG9l cyBhbnlib2R5IG1lZXQgdGhpcyBwcm9ibGVtIG9yIGtub3cgaG93IHRvIGZpeCBpdD8NCg0KRmly c3Qgb2YgYWxsLCBhbm90aGVyIGZpeCBmb3IgdGhlIG11bHRpLXByb2Nlc3Mgc3VwcG9ydCB3YXMg aW1wbGVtZW50ZWQgYW5kIG1lcmdlZCBmb3IgMTYuMDQgcmVsZWFzZSwNCnNvIHRha2UgYSBsb29r IGF0IGl0LCBpZiB5b3UgY2FuLg0KUmVnYXJkaW5nIHRoZSBydGVfaGFzaF9kZWxfa2V5KCkgZnVu Y3Rpb24sIHlvdSBzaG91bGQgdXNlIHJ0ZV9oYXNoX2RlbF9rZXlfd2l0aF9oYXNoLA0KaWYgeW91 IHdhbnQgdG8gdXNlIGl0IGluIGEgbXVsdGktcHJvY2VzcyBlbnZpcm9ubWVudCAoYXMgeW91IGRp ZCBmb3IgdGhlIGxvb2t1cCBmdW5jdGlvbikuDQoNClRoYW5rcywNClBhYmxvDQoNCj4gDQo+IA0K PiANCj4gDQo+IFByb2dyYW0gcmVjZWl2ZWQgc2lnbmFsIFNJR0lMTCwgSWxsZWdhbCBpbnN0cnVj dGlvbi4NCj4gDQo+IDB4MDAwMDAwMDAwMDQ4YTBkZCBpbiBydGVfcG9ydF9yaW5nX3JlYWRlcl9m cmFnX2ZyZWUNCj4gKHBvcnQ9MHg3ZmZlMTEzZDQxMDApIGF0IC9ob21lL3poYW5nd2VpMTk4NC90 aW1vcGVuTmV0Vk0vZHBkay0NCj4gMi4yLjAvbGliL2xpYnJ0ZV9wb3J0L3J0ZV9wb3J0X2ZyYWcu YzoyNjYNCj4gDQo+IDI2NiAgICAgICAgICAgIHJldHVybiAtMTsNCj4gDQo+IChnZGIpIGJ0DQo+ IA0KPiAjMCAgMHgwMDAwMDAwMDAwNDhhMGRkIGluIHJ0ZV9wb3J0X3JpbmdfcmVhZGVyX2ZyYWdf ZnJlZQ0KPiAocG9ydD0weDdmZmUxMTNkNDEwMCkgYXQgL2hvbWUvemhhbmd3ZWkxOTg0L3RpbW9w ZW5OZXRWTS9kcGRrLQ0KPiAyLjIuMC9saWIvbGlicnRlX3BvcnQvcnRlX3BvcnRfZnJhZy5jOjI2 Ng0KPiANCj4gIzEgIDB4MDAwMDAwMDAwMDQ5YzUzNyBpbiBydGVfaGFzaF9kZWxfa2V5IChoPTB4 N2ZmZTExM2Q0MTAwLA0KPiBrZXk9MHg3ZmZlMDkyZTEwMDApDQo+IA0KPiAgICBhdCAvaG9tZS96 aGFuZ3dlaTE5ODQvdGltb3Blbk5ldFZNL2RwZGstDQo+IDIuMi4wL2xpYi9saWJydGVfaGFzaC9y dGVfY3Vja29vX2hhc2guYzo5MTcNCj4gDQo+ICMyICAweDAwMDAwMDAwMDA0MzcxNmEgaW4gb252 bV9mdF9yZW1vdmVfa2V5ICh0YWJsZT0weDdmZmUxMTNjM2U4MCwNCj4ga2V5PTB4N2ZmZTA5MmUx MDAwKSBhdCAvaG9tZS96aGFuZ3dlaTE5ODQvb252bS1zaGFyZWQtDQo+IGNwdS9vbnZtL3NoYXJl ZC9vbnZtX2Zsb3dfdGFibGUuYzoxNjANCj4gDQo+ICMzICAweDAwMDAwMDAwMDA0Mzc2N2UgaW4g b252bV9mbG93X2Rpcl9kZWxfYW5kX2ZyZWVfa2V5DQo+IChrZXk9MHg3ZmZlMDkyZTEwMDApIGF0 IC9ob21lL3poYW5nd2VpMTk4NC9vbnZtLXNoYXJlZC0NCj4gY3B1L29udm0vc2hhcmVkL29udm1f Zmxvd19kaXIuYzoxNDQNCj4gDQo+ICM0ICAweDAwMDAwMDAwMDA0Mzc2MTkgaW4gb252bV9mbG93 X2Rpcl9kZWxfa2V5IChrZXk9MHg3ZmZlMDkyZTEwMDApIGF0DQo+IC9ob21lL3poYW5nd2VpMTk4 NC9vbnZtLXNoYXJlZC0NCj4gY3B1L29udm0vc2hhcmVkL29udm1fZmxvd19kaXIuYzoxMjgNCj4g DQo+ICM1ICAweDAwMDAwMDAwMDA0MjNkZWQgaW4gcmVtb3ZlX2Zsb3dfcnVsZSAoaWR4PTMpIGF0 DQo+IC9ob21lL3poYW5nd2VpMTk4NC9vbnZtLXNoYXJlZC1jcHUvZXhhbXBsZXMvZmxvd19kaXIv Zmxvd19kaXIuYzoxMzANCj4gDQo+ICM2ICAweDAwMDAwMDAwMDA0MjNlNDQgaW4gY2xlYXJfc3Rh dF9yZW1vdmVfZmxvd19ydWxlDQo+IChuZl9pbmZvPTB4N2ZmZjNlNjUyMTAwKSBhdCAvaG9tZS96 aGFuZ3dlaTE5ODQvb252bS1zaGFyZWQtDQo+IGNwdS9leGFtcGxlcy9mbG93X2Rpci9mbG93X2Rp ci5jOjE0NQ0KPiANCj4gIzcgIDB4MDAwMDAwMDAwMDQyNDdlMyBpbiBhbGxvY19uZnNfaW5zdGFs bF9mbG93X3J1bGUgKHNlcnZpY2VzPTB4ZDY2ZTkwDQo+IDxzZXJ2aWNlcz4sIHBrdD0weDdmZmUx M2Y1NjQwMCkNCj4gDQo+ICAgIGF0IC9ob21lL3poYW5nd2VpMTk4NC9vbnZtLXNoYXJlZC0NCj4g Y3B1L2V4YW1wbGVzL2Zsb3dfZGlyL2Zsb3dfZGlyLmM6MTg2DQo+IA0KPiAjOCAgMHgwMDAwMDAw MDAwNDI0YmRiIGluIHBhY2tldF9oYW5kbGVyIChwa3Q9MHg3ZmZlMTNmNTY0MDAsDQo+IG1ldGE9 MHg3ZmZlMTNmNTY0NDApIGF0IC9ob21lL3poYW5nd2VpMTk4NC9vbnZtLXNoYXJlZC0NCj4gY3B1 L2V4YW1wbGVzL2Zsb3dfZGlyL2Zsb3dfZGlyLmM6Mjk0DQo+IA0KPiAjOSAgMHgwMDAwMDAwMDAw NDMwMDFkIGluIG9udm1fbmZfcnVuIChpbmZvPTB4N2ZmZjNlNjUxYjAwLA0KPiBoYW5kbGVyPTB4 NDI0YjIxIDxwYWNrZXRfaGFuZGxlcj4pIGF0IC9ob21lL3poYW5nd2VpMTk4NC9vbnZtLQ0KPiBz aGFyZWQtY3B1L29udm0vb252bV9uZi9vbnZtX25mbGliLmM6NDYyDQo+IA0KPiAjMTAgMHgwMDAw MDAwMDAwNDI0Y2MyIGluIG1haW4gKGFyZ2M9MywgYXJndj0weDdmZmZmZmZmZTY2MCkgYXQNCj4g L2hvbWUvemhhbmd3ZWkxOTg0L29udm0tc2hhcmVkLWNwdS9leGFtcGxlcy9mbG93X2Rpci9mbG93 X2Rpci5jOjMyMw0KPiANCj4gDQo+IA0KPiANCj4gDQo+IA0KPiANCj4gDQo+IEF0IDIwMTYtMDMt MjMgMDM6NTM6NDMsICJEZSBMYXJhIEd1YXJjaCwgUGFibG8iDQo+IDxwYWJsby5kZS5sYXJhLmd1 YXJjaEBpbnRlbC5jb20+IHdyb3RlOg0KPiA+SGkgVGhvbWFzLA0KPiA+DQo+ID4+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IFRob21hcyBNb25qYWxvbiBbbWFpbHRvOnRo b21hcy5tb25qYWxvbkA2d2luZC5jb21dDQo+ID4+IFNlbnQ6IFR1ZXNkYXksIE1hcmNoIDIyLCAy MDE2IDExOjQyIEFNDQo+ID4+IFRvOiBEZSBMYXJhIEd1YXJjaCwgUGFibG87IEdvbnphbGV6IE1v bnJveSwgU2VyZ2lvDQo+ID4+IENjOiBkZXZAZHBkay5vcmc7IERoYW5hIEVhZGFsYTsgUmljaGFy ZHNvbiwgQnJ1Y2U7IFFpdSwgTWljaGFlbA0KPiA+PiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBb UEFUQ0hdIGhhc2g6IGZpeCBtZW1jbXAgZnVuY3Rpb24gcG9pbnRlciBpbg0KPiBtdWx0aS0NCj4g Pj4gcHJvY2VzcyBlbnZpcm9ubWVudA0KPiA+Pg0KPiA+PiBIaSwNCj4gPj4NCj4gPj4gUGFibG8s IFNlcmdpbywgcGxlYXNlIGNvdWxkIHlvdSBoZWxwIHdpdGggdGhpcyBpc3N1ZT8NCj4gPg0KPiA+ SSBhZ3JlZSB0aGlzIGlzIG5vdCB0aGUgYmVzdCB3YXkgdG8gZml4IHRoaXMuIEkgd2lsbCB0cnkg dG8gaGF2ZSBhIGZpeCB3aXRob3V0DQo+IGhhdmluZyB0byB1c2UgaWZkZWZzLg0KPiA+DQo+ID5U aGFua3MsDQo+ID5QYWJsbw0KPiA+Pg0KPiA+PiAyMDE2LTAzLTEzIDIyOjE2LCBEaGFuYSBFYWRh bGE6DQo+ID4+ID4gV2UgZm91bmQgYSBwcm9ibGVtIGluIGRwZGstMi4yIHVzaW5nIHVuZGVyIG11 bHRpLXByb2Nlc3MNCj4gZW52aXJvbm1lbnQuDQo+ID4+ID4gSGVyZSBpcyB0aGUgYnJpZWYgZGVz Y3JpcHRpb24gaG93IHdlIGFyZSB1c2luZyB0aGUgZHBkazoNCj4gPj4gPg0KPiA+PiA+IFdlIGhh dmUgdHdvIHByb2Nlc3NlcyBwcm9jMSwgcHJvYzIgdXNpbmcgZHBkay4gVGhlc2UgcHJvYzEgYW5k IHByb2MyDQo+ID4+IGFyZQ0KPiA+PiA+IHR3byBkaWZmZXJlbnQgY29tcGlsZWQgYmluYXJpZXMu DQo+ID4+ID4gcHJvYzEgaXMgc3RhcnRlZCBhcyBwcmltYXJ5IHByb2Nlc3MgYW5kIHByb2MyIGFz IHNlY29uZGFyeSBwcm9jZXNzLg0KPiA+PiA+DQo+ID4+ID4gcHJvYzE6DQo+ID4+ID4gQ2FsbHMg c3JjSGFzaCA9IHJ0ZV9oYXNoX2NyZWF0ZSgic3JjX2hhc2hfbmFtZSIpIHRvIGNyZWF0ZSBydGVf aGFzaA0KPiA+PiBzdHJ1Y3R1cmUuDQo+ID4+ID4gQXMgcGFydCBvZiB0aGlzLCB0aGlzIGFwaSBp bml0YWxpemVkIHRoZSBydGVfaGFzaCBzdHJ1Y3R1cmUgYW5kIHNldCB0aGUNCj4gPj4gPiBzcmNI YXNoLT5ydGVfaGFzaF9jbXBfZXEgdG8gdGhlIGFkZHJlc3Mgb2YgbWVtY21wKCkgZnJvbSBwcm9j MQ0KPiA+PiBhZGRyZXNzIHNwYWNlLg0KPiA+PiA+DQo+ID4+ID4gcHJvYzI6DQo+ID4+ID4gY2Fs bHMgc3JjSGFzaCA9ICBydGVfaGFzaF9maW5kX2V4aXN0aW5nKCJzcmNfaGFzaF9uYW1lIikuDQo+ ID4+ID4gVGhpcyBmdW5jdGlvbiBjYWxsIHJldHVybnMgdGhlIHJ0ZV9oYXNoIGNyZWF0ZWQgYnkg cHJvYzEuDQo+ID4+ID4gVGhpcyBzcmNIYXNoLT5ydGVfaGFzaF9jbXBfZXEgc3RpbGwgcG9pbnRz IHRvIHRoZSBhZGRyZXNzIG9mDQo+ID4+ID4gbWVtY21wKCkgZnJvbSBwcm9jMSBhZGRyZXNzIHNw YWNlLg0KPiA+PiA+IExhdGVyIHByb2MyICBjYWxscw0KPiA+PiA+IHJ0ZV9oYXNoX2xvb2t1cF93 aXRoX2hhc2goc3JjSGFzaCwgKGNvbnN0IHZvaWQqKSAma2V5LCBrZXkuc2lnKTsNCj4gPj4gPiBy dGVfaGFzaF9sb29rdXBfd2l0aF9oYXNoKCkgaW52b2tlcyBfX3J0ZV9oYXNoX2xvb2t1cF93aXRo X2hhc2goKSwNCj4gPj4gPiB3aGljaCBpbiB0dXJuIGNhbGxzIGgtPnJ0ZV9oYXNoX2NtcF9lcShr ZXksIGstPmtleSwgaC0+a2V5X2xlbikuDQo+ID4+ID4gVGhpcyBsZWFkcyB0byBhIGNyYXNoIGFz IGgtPnJ0ZV9oYXNoX2NtcF9lcSBpcyBhbiBhZGRyZXNzDQo+ID4+ID4gZnJvbSBwcm9jMSBhZGRy ZXNzIHNwYWNlIGFuZCBpcyBpbnZhbGlkIGFkZHJlc3MgaW4gcHJvYzIgYWRkcmVzcyBzcGFjZS4N Cj4gPj4gPg0KPiA+PiA+IFdlIGZvdW5kLCBmcm9tIGRwZGsgZG9jdW1lbnRhdGlvbiwgdGhhdA0K PiA+PiA+DQo+ID4+ID4gIg0KPiA+PiA+ICBUaGUgdXNlIG9mIGZ1bmN0aW9uIHBvaW50ZXJzIGJl dHdlZW4gbXVsdGlwbGUgcHJvY2Vzc2VzDQo+ID4+ID4gIHJ1bm5pbmcgYmFzZWQgb2YgZGlmZmVy ZW50IGNvbXBpbGVkDQo+ID4+ID4gIGJpbmFyaWVzIGlzIG5vdCBzdXBwb3J0ZWQsIHNpbmNlIHRo ZSBsb2NhdGlvbiBvZiBhIGdpdmVuIGZ1bmN0aW9uDQo+ID4+ID4gIGluIG9uZSBwcm9jZXNzIG1h eSBiZSBkaWZmZXJlbnQgdG8NCj4gPj4gPiAgaXRzIGxvY2F0aW9uIGluIGEgc2Vjb25kLiBUaGlz IHByZXZlbnRzIHRoZSBsaWJydGVfaGFzaCBsaWJyYXJ5DQo+ID4+ID4gIGZyb20gYmVoYXZpbmcg cHJvcGVybHkgYXMgaW4gYSAgbXVsdGktDQo+ID4+ID4gIHRocmVhZGVkIGluc3RhbmNlLCBzaW5j ZSBpdCB1c2VzIGEgcG9pbnRlciB0byB0aGUgaGFzaCBmdW5jdGlvbg0KPiBpbnRlcm5hbGx5Lg0K PiA+PiA+DQo+ID4+ID4gIFRvIHdvcmsgYXJvdW5kIHRoaXMgaXNzdWUsIGl0IGlzIHJlY29tbWVu ZGVkIHRoYXQNCj4gPj4gPiAgbXVsdGktcHJvY2VzcyBhcHBsaWNhdGlvbnMgcGVyZm9ybSB0aGUg aGFzaA0KPiA+PiA+ICBjYWxjdWxhdGlvbnMgYnkgZGlyZWN0bHkgY2FsbGluZyB0aGUgaGFzaGlu ZyBmdW5jdGlvbg0KPiA+PiA+ICBmcm9tIHRoZSBjb2RlIGFuZCB0aGVuIHVzaW5nIHRoZQ0KPiA+ PiA+ICBydGVfaGFzaF9hZGRfd2l0aF9oYXNoKCkvcnRlX2hhc2hfbG9va3VwX3dpdGhfaGFzaCgp IGZ1bmN0aW9ucw0KPiA+PiA+ICBpbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbnMgd2hpY2ggZG8NCj4g Pj4gPiAgdGhlIGhhc2hpbmcgaW50ZXJuYWxseSwgc3VjaCBhcyBydGVfaGFzaF9hZGQoKS9ydGVf aGFzaF9sb29rdXAoKS4NCj4gPj4gPiAiDQo+ID4+ID4NCj4gPj4gPiBXZSBkaWQgZm9sbG93IHRo ZSByZWNvbW1lbmRlZCBzdGVwcyBieSBpbnZva2luZw0KPiA+PiBydGVfaGFzaF9sb29rdXBfd2l0 aF9oYXNoKCkuDQo+ID4+ID4gSXQgd2FzIG5vIGlzc3VlIHVwIHRvIGFuZCBpbmNsdWRpbmcgZHBk ay0yLjAuDQo+ID4+ID4gSW4gbGF0ZXIgcmVsZWFzZXMgc3RhcnRlZCBjcmFzaGluZyBiZWNhdXNl IHJ0ZV9oYXNoX2NtcF9lcSBpcw0KPiA+PiA+IGludHJvZHVjZWQgaW4gZHBkay0yLjENCj4gPj4g Pg0KPiA+PiA+IFdlIGZpeGVkIGl0IHdpdGggdGhlIGZvbGxvd2luZyBwYXRjaCBhbmQgd291bGQg bGlrZSB0bw0KPiA+PiA+IHN1Ym1pdCB0aGUgcGF0Y2ggdG8gZHBkay5vcmcuDQo+ID4+ID4gUGF0 Y2ggaXMgY3JlYXRlZCBzdWNoIHRoYXQsIGlmIGFueW9uZSB3YW50ZWQgdG8gdXNlIGRwZGsgaW4N Cj4gPj4gPiBtdWx0aS1wcm9jZXNzIGVudmlyb25tZW50IHdpdGggZnVuY3Rpb24gcG9pbnRlcnMg bm90IHNoYXJlZCwgdGhleSBuZWVkDQo+IHRvDQo+ID4+ID4gZGVmaW5lIFJURV9MSUJfTVBfTk9f RlVOQ19QVFIgaW4gdGhlaXIgTWFrZWZpbGUuDQo+ID4+ID4gV2l0aG91dCBkZWZpbmluZyB0aGlz IGZsYWcgaW4gTWFrZWZpbGUsIGl0IHdvcmtzIGFzIGl0IGlzIG5vdy4NCj4gPj4NCj4gPj4gSW50 cm9kdWNpbmcgI2lmZGVmIFJURV9MSUJfTVBfTk9fRlVOQ19QVFIgaXMgbm90IHJlY29tbWVuZGVk Lg0KPiA+DQo=