Message ID | 1498386916-9071-1-git-send-email-simon.marchi@ericsson.com |
---|---|
State | New, archived |
Headers |
Received: (qmail 122436 invoked by alias); 25 Jun 2017 10:35:35 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: <gdb-patches.sourceware.org> List-Unsubscribe: <mailto:gdb-patches-unsubscribe-##L=##H@sourceware.org> List-Subscribe: <mailto:gdb-patches-subscribe@sourceware.org> List-Archive: <http://sourceware.org/ml/gdb-patches/> List-Post: <mailto:gdb-patches@sourceware.org> List-Help: <mailto:gdb-patches-help@sourceware.org>, <http://sourceware.org/ml/#faqs> Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 122410 invoked by uid 89); 25 Jun 2017 10:35:33 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_PASS autolearn=ham version=3.3.2 spammy=reap, pti X-HELO: sesbmg23.ericsson.net Received: from sesbmg23.ericsson.net (HELO sesbmg23.ericsson.net) (193.180.251.37) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 25 Jun 2017 10:35:31 +0000 Received: from ESESSHC014.ericsson.se (Unknown_Domain [153.88.183.60]) by sesbmg23.ericsson.net (Symantec Mail Security) with SMTP id 5C.4B.05871.0F19F495; Sun, 25 Jun 2017 12:35:28 +0200 (CEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.60) with Microsoft SMTP Server (TLS) id 14.3.352.0; Sun, 25 Jun 2017 12:35:28 +0200 Authentication-Results: sourceware.org; dkim=none (message not signed) header.d=none; sourceware.org; dmarc=none action=none header.from=ericsson.com; Received: from elxacz23q12.localdomain (80.216.243.234) by DB4PR07MB313.eurprd07.prod.outlook.com (2a01:111:e400:982f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1199.6; Sun, 25 Jun 2017 10:35:27 +0000 From: Simon Marchi <simon.marchi@ericsson.com> To: <gdb-patches@sourceware.org> CC: <sergiodj@sergiodj.net>, Simon Marchi <simon.marchi@ericsson.com> Subject: [PATCH] darwin: Do not add a dummy thread Date: Sun, 25 Jun 2017 12:35:16 +0200 Message-ID: <1498386916-9071-1-git-send-email-simon.marchi@ericsson.com> MIME-Version: 1.0 Content-Type: text/plain X-ClientProxiedBy: HE1PR07CA0007.eurprd07.prod.outlook.com (2603:10a6:7:67::17) To DB4PR07MB313.eurprd07.prod.outlook.com (2a01:111:e400:982f::13) X-MS-Office365-Filtering-Correlation-Id: fa7612bb-6e31-4616-1e53-08d4bbb5e526 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506067)(300135500095); SRVR:DB4PR07MB313; X-Microsoft-Exchange-Diagnostics: 1; DB4PR07MB313; 3:TooMIM9q6gc0UgFarU3OOpuhiERtySSoVtltUgwqZ+nf325qKv4zXVgP0+Qjb5BGzEgDtpRevmoAnvhANvxxJwdDj2RLAsZSnYSN5BkDTioaLPdA0kWqtJflFL4YG32pIqOikzJUE3l+yjCkL+mh3YyN0fDRTiR35Ri8Wzstzg0jPdOPmVXiTplfoGviq+AtDQqGKNlWGRgb8XLDduFgPUHePJC0hdjJ1571Rgf/TH3KY3ssx/zYM+1kBTXj4WwRBCCloY5YURAUbfDm3WcFO8YzR/62kkEUB4zWXbAw416vTn4Qj0HOTzgoXWI7eTPiu8pnqqIyXsZo04hkNw7GTDT+dj/c/n4UxQT97WY3e0gQHOn8kxQHDjp5ZyXoyXm0QuExRKOoPVZVaeNoEMCw8Ved5z1qAcJUiA9u0utay1P95h4jXL49Ho+FJEPATLIzKaJglm/cd6kXEDzQFkA0cqYTo4Eb9sMHP17egn9EgIgER7YQ8jKZDxINk9wwnY9rDOItPZ08gq1k/TZDOOlbqZQ+dd6OkGPqwp5KcMPdnfajyYZzui6TjxbssOAjP56FZGAnijGOvQQQX+nrcJadTeACVLTE61e1oALpz8YYrDB+ebgf0dTvQSKfzmYNszqcS5KJlEtjEt3SMmG3ZnMgq9SCWp7u/BzzfeJf5PAym8eVpAzBePff1jeQx2yOMo0G1pubHSNPWkUlI0EioOwAx5QjTWEqJq2miKmegshC+bg= X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB4PR07MB313: X-Microsoft-Exchange-Diagnostics: 1; DB4PR07MB313; 25:3qLqJDiTeFPEN1tBQUdVDeXzyYzFQHqfaKfJq3ZmUXwB7DCwxK73dQa3mENTDVmXFaGtl7UhtRj0cUgbEHha4HjwtG6zN30eJop7Pzdl5BulQbWLcStehFMMVNxB7akvt53IasLYh6exrZQyeNidUxN0c1LOnzl4IlbIj7Y+qLtbRXLiIACJLiOl4ZH3CJDl7iAT4/xRpOdkQWrGc7y0AGZYhZwtTkKMTNRQBLmWXD6wOWZhw2nLT18vu6bwJKqeGrBfsE6SUpQ0bTWmalcEQ9oCwFfWlRBd/Ndzj5P8JVnE3Mou8+HQ19kMCOd1NoXaJ+caq7ILabKvs1HINozDhyJeGILsoUUFwl56reSGG4YfPO2X0kcAsZYsZDaPv98i0jmcNmuuQFhZWfaJGRREZsL4OH+lNSttqghsL0Id1PwQM5KtQg2V97qxsaxFFgEbxUWJr5L/BwkS9cDthukHkmiCA/Seh9VuCRyEWshMS0He1rCskk6nfVTzLcy44GWMbeqYHTzQaeghRAqQWcWF75Kbbs0gLzkovIhK3IjIDOkRzy8JKn/Y2SnRc95sbHl15lGlPT4UO5EfMJHnEMib08WlEOjuRY+oNvqV9djUSrxrrCEe6MVl0vIiMkMrBeSQuSzQjxg3cMF6btgiGPrcLb/POIUpgGy5WpeWjMTObKYdS5RbiLeszdUJQBhw9fygPprMWVhEavF86vp48mk3UDq9c2y4Evu07BGPKTTzKF1z/cPmRTsO2MkBNCZvCmQIvuQ4ih5TWe0qodje2ZRy2fBAqQ0IaMfidEpO8RjR4cy2JbeFF24Csy3FCiYMg64OCGrGo903hefV7LJsA1KS+ur8HllAV8YfGZ9xSEjLpJOhqVTzNi+Gq0STASdGRIoUYtDD0AsL91/S9K/xTeFFkzvKXqiVSFhjhOyFHP8+klw= X-Microsoft-Exchange-Diagnostics: 1; DB4PR07MB313; 31:Bkqn1u5IfjydEqX9vnVU5vzoVjtZOWOYc26cRNuVajmlI1cMMgs2IHS6MPAKNAceS++wBFXsy1iY15Ofdt1RCnk+o9ZjKYE9J/h9ydqqL9A3ny2t7t991Yl02mUKtjc0jmiY7O4bcFmzoSgkbzb++wgc92NKyQ36mlF+aBgFf2oJpt9ghFgpZWIsQ9dVDIQQtOv62GOF1Yd2P9BVCDoUx0VnNOpbtIASwGAZTn2aH2MCQ7zOE03bsjw+56HIXAQGykcw8WYexSMfC2ivBsAImgXqPdXcqck2M5e3YDo3JOwcHKjyxe2/021ViDMj5pDBbSdUNhh38DAbzNZt2IykeWt4GAtscSVrAOpKqsqL0ICGbAag5019rsJEHFDdOqBpvwQoVKu+pTLNhP5DfYgjOcKRd2IEMns+d23K1gNcv6eehoBHuDLTS9GD2MGacrF5vtqoTlGrJ7+LvtG9L4hTOOyYMX0kIAf9QfHFO3RKJ7I5V8SroauSnJJCWi9nzF2qdTUtzI+cevX8WaQltIAEIYRlTyuJ+/Ng/rojsF1dFO1CmTiRsMUAykvrXTZFIfej7rlQ5SoWJJSs3DBJhqv8j2l3D6A3bYqPg/30JsIIUArlsnvRZYb6sgwL/kzbotH5YMc4m6ygiV1oiGKVkMh9gbli/hSNUebA8R+BWw5DZqI= X-Microsoft-Exchange-Diagnostics: 1; DB4PR07MB313; 20:ljJ+5mRIGWSKWZk0NRTGfS+QzF0xCxrQBLWyhwWGI8dp+sd0C5h4Fa5jvmnMmhloze08XB+o7VJxIuZF/xTR1KutVKrEsUKewFKa0/iw377gdMJJLilxZekFE9duCfpQ3wegpMkvTWcQJZnsJu9mjTiczuICYMruIPuBbLMqBYckkF1A2C99+9m2hJYdqyMYlvElnFCjeSiLszB3Dtl32vxqXVFYsQZOAdKn9bEZHkv5h2OP/YGkWIS1UccwC63Lp18mRHD49qtOYn8k3NLq715i3wxynQHsKfPrxqR/S8SFAnvp9Nv8J6tOXqF244XvXIBTRGDYAk8Qy1YrOlHhveKnT4UV+QRqTkfmETrw6PQ+i+7PAfA5NAn01FjF4F4xviZRdcVUxLOub9SDCTYq9AKawImHw4p7kLm8yZavxhHx4DQE++oeMpVqimWtVkDUr4uLYCFadWGrXbklEJXoIbk5rH0iR0BSTC+r2xBvm701wzOP1ylaIcJC+RPz8O/B X-Microsoft-Antispam-PRVS: <DB4PR07MB3131C030A055A0D9CA974B7EDDE0@DB4PR07MB313.eurprd07.prod.outlook.com> X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(148574349560750)(167848164394848)(247924648384137); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(10201501046)(100000703101)(100105400095)(6041248)(20161123558100)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123555025)(20161123562025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DB4PR07MB313; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DB4PR07MB313; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB4PR07MB313; 4:N+GCzr3Jko0ryYZOBo4DgJE4wG7Gw+uALyv+DIg7/yj?= =?us-ascii?Q?NS0NZ4SULpVj2x+rxkxtCoIRuyImGleeDKQDpBHhn2J0rM1U6B2pfS0Qc78P?= =?us-ascii?Q?j32tWYOf/jjBzmDn532uPcO2y61yITDZov+NC20idL0qibxPHhyUbudHyGYF?= =?us-ascii?Q?88V3tHlsbRb35mRC+95n1gv/MxeFIlqxVl0BpRnBhNjuhah4okg71PCSGUMN?= =?us-ascii?Q?hpQHOWf/D3qJIAaJMcSjusVrPPeG8I2d2lSZyRx+/lPSCzBACXQDlyXS7H56?= =?us-ascii?Q?auZbAWd9hCYt1a/XN1DR5gp02dwIJqy656FdMPQB7WFwZHbvkIHw8yS3tppZ?= =?us-ascii?Q?06niyxol9/orenq9KqxzaDZgTHaGm7Z8ZxeFa7wNHpxodOzF7aK3zBXSX8ej?= =?us-ascii?Q?4lrn3oZ3sA7uqYEpcYloGZoU6NGvSOm2TQIDvQmgX2TmtpzZPu2yl5v2ePFS?= =?us-ascii?Q?1IT4A/4W3d04KYzfhnyLCyy2WcJy72CXu4zCFMIesNxuI6ou5IBr9FqjlSdV?= =?us-ascii?Q?vsP4tjm/p9buK6j+aUcuEhy5iiH8Kp/yore4dokIvF6Oi3SxBBKL6NmEGi4C?= =?us-ascii?Q?bR9fbSQGiO0y14xHJtl44D8aotlrovl2Fx7bAHCc9jZlHPK96GHyVMond9cy?= =?us-ascii?Q?90jF2mgY0psoyYNIAJrgdQBPu4ygNyszjHptHA9Wd6n0kiNQ9ZsmY4snXUl/?= =?us-ascii?Q?oMqGZmTgE+nRPEncrn1+7zs81n0MF63R7SyHGuvpTOBc51cHsUhemxPChv+F?= =?us-ascii?Q?GUaEUxdYLGv0GYAEds+0oWK88zV0ZMQ2nqlMOO+mtHQ72lON7Rb8somz7//R?= =?us-ascii?Q?sFB7GapRCapYYRr1lTzUBWEtdoPfyXwQ6bpofFRZImHsPtLZCDpw9YTR68p+?= =?us-ascii?Q?6WqEGAs8HKLE2ltWquEYkrrYp4GFrQJEvxaHO4D4YgqUblLZe7nvZ2tV3V5g?= =?us-ascii?Q?I+v8Ge5w+/M/0QAbrtNGP0EEXOll1HkwSbSAhKFaoqT2m/QHV+AoV46/46UV?= =?us-ascii?Q?ivvGBKup1VWixNLRqCMkpud5DRZCEIsBJ4QuwNvmmt2CyUuGf8oR3aRCI4YY?= =?us-ascii?Q?Idfq+F7xWXDBO41np76xswutVJjKSNf2PPRK0xguuW+YwOwLpCJN8xf0HAof?= =?us-ascii?Q?fimqOXkEt3R40G4NWq0yS5VRl1xQqDAaikn7/0LSXArgwrNqtfNcak0FxsTR?= =?us-ascii?Q?JancmWTjhYsyPgoQQn0Sw4qwSsLdjD94knHQBkIQ5Gr5L2FCR9+k288z8XV8?= =?us-ascii?Q?qNW3FpIfnoSONxXA0M5daCDiS5s/UW1KAa654TxdyuP0VgjOgg7MUYJ98Fg?= =?us-ascii?Q?=3D=3D?= X-Forefront-PRVS: 034902F5BC X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(39450400003)(39850400002)(39400400002)(39410400002)(6916009)(7736002)(2906002)(2361001)(47776003)(5890100001)(2351001)(305945005)(66066001)(5003940100001)(189998001)(36756003)(5660300001)(6666003)(42186005)(33646002)(6512007)(6506006)(48376002)(25786009)(110136004)(38730400002)(107886003)(50226002)(478600001)(50466002)(6486002)(86362001)(50986999)(4326008)(6116002)(81166006)(8676002)(53936002); DIR:OUT; SFP:1101; SCL:1; SRVR:DB4PR07MB313; H:elxacz23q12.localdomain; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB4PR07MB313; 23:IVbsiNx1yA4AwazzgpGe3UzVAEELLNrjoApzlR/beC?= =?us-ascii?Q?uciNiC+W162C1Ic5DDpTukN4TOZHtlIn7oU7RyFpOHzYTPYU9/GQfcpZQFBH?= =?us-ascii?Q?62pfcQXSh84et9S83Z74MX/c6WZZyNbvku7xnADjHAwMSDzTTG46t5CZBhIs?= =?us-ascii?Q?kt7Nw03cg6tVzSnhihJg1Zutmdm/xt4lhB8Zje//PmRrk2QdVoNvWqg/+hDB?= =?us-ascii?Q?4czUNw2eN6EzqU5aVPcqRfnRSSWSJnk/WfWPRIaM11FW0x1I6+zA5XU8l1Hp?= =?us-ascii?Q?BaKf67oES9vY+DB2Rf+w1znTN9sfeBwDP1eR+FfVBR4WiaAEx6YEF9IJEm0e?= =?us-ascii?Q?PueJm6TFa/pQFiX+CQeO0Veot7TNvdu16g6+fhA3D9uBqdhBIHffSJuhJO9D?= =?us-ascii?Q?54RisEDJaRkxfTx+wiYg0RxEjSabbDaK3M26gx99kxK0sPc3Au6kn/b57rU6?= =?us-ascii?Q?fjeyJn6XK1VWboDIvXxBTJGmJ1iTOpvPs2JAuDAG4Q1OezVh18WYCqCujqlH?= =?us-ascii?Q?bdmFK2CYhlRGYe4rXEK4V6n1+N3YBGM4N7irI8H6BXwM6NS4SIn/l3oT4JQ9?= =?us-ascii?Q?tfKMPlHjfSpH9y6/DQzmDGhXDwJTcq6CdDdAiBltxLwTHbnMk8HC7g9YhNgV?= =?us-ascii?Q?fB5/ivdROMan2Iz/siIjdh/KLPzcpX726NFKwWAed2t/Rf4SpmH/oZC54qXx?= =?us-ascii?Q?QA0bba/a3vUJvOONm8jX0v3LaoBnFTyq0Udu8TlUuB2EId3XCI3+z/u+EOY3?= =?us-ascii?Q?XrQqIbrNFEj1swJcLGTtGbls/tUsT3/L5iVT0MAi99KLR/0tSofIQaRrpCJh?= =?us-ascii?Q?yKMm0B6tzsRll3u8WLVxivWe/wB4Yf63oFuKIrNHbbNAYl+DZM+9g+XFmS2Q?= =?us-ascii?Q?IiZ77kLkHNik+wX1MtG7kIMzd7gYK7qJDwcRjbyNj2H08Zx17BiAjg8FMU8M?= =?us-ascii?Q?kn4xmXzgwvDs+hvh/Mh5aU7ioovJSYu4o94LxBPiTovWsXy8nZCm/kZot7wQ?= =?us-ascii?Q?st1BSQEaiMHS5iXSImRTx5?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB4PR07MB313; 6:CZN3nHK1wZ5j0lt4XboVokCMRadPF6c1R4MXPnNQGnk?= =?us-ascii?Q?2BqS4Mq7pnOIL6FGgLTCpVwHzKBjHS25CQ7QL+h0QxMLDagdrRJf56J7mwO4?= =?us-ascii?Q?hrXTWb/7txMts+znJSNbHVSNjh7HysGcwj/knvbFA4oBz+8DQMNXgeI5tlAc?= =?us-ascii?Q?D1LIKElj7RzeQrzu1VmHFnkrR400loPu6xdFQeXm3ZtU6IeUE0m08v0Hovs4?= =?us-ascii?Q?FIYgHvf9Q2oa4jv7WefQ3pAULyVrloDTnk0uZOyjH3JyCpyoZdqDtkmXwitz?= =?us-ascii?Q?vb+AxfseP6c2M/PFYkc7Oe0qLVc9f88dXtqycU4GO77GHJ8drNXMAHloX4kg?= =?us-ascii?Q?mD5egwQKXLeehacQs0AqCK5W7Z+Ig4m7FRd7umWiGXKcrQrocwo9IGOCu80o?= =?us-ascii?Q?V2wPLyb1mFmwdVw9E1TDnJQ5ql2ignbcbchlyt+3wfwxIrmaeHuHzDntikKm?= =?us-ascii?Q?ngJ9ojNgGRXRQOHJELUmHxZvh9JxpyqPnEtjr1xWL0S3Suic8JHkPAQI7F1q?= =?us-ascii?Q?HvIb9sDNmKUjM1WIb8OU8SS9pyLPTEv9ivlGMBsE2dNx/FfAqeTQhUfXUnbG?= =?us-ascii?Q?+X3soDWPD7rnJKEcciLk96o+EHmirPRahZjYfkUAVTfya5/tk03i8kVEbYZ2?= =?us-ascii?Q?lVlEcgKApq6bE64s1ctNZp/+mfuh5ZtX8FXXK2/Wf8zXXrHGqVPzmoMTjcxs?= =?us-ascii?Q?+kMrHik3evD7rqleN9kDQNnpZWbvdHYPmIQs6xbN4dakat0kIduDfF1n+a84?= =?us-ascii?Q?eVpN4JCjPxysnkSFQxvcKwlnDLJlKKIq/bH4SuH9MsJjb3RKMRp1gj4Um9Cu?= =?us-ascii?Q?/uifNIFTFeWjSntE0vbo887NSimKNcrsMVSjfZtb0z+xU7wKjD37h+LGfXgO?= =?us-ascii?Q?8GFlEBK3cIVn9lLs6ycWVSHeUVO7QtNEL6e+jqmGhqyfVoSd4mZ1FaekHTiM?= =?us-ascii?Q?0y85FHdy1cmbF1EXt2KDcm2Yj3ySRskfJPjG7YxntEts7aSeBtqDife1d1o0?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; DB4PR07MB313; 5:4BcOgVj10uBaEc2pYq5xBmpgg+Dfd4d/cA2mFHFbefkh617FK6txWLz5uhjL+w/J+EUFAjeu2uFetxhMxOdFAA+n0gAdCZ/lxXR8Zp3yKxrce0/L0IwrgRy1kFN5CK3NyXgiIVC+A76avN4HQ+N3wd/dWa8OIZCtIPld1LD/O/4j7ztL1wTJcMaY7BMv0iNDEGBGp/S7+bmX6y5LqQVtEEytxr9jUqLlLb/+4eAPdba2ZlykZwh9sz+X5Jk6WIHeCRCtExD13Ixvrp/uCXazxXyPrFRxFZMuHLObH/OHTT41w1M6PqtFpw0OnwnfQnGX++9qp3O+DAdPrCc+702kZEu9P9IekOWILcOdpi6NfRK0RsQ0dbAIFiJfNvI50ND3CjAVqT9rNVAzmKorKir8uNJC1zne2bYU/tbdMWT2j14CkUNR9ZVB/4qWw5B2oznWPlaBs9mZvAz4Ljou7h5DQGurYwwqs/rCRdMHRcew+GpISGFHYzCdkW2U189QG92T; 24:3HMAFAQnJf/H9ZXs4mKh48bm8EeajTu64A5oEzWNS9Yh5QHj2dLXj4GKgXYtj81QqokGWnmwdU21Ij74NOkLF6LRLMdAC5MbntPmYVIBwoo= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DB4PR07MB313; 7:biDItKY6bLe3rsjUFGNuq1hwy/CqJJOQ3BBIdw0L5iup8FapXsxnlcRto0hMye7Lx5GbP0zWnAnVT1G/52g8pRodWWu9ahzDhhRj73Mr3Ae9iSB3a6ulYkJVBBxt8xRu1OCS1LPmohaxZ+S/EhXaPZ7mgpr3Qi7jztDTekUgStGA9xWsiuvE6w2iytX3cLxGOUlcHyvNGyzuLaQVYqm4XEiX0mCRmsHBwC0cdVOn27tlu0+jDG7nRA9Gm1lgMMp9iTbiOFt2GyOg9sNMBTV7g1vTDo/QtqbtfATCr11yJVGIRgsEg5SaSUFsN/ECRQzqqnoL8nZYaefx1UAn0Yqw/sr45CsgWJVNKseFX5cmvWAwxCHIpesKj+QEgol6OZ7NbdTf7GKunabOJVdx83fDmuecuIzDu/SHf/mQfLJ1MzmxyvdQsPkkDf9NEUreCjZRhzGhtkoTL5BvES7JqFQFvP5AHT76Fcyi5Cxtc+oEBuKHQTmHbaQyTNoumgFJZLRSIzVUanDOsNHX77D+9ApRnMgJb0tz85meN4DyLZ0QG5BEK5u53Whb9NSsBeVNpsdd4Je0v42j06tiPl/ZRXXA/kmo4/5mkYB1y3JF6WiPlAXX0GqlkcqDQlyMyiNHllcNvVpwvR1ttEMK8lHu6Yvl8mCoK7Pb9CV4/+Uhfx2eU2UDvqQjaIs+1KFoNJNmc9Wy/U7jYb2pw+5z9N4sdqSdJ2mJ31d6aBhBEP09kAOkObiYGb7gmTRruPbCUgKq3USDf3mDStzcQTRtMYW7z3Rd4qhFplYU9rDBf50DtR31TLA= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jun 2017 10:35:27.0204 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR07MB313 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes |
Commit Message
Simon Marchi
June 25, 2017, 10:35 a.m. UTC
Starting a process on macOS/Darwin currently leads to this error: /Users/simark/src/binutils-gdb/gdb/darwin-nat.c:383: internal-error: void darwin_check_new_threads(struct inferior *): Assertion `tp' failed. with the corresponding partial backtrace (sorry, taken with lldb, because well, gdb is broken :)): frame #9: 0x000000010004605a gdb`darwin_check_new_threads(inf=0x0000000100edf670) at darwin-nat.c:383 frame #10: 0x0000000100045848 gdb`darwin_init_thread_list(inf=0x0000000100edf670) at darwin-nat.c:1710 frame #11: 0x00000001000452f8 gdb`darwin_ptrace_him(pid=8375) at darwin-nat.c:1792 frame #12: 0x0000000100041d95 gdb`fork_inferior(...) at fork-inferior.c:440 frame #13: 0x0000000100043f82 gdb`darwin_create_inferior(...) at darwin-nat.c:1841 frame #14: 0x000000010034ac32 gdb`run_command_1(args=0x0000000000000000, from_tty=1, tbreak_at_main=1) at infcmd.c:611 The issue was introduced by commit "Share fork_inferior et al with gdbserver" because it changed the place where the dummy thread (pid, 0, 0) is added, relative to the call to the init_trace_fun callback. In this callback, darwin checks for new threads in the program (there should be exactly one) in order to update this dummy thread with the right tid. Previously, things happened in this order: - fork_inferior calls fork() - fork_inferior adds dummy thread - fork_inferior calls init_trace_fun callback, which updates the dummy thread info Following the commit mentioned above, the new thread is added in the darwin-nat code, after having called fork_inferior (in darwin_create_inferior). So gdb tries to do things in this order: - fork_inferior calls fork() - fork_inferior calls init_trace_fun callback, which tries to update the dummy thread info - darwin_create_inferior adds the dummy thread The error happens while trying to update the dummy thread that has not been added yet. I don't think this dummy thread is necessary for darwin. Previously, it was fork_inferior that was adding this thread, for all targets, so darwin had to deal with it. Now that it's done by targets themselves, we can just skip that on darwin. darwin_check_new_threads called indirectly by init_trace_fun/darwin_ptrace_him will simply notice the new thread and add it with the right information. My level of testing was: try to start a process and try to attach to a process, and it seems to work somewhat like it did before. I tried to run the testsuite, but it leaves a huge amount of zombie processes that launchd doesn't seem to reap, leading to exhaustion of system resources (number of processes). gdb/ChangeLog: * darwin-nat.c (darwin_check_new_threads): Don't handle dummy thread. (darwin_init_thread_list): Don't update dummy thread. (darwin_create_inferior, darwin_attach): Don't add a dummy thread. --- gdb/darwin-nat.c | 74 +++++++++++++++++++++----------------------------------- 1 file changed, 28 insertions(+), 46 deletions(-)
Comments
On Sunday, June 25 2017, Simon Marchi wrote: > Starting a process on macOS/Darwin currently leads to this error: > > /Users/simark/src/binutils-gdb/gdb/darwin-nat.c:383: internal-error: void darwin_check_new_threads(struct inferior *): Assertion `tp' failed. > > with the corresponding partial backtrace (sorry, taken with lldb, > because well, gdb is broken :)): > > frame #9: 0x000000010004605a gdb`darwin_check_new_threads(inf=0x0000000100edf670) at darwin-nat.c:383 > frame #10: 0x0000000100045848 gdb`darwin_init_thread_list(inf=0x0000000100edf670) at darwin-nat.c:1710 > frame #11: 0x00000001000452f8 gdb`darwin_ptrace_him(pid=8375) at darwin-nat.c:1792 > frame #12: 0x0000000100041d95 gdb`fork_inferior(...) at fork-inferior.c:440 > frame #13: 0x0000000100043f82 gdb`darwin_create_inferior(...) at darwin-nat.c:1841 > frame #14: 0x000000010034ac32 gdb`run_command_1(args=0x0000000000000000, from_tty=1, tbreak_at_main=1) at infcmd.c:611 > > The issue was introduced by commit > > "Share fork_inferior et al with gdbserver" > > because it changed the place where the dummy thread (pid, 0, 0) is added, > relative to the call to the init_trace_fun callback. In this callback, darwin > checks for new threads in the program (there should be exactly one) in order to > update this dummy thread with the right tid. Previously, things happened in > this order: > > - fork_inferior calls fork() > - fork_inferior adds dummy thread > - fork_inferior calls init_trace_fun callback, which updates the dummy > thread info > > Following the commit mentioned above, the new thread is added in the > darwin-nat code, after having called fork_inferior (in > darwin_create_inferior). So gdb tries to do things in this order: > > - fork_inferior calls fork() > - fork_inferior calls init_trace_fun callback, which tries to update > the dummy thread info > - darwin_create_inferior adds the dummy thread > > The error happens while trying to update the dummy thread that has not > been added yet. > > I don't think this dummy thread is necessary for darwin. Previously, it > was fork_inferior that was adding this thread, for all targets, so > darwin had to deal with it. Now that it's done by targets themselves, > we can just skip that on darwin. darwin_check_new_threads called > indirectly by init_trace_fun/darwin_ptrace_him will simply notice the > new thread and add it with the right information. > > My level of testing was: try to start a process and try to attach to a > process, and it seems to work somewhat like it did before. I tried to > run the testsuite, but it leaves a huge amount of zombie processes that > launchd doesn't seem to reap, leading to exhaustion of system resources > (number of processes). Hey Simon, Thank you very much for investigating this. Indeed, fork_inferior had a few changes and one of the most important was the fact that it doesn't add a thread anymore; this is left to the caller. Your patch looks good to me, and I like the idea of getting rid of the dummy thread while you're at it. I just have nits to point, but otherwise I think it can go in. OOC, re. the fact that running the testsuite leaves a lot of zombie processes behind, I'm assuming that this behaviour already existed before the fork_inferior rework, right? > gdb/ChangeLog: > > * darwin-nat.c (darwin_check_new_threads): Don't handle dummy > thread. > (darwin_init_thread_list): Don't update dummy thread. > (darwin_create_inferior, darwin_attach): Don't add a dummy thread. > --- > gdb/darwin-nat.c | 74 +++++++++++++++++++++----------------------------------- > 1 file changed, 28 insertions(+), 46 deletions(-) > > diff --git a/gdb/darwin-nat.c b/gdb/darwin-nat.c > index cd67249..bb52d9f 100644 > --- a/gdb/darwin-nat.c > +++ b/gdb/darwin-nat.c > @@ -367,29 +367,14 @@ darwin_check_new_threads (struct inferior *inf) > if (new_ix < new_nbr && (old_ix == old_nbr || new_id < old_id)) > { > /* A thread was created. */ > - struct thread_info *tp; > struct private_thread_info *pti; > > pti = XCNEW (struct private_thread_info); > pti->gdb_port = new_id; > pti->msg_state = DARWIN_RUNNING; > > - if (old_nbr == 0 && new_ix == 0) > - { > - /* A ptid is create when the inferior is started (see > - fork-child.c) with lwp=tid=0. This ptid will be renamed > - later by darwin_init_thread_list (). */ > - tp = find_thread_ptid (ptid_build (inf->pid, 0, 0)); > - gdb_assert (tp); > - gdb_assert (tp->priv == NULL); > - tp->priv = pti; > - } > - else > - { > - /* Add the new thread. */ > - tp = add_thread_with_info > - (ptid_build (inf->pid, 0, new_id), pti); > - } > + /* Add the new thread. */ > + add_thread_with_info (ptid_build (inf->pid, 0, new_id), pti); > VEC_safe_push (darwin_thread_t, thread_vec, pti); > new_ix++; > continue; > @@ -1701,23 +1686,36 @@ darwin_attach_pid (struct inferior *inf) > push_target (darwin_ops); > } > > +static struct thread_info * > +thread_info_from_private_thread_info (private_thread_info *pti) Missing comment for the function. > +{ > + struct thread_info *it; > + > + ALL_THREADS (it) > + { > + if (it->priv->gdb_port == pti->gdb_port) > + break; > + } > + > + gdb_assert (it != NULL); > + > + return it; > +} > + > static void > darwin_init_thread_list (struct inferior *inf) > { > - darwin_thread_t *thread; > - ptid_t new_ptid; > - > darwin_check_new_threads (inf); > > - gdb_assert (inf->priv->threads > + gdb_assert (inf->priv->threads != NULL > && VEC_length (darwin_thread_t, inf->priv->threads) > 0); It's just a matter of personal preference, but I don't like to use && and || on gdb_assert. It makes it harder to identify what went wrong if the assert triggers. In this case, I like to split the condition into two assertions. But as I said, personal preference. > - thread = VEC_index (darwin_thread_t, inf->priv->threads, 0); > > - /* Note: fork_inferior automatically add a thead but it uses a wrong ptid. > - Fix up. */ > - new_ptid = ptid_build (inf->pid, 0, thread->gdb_port); > - thread_change_ptid (inferior_ptid, new_ptid); > - inferior_ptid = new_ptid; > + private_thread_info *first_pti > + = VEC_index (darwin_thread_t, inf->priv->threads, 0); > + struct thread_info *first_thread > + = thread_info_from_private_thread_info (first_pti); > + > + inferior_ptid = first_thread->ptid; > } > > /* The child must synchronize with gdb: gdb must set the exception port > @@ -1834,23 +1832,10 @@ darwin_create_inferior (struct target_ops *ops, > const std::string &allargs, > char **env, int from_tty) > { > - pid_t pid; > - ptid_t ptid; > - > /* Do the hard work. */ > - pid = fork_inferior (exec_file, allargs, env, darwin_ptrace_me, > - darwin_ptrace_him, darwin_pre_ptrace, NULL, > - darwin_execvp); > - > - ptid = pid_to_ptid (pid); > - /* Return now in case of error. */ > - if (ptid_equal (inferior_ptid, null_ptid)) > - return; > - > - /* We have something that executes now. We'll be running through > - the shell at this point (if startup-with-shell is true), but the > - pid shouldn't change. */ > - add_thread_silent (ptid); > + fork_inferior (exec_file, allargs, env, darwin_ptrace_me, > + darwin_ptrace_him, darwin_pre_ptrace, NULL, > + darwin_execvp); I like the simplification :-). > } > > > @@ -1920,9 +1905,6 @@ darwin_attach (struct target_ops *ops, const char *args, int from_tty) > inferior_appeared (inf, pid); > inf->attach_flag = 1; > > - /* Always add a main thread. */ > - add_thread_silent (inferior_ptid); > - > darwin_attach_pid (inf); > > darwin_suspend_inferior (inf); > -- > 2.7.4 Thanks,
On 2017-06-26 23:27, Sergio Durigan Junior wrote: > Hey Simon, > > Thank you very much for investigating this. Indeed, fork_inferior had > a > few changes and one of the most important was the fact that it doesn't > add a thread anymore; this is left to the caller. > > Your patch looks good to me, and I like the idea of getting rid of the > dummy thread while you're at it. I just have nits to point, but > otherwise I think it can go in. > > OOC, re. the fact that running the testsuite leaves a lot of zombie > processes behind, I'm assuming that this behaviour already existed > before the fork_inferior rework, right? Indeed, I tried to run the testsuite on a commit prior to your patchset, and it was disastrous. Interesting fact: when you type "start", you stop at main with thread 2, and there's no thread 1. What I think happen is that we first check for new threads after gdb has forked, but before it has exec'ed, that gives us a thread with some tid (or whatever we use as a tid). After the exec, once we stop at main, we check again for new threads. The only thread has a different tid than before, so gdb assumes that thread 1 has exited and thread 2 appeared. It doesn't really matter, it's just strange. >> gdb/ChangeLog: >> >> * darwin-nat.c (darwin_check_new_threads): Don't handle dummy >> thread. >> (darwin_init_thread_list): Don't update dummy thread. >> (darwin_create_inferior, darwin_attach): Don't add a dummy thread. >> --- >> gdb/darwin-nat.c | 74 >> +++++++++++++++++++++----------------------------------- >> 1 file changed, 28 insertions(+), 46 deletions(-) >> >> diff --git a/gdb/darwin-nat.c b/gdb/darwin-nat.c >> index cd67249..bb52d9f 100644 >> --- a/gdb/darwin-nat.c >> +++ b/gdb/darwin-nat.c >> @@ -367,29 +367,14 @@ darwin_check_new_threads (struct inferior *inf) >> if (new_ix < new_nbr && (old_ix == old_nbr || new_id < old_id)) >> { >> /* A thread was created. */ >> - struct thread_info *tp; >> struct private_thread_info *pti; >> >> pti = XCNEW (struct private_thread_info); >> pti->gdb_port = new_id; >> pti->msg_state = DARWIN_RUNNING; >> >> - if (old_nbr == 0 && new_ix == 0) >> - { >> - /* A ptid is create when the inferior is started (see >> - fork-child.c) with lwp=tid=0. This ptid will be renamed >> - later by darwin_init_thread_list (). */ >> - tp = find_thread_ptid (ptid_build (inf->pid, 0, 0)); >> - gdb_assert (tp); >> - gdb_assert (tp->priv == NULL); >> - tp->priv = pti; >> - } >> - else >> - { >> - /* Add the new thread. */ >> - tp = add_thread_with_info >> - (ptid_build (inf->pid, 0, new_id), pti); >> - } >> + /* Add the new thread. */ >> + add_thread_with_info (ptid_build (inf->pid, 0, new_id), pti); >> VEC_safe_push (darwin_thread_t, thread_vec, pti); >> new_ix++; >> continue; >> @@ -1701,23 +1686,36 @@ darwin_attach_pid (struct inferior *inf) >> push_target (darwin_ops); >> } >> >> +static struct thread_info * >> +thread_info_from_private_thread_info (private_thread_info *pti) > > Missing comment for the function. Oops, thanks. >> +{ >> + struct thread_info *it; >> + >> + ALL_THREADS (it) >> + { >> + if (it->priv->gdb_port == pti->gdb_port) >> + break; >> + } >> + >> + gdb_assert (it != NULL); >> + >> + return it; >> +} >> + >> static void >> darwin_init_thread_list (struct inferior *inf) >> { >> - darwin_thread_t *thread; >> - ptid_t new_ptid; >> - >> darwin_check_new_threads (inf); >> >> - gdb_assert (inf->priv->threads >> + gdb_assert (inf->priv->threads != NULL >> && VEC_length (darwin_thread_t, inf->priv->threads) > 0); > > It's just a matter of personal preference, but I don't like to use && > and || on gdb_assert. It makes it harder to identify what went wrong > if > the assert triggers. In this case, I like to split the condition into > two assertions. But as I said, personal preference. Makes sense, I'll update that. >> - thread = VEC_index (darwin_thread_t, inf->priv->threads, 0); >> >> - /* Note: fork_inferior automatically add a thead but it uses a >> wrong ptid. >> - Fix up. */ >> - new_ptid = ptid_build (inf->pid, 0, thread->gdb_port); >> - thread_change_ptid (inferior_ptid, new_ptid); >> - inferior_ptid = new_ptid; >> + private_thread_info *first_pti >> + = VEC_index (darwin_thread_t, inf->priv->threads, 0); >> + struct thread_info *first_thread >> + = thread_info_from_private_thread_info (first_pti); >> + >> + inferior_ptid = first_thread->ptid; >> } >> >> /* The child must synchronize with gdb: gdb must set the exception >> port >> @@ -1834,23 +1832,10 @@ darwin_create_inferior (struct target_ops >> *ops, >> const std::string &allargs, >> char **env, int from_tty) >> { >> - pid_t pid; >> - ptid_t ptid; >> - >> /* Do the hard work. */ >> - pid = fork_inferior (exec_file, allargs, env, darwin_ptrace_me, >> - darwin_ptrace_him, darwin_pre_ptrace, NULL, >> - darwin_execvp); >> - >> - ptid = pid_to_ptid (pid); >> - /* Return now in case of error. */ >> - if (ptid_equal (inferior_ptid, null_ptid)) >> - return; >> - >> - /* We have something that executes now. We'll be running through >> - the shell at this point (if startup-with-shell is true), but the >> - pid shouldn't change. */ >> - add_thread_silent (ptid); >> + fork_inferior (exec_file, allargs, env, darwin_ptrace_me, >> + darwin_ptrace_him, darwin_pre_ptrace, NULL, >> + darwin_execvp); > > I like the simplification :-). > >> } >> >> >> @@ -1920,9 +1905,6 @@ darwin_attach (struct target_ops *ops, const >> char *args, int from_tty) >> inferior_appeared (inf, pid); >> inf->attach_flag = 1; >> >> - /* Always add a main thread. */ >> - add_thread_silent (inferior_ptid); >> - >> darwin_attach_pid (inf); >> >> darwin_suspend_inferior (inf); >> -- >> 2.7.4 > > Thanks, Thanks.! Simon
diff --git a/gdb/darwin-nat.c b/gdb/darwin-nat.c index cd67249..bb52d9f 100644 --- a/gdb/darwin-nat.c +++ b/gdb/darwin-nat.c @@ -367,29 +367,14 @@ darwin_check_new_threads (struct inferior *inf) if (new_ix < new_nbr && (old_ix == old_nbr || new_id < old_id)) { /* A thread was created. */ - struct thread_info *tp; struct private_thread_info *pti; pti = XCNEW (struct private_thread_info); pti->gdb_port = new_id; pti->msg_state = DARWIN_RUNNING; - if (old_nbr == 0 && new_ix == 0) - { - /* A ptid is create when the inferior is started (see - fork-child.c) with lwp=tid=0. This ptid will be renamed - later by darwin_init_thread_list (). */ - tp = find_thread_ptid (ptid_build (inf->pid, 0, 0)); - gdb_assert (tp); - gdb_assert (tp->priv == NULL); - tp->priv = pti; - } - else - { - /* Add the new thread. */ - tp = add_thread_with_info - (ptid_build (inf->pid, 0, new_id), pti); - } + /* Add the new thread. */ + add_thread_with_info (ptid_build (inf->pid, 0, new_id), pti); VEC_safe_push (darwin_thread_t, thread_vec, pti); new_ix++; continue; @@ -1701,23 +1686,36 @@ darwin_attach_pid (struct inferior *inf) push_target (darwin_ops); } +static struct thread_info * +thread_info_from_private_thread_info (private_thread_info *pti) +{ + struct thread_info *it; + + ALL_THREADS (it) + { + if (it->priv->gdb_port == pti->gdb_port) + break; + } + + gdb_assert (it != NULL); + + return it; +} + static void darwin_init_thread_list (struct inferior *inf) { - darwin_thread_t *thread; - ptid_t new_ptid; - darwin_check_new_threads (inf); - gdb_assert (inf->priv->threads + gdb_assert (inf->priv->threads != NULL && VEC_length (darwin_thread_t, inf->priv->threads) > 0); - thread = VEC_index (darwin_thread_t, inf->priv->threads, 0); - /* Note: fork_inferior automatically add a thead but it uses a wrong ptid. - Fix up. */ - new_ptid = ptid_build (inf->pid, 0, thread->gdb_port); - thread_change_ptid (inferior_ptid, new_ptid); - inferior_ptid = new_ptid; + private_thread_info *first_pti + = VEC_index (darwin_thread_t, inf->priv->threads, 0); + struct thread_info *first_thread + = thread_info_from_private_thread_info (first_pti); + + inferior_ptid = first_thread->ptid; } /* The child must synchronize with gdb: gdb must set the exception port @@ -1834,23 +1832,10 @@ darwin_create_inferior (struct target_ops *ops, const std::string &allargs, char **env, int from_tty) { - pid_t pid; - ptid_t ptid; - /* Do the hard work. */ - pid = fork_inferior (exec_file, allargs, env, darwin_ptrace_me, - darwin_ptrace_him, darwin_pre_ptrace, NULL, - darwin_execvp); - - ptid = pid_to_ptid (pid); - /* Return now in case of error. */ - if (ptid_equal (inferior_ptid, null_ptid)) - return; - - /* We have something that executes now. We'll be running through - the shell at this point (if startup-with-shell is true), but the - pid shouldn't change. */ - add_thread_silent (ptid); + fork_inferior (exec_file, allargs, env, darwin_ptrace_me, + darwin_ptrace_him, darwin_pre_ptrace, NULL, + darwin_execvp); } @@ -1920,9 +1905,6 @@ darwin_attach (struct target_ops *ops, const char *args, int from_tty) inferior_appeared (inf, pid); inf->attach_flag = 1; - /* Always add a main thread. */ - add_thread_silent (inferior_ptid); - darwin_attach_pid (inf); darwin_suspend_inferior (inf);