From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 84333 invoked by alias); 26 Jul 2016 15:41:19 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 84272 invoked by uid 89); 26 Jul 2016 15:41:18 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.6 required=5.0 tests=AWL,BAYES_00,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=played, era, dig, filling X-HELO: mail-lf0-f49.google.com Received: from mail-lf0-f49.google.com (HELO mail-lf0-f49.google.com) (209.85.215.49) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Tue, 26 Jul 2016 15:41:08 +0000 Received: by mail-lf0-f49.google.com with SMTP id b199so8068466lfe.0 for ; Tue, 26 Jul 2016 08:41:07 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:subject:from:to:references:message-id:date :user-agent:mime-version:in-reply-to; bh=a1Zb2rzpxsfAW69QhoIlzMoHJCg0GUpETvORIMs0Qjk=; b=EUZLJ1VykFmXx7v5u+7vux2BJ8oRbPfreos6H4PCLpFD+GIgDehaObtWOwM7tJySqj MvZmv4sER80CPgye8+ts284CWOooTsmKXShTls4VeXYRrrgyio19xdPyceu0eGU06RGl DEI2VBu64xUcSixiFTku6edTgP6xYopAJxN+g5s1y342kn6rn5ApwuldiHr2v7xaDZov Hv6yJhzAixBocrxkHZlVDx1HVE7gsdvDGhPlTuzY7vuOQVMFjYgHuR6xwBndXlLP/tgb P91Q4AjWWi/8f4WHS24v4tjGl4glOeSojX620WTt/gmXyVPLm6N+ZjJ29vUaprpH5ubj s/Rg== X-Gm-Message-State: AEkoouv98TEC6qzFCExsMnpNCkZVlL/aEmCoPG0bPH093PskvsD8BYSV2PGbKf6MylhZMw== X-Received: by 10.25.162.138 with SMTP id l132mr8474829lfe.137.1469547664171; Tue, 26 Jul 2016 08:41:04 -0700 (PDT) Received: from [192.168.4.39] (broadband-95-84-200-6.nationalcablenetworks.ru. [95.84.200.6]) by smtp.gmail.com with ESMTPSA id l129sm213757lfl.37.2016.07.26.08.41.02 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Jul 2016 08:41:03 -0700 (PDT) Subject: Re: Program-assigned thread names on Windows From: LRN To: gdb-patches@sourceware.org References: <5052d495-ea40-b364-96ea-9e68c90bd747@gmail.com> <14995502.J10EtrK3xV@ralph.baldwin.cx> <6a3446f9-63dc-67a1-3702-203d77c8d85d@gmail.com> <0cabec98-8411-2c3a-98d0-3d950de02bc5@gmail.com> <28023f06-f99c-77d1-10cf-5243f2a082a4@gmail.com> <0e59216f-77cb-608a-aa39-578c2610eda1@dronecode.org.uk> <0f064b2b-6b51-f132-caa6-a4c1a85585a3@gmail.com> Message-ID: Date: Tue, 26 Jul 2016 15:41:00 -0000 User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:50.0) Gecko/20100101 Thunderbird/50.0a1 MIME-Version: 1.0 In-Reply-To: <0f064b2b-6b51-f132-caa6-a4c1a85585a3@gmail.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="3PAtiM8ttGXg5EFNPf2i0F84FmOCBwExA" X-IsSubscribed: yes X-SW-Source: 2016-07/txt/msg00349.txt.bz2 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --3PAtiM8ttGXg5EFNPf2i0F84FmOCBwExA Content-Type: multipart/mixed; boundary="Lqbia319wwEdOuJCq2XH7lefmTKAxGV5S" From: LRN To: gdb-patches@sourceware.org Message-ID: Subject: Re: Program-assigned thread names on Windows References: <5052d495-ea40-b364-96ea-9e68c90bd747@gmail.com> <14995502.J10EtrK3xV@ralph.baldwin.cx> <6a3446f9-63dc-67a1-3702-203d77c8d85d@gmail.com> <0cabec98-8411-2c3a-98d0-3d950de02bc5@gmail.com> <28023f06-f99c-77d1-10cf-5243f2a082a4@gmail.com> <0e59216f-77cb-608a-aa39-578c2610eda1@dronecode.org.uk> <0f064b2b-6b51-f132-caa6-a4c1a85585a3@gmail.com> In-Reply-To: <0f064b2b-6b51-f132-caa6-a4c1a85585a3@gmail.com> --Lqbia319wwEdOuJCq2XH7lefmTKAxGV5S Content-Type: multipart/mixed; boundary="------------8F8DF7CD2C2161DA8B697298" This is a multi-part message in MIME format. --------------8F8DF7CD2C2161DA8B697298 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Content-length: 3272 On 26.07.2016 17:17, LRN wrote: > On 26.07.2016 16:18, Jon Turney wrote: >> On 26/07/2016 07:07, LRN wrote: >>> On 26.07.2016 0:32, LRN wrote: >>>>> On 25.07.2016 17:23, LRN wrote: >>>>>>> On 25.07.2016 17:06, Jon Turney wrote: >>>>>>>>> On 25/07/2016 14:34, LRN wrote: >>>>>>>>>>> On 25.07.2016 15:17, Jon Turney wrote: >>>>>>>>>>>>> On 23/07/2016 18:01, LRN wrote: >>>>> seem to point to the stack, but that's all i can tell). Also, the 4-th >>>>> element (which is "Reserved for future use, must be zero") is not zer= o when >>>>> the exception is caught. >>>>> In light of this, we should probably check for NumberParameters >=3D = 4. Or >>>>> even NumberParameters >=3D 3, given that we don't really look at the = 4th >>>>> parameter. >> >> It seems on x86_64, the structure is laid out by gcc as: >> >> 4 DWORD dwType >> 4 padding >> 8 LPCSTR szName >> 4 DWORD dwThreadID >> 4 DWORD dwFlags >> >> total size 24, so nNumberOfArguments =3D 3, so this is passed to the=20 >> debugger as an array of 3 DWORD64s >> >> Of course, the 'correct' layout is defined by how the sample code is=20 >> laid out by MSVC, which I'm guessing is the same, but haven't checked... >> >> So dwThreadID and dwFlags get packed together into=20 >> ExceptionInformation[2]. Fortunately, dwFlags should be set to 0. >> >> Furthermore, accessing dwType as a DWORD64 value via=20 >> ExceptionInformation[0] relies on the padding being zero initialized in= =20 >> the debugee to have useful values! I guess you'll have to mask with 0xff= ff? >=20 > I'll play a bit with the 64-bit exception-throwing example and see how > WinDbg reacts to various combinations of alignment and argument counting, > and will make gdb support the layout that WinDbg supports. Played around with 64-bit WinDbg. It worked with the code that i've used originally (from MSDN with no significant changes). Also: 1) WinDbg (of either bitness) doesn't care what the argument count is, as long as it's at least 3 (0x1000, string pointer and thread ID); giving it 2 makes it silently drop the exception and not set the thread name 2) WinDbg (of either bitness) currently doesn't care what you put in dwFlags. I've tried filling dwFlags with garbage (a copy of the dwThreadID value, for example), and WinDbg still set the thread name correctly, without misidentifying the thread. This leads me to believe that, as you've suggested, 64-bit WinDbg does & 0x00000000FFFFFFFF on ExceptionInformation[2] (32-bit WinDbg doesn't have t= o). Also of note, 32-bit WinDbg can't debug 64-bit executables, but 64-bit WinDbg can debug 32-bit executables. Maybe they foresaw the use of 64-bit architectures (i can't dig deeper into the MSDN than MSVC 2003, not sure how the thread-name example looked in MSVC 6.0 era) and padded the struct size to be a multiple of 8, reserving the last DWORD for future use; later realized that due to struct packing a 64-bit debugger would get 3 64-bit pointer-sized values, with the last one being a combination of threadid and flags, and adapted their debugger to handle exactly this case. Anyway, for gdb: 1) Look for at least 3 arguments. 2) In 64-bit gdb do the & 0xFFFFFFFF on the 3rd member to get thread id. And that's it. --=20 O< ascii ribbon - stop html email! - www.asciiribbon.org --------------8F8DF7CD2C2161DA8B697298 Content-Type: application/pgp-keys; name="0x6759BA74.asc" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="0x6759BA74.asc" Content-length: 3718 -----BEGIN PGP PUBLIC KEY BLOCK-----=0A= Version: GnuPG v2=0A= =0A= mQINBFd+4e0BEACxh5wQhm5pG3DMdXokYTZYyncAc0MGQkuCG7+0CUa06VW+qVz3=0A= x+wkWRSJSbFrltSzNpKY67kOGPc1b7e1V4vIQ5ubNSYNOnwqFedEorBCyA6jvpfE=0A= vmLHcWJyK6emZC2s09ToxN1ovzcJBkQMgpJNYj4jZHdHEJ0PD+qEp7bKTXlxzWXM=0A= oHjPdykSLPDuTzQ1Gi09OakKhzOUvg+3Lgqo1aAf+r8HtysM19wUE06h1BYpsMo/=0A= gP87w/uhyqrqqAPBb3tpJtAhw8OcUREsJ4GC5zsp80eHy7IS6LIrPB3nf9XyIxvd=0A= 5qql9y1XclbB/sTGfD2Z27gYLLqFDIlYxXKT1z999yGN71gXYoLi9wbqpP0VSbdh=0A= tr8LVhGiuP+BPNq1y62wKyBKpJulBq2TnYWhukYowI1tCkCFeL1F0yG2M0RTvo3P=0A= dUp6YSHiNbuvgiFzoow2YVCPW+w2MBFR2S1Si72Yegq2+tf5Dd0mSOEKOhaChz/X=0A= L3gFlbjgaF0qA879Q/8pppjdsmwDY+q48WV4NnI3bPsTlZ6dKnI0ZMpct9Kfi7E5=0A= dmexGdOCde4RbEs4dOsdMhjFl9B1YQPjKpTmh7FtoTDJqMklZEAzBr+pEDb7BorM=0A= Beh2aHsJ0Z7Qd52BCaUAIuPUXjwXDI4qzf7UyWLFS66BkeDXBRDRWaRL5QARAQAB=0A= tBdMUk4gPGxybjE5ODZAZ21haWwuY29tPokCPwQTAQgAKQUCV37h7QIbIwUJCWYB=0A= gAcLCQgHAwIBBhUIAgkKCwQWAgMBAh4BAheAAAoJEI2t6SdnWbp0qtoQAIjcnzeN=0A= riwftAfLsnXKYBrxmdbfPsmu4G7cQxsabst841sOrvWFPHTkEZk/xpfyQgxpZEiB=0A= 8uF82XKNbHNh9+nWqiDyt/Y9v23IIt1fIodOuB1q3Jdbh7nraflgzeji91rR3BuP=0A= mKcbpX+t4zlOg2RNh3dG+xoY91C5gXXWqBZ73kyGDHkpp2jGFXNStzdlcR4qLBiV=0A= dbtXfU/mnmB3tFuojx/zgL71816G2toBZzeWT/6c7UnmrubarvbNIVPbYufM0Xzw=0A= 7sK1y+i6p+QnZPZJ7nytINAVAZJ3pxle1Ajwb5p4QAVSsau78iG04/9cNU+gtftT=0A= kwNOIJ0LDnj+S6A58uLIr2Ebl4Jr4g0MPlw74CsUIspQz9sb6/yANLQ98kz3PrUa=0A= MpodI2dNpV8UROoJ/t96ys755FcEb/09SDJcTUx7QlPukgoq4mrWqB59kVID7CKq=0A= HRRDanuoyR/+ITDUxXUEUIJkWGYzUfKzjI8ditBCI6zxNftWCaiw5XkrEEpctvzS=0A= CBbNE7KjAoFbZDnsXHgg9xZWpAzYYP6aCmBvpjISMGihXbw1oS6mJvvHTFSzjTvX=0A= QHShvyO8XLI7Q+NwrYV+mVNvtBX+mQaTsQdS9knSpoHHO/N0QlCUzbnPIEOVKjN6=0A= Hw7bcBokYeI0ez3yMZlf/bU/yyMRfxskOqxciQEcBBMBCAAGBQJXfuIzAAoJEOs4=0A= Jb6SI2CwxPgIAJtQBb/79MSdZZb3kggOC0ClZ7WDRSdP31R272gdckcbqVqm7vMl=0A= 0OZxQH5G4QRuFNLMSJG5ytf//qoxYj5CmvQS5NkP/sgnMaHvjHG+jRaBfB9t00Um=0A= h24BBL04Ac0lv3eiBc64nUJT37dEBUNEE8fgQ67gnV1hacqybVXqWIm1RXluL+Un=0A= fdFsbD6KWHLY2uPrARXdLYT7veUPnEgziw4s/2AVrGHiSgNZV1Z8pFMsuiUGpCRr=0A= 1K0r8b6hP3nxa0xxzk83NrKI6ZL1Jyhlqe7dLSWaSVofHk9WmcARZ+hJ/PlP+9N5=0A= Fd5ZuJ9R5t8C0gUB5v1ID4vPxt/YFCeiVJy5Ag0EV37h7QEQAKcbtHNm2vc6aYgR=0A= /eK0cJmJOqV3S0PtXychIV6zYj2/DppUOttsQN39nEgTBui1QFYfVgYNv3S0DBZY=0A= ESSijTLrzyCbzYL9AL/OzIgo++m8F0lERhhMKsVKtdZWLBflkQgPgCpMdwqhGdRP=0A= 5WrximbRtHN7JD4TCfupCqepefqvxyYv/pHYcDTFEycEChkRgCpc88tTxNdAyd2+=0A= F7lfvMxsgGmNcMa5IzIm1GXjKQONyiMffmjYT0Sod/AS/RA7z3aTv9/2Sm4TLgae=0A= 4BtV+ZU39VMkfA8c2DsnVi4zVKOBho7MH/Lwar2bQwKZ8U1TKhKDwK0Q1eYTq+3U=0A= Nc6Rk/9QolYpYup7/lH5wWppPvipqlltTQa6F0csD6AIc9W7rO7RVFo+lqvrEZAw=0A= AUXrRCTFtBijg715eZenDzS0QZw9WtQ6ufhsAamap6hJQmIZD3HdWdrHCT1TQ/Tt=0A= JzPAyIYbRbKCe2hoxUojF0A/P1ZL90kf/OZPQ6Oisl5XMyuyiJFgVbdbXYMJ+f+k=0A= 3pTrVxB9vASmGxX3LXCxVJAZ9xJWdBC73VK7rwit0tA8ijekrmkhSjZlIZCKvDYA=0A= j9fV4O6QXRuuFZKo4xGYWCIPFwe802jOrbvQw8YT5CgN7hGMUyHV/GCH50uUoVJD=0A= andFGy7hvTckfXk85oXARMswdyQ3ABEBAAGJAiUEGAEIAA8FAld+4e0CGwwFCQlm=0A= AYAACgkQja3pJ2dZunQeVQ/9FtseE5WqnmvPGc5NPGvbWhrd5x9CpStPG9b+xsBu=0A= 91ZXrMHsNOVQ0SxFdB708OT15sTy1ldeemxUK62E5XO1bvFJ4R1gHkWe6K/j9TfG=0A= Fshbyl3J6WKwG2qwT2JpNVpb+6QShFZVRe9a1rn3D/DNZurj3XYgVQGWlYVYT/LA=0A= 32zmBjQEzSXMbDBR/wSiJzYqgTB+9udGkcrYVgrmNz5YSA2mp6l1+PH/i++FD4j/=0A= KWFVnmqt1QqT8Q0l4MYQH65MdzHdspwfMt0XZ5abnubWIO78ImbOA/CD7MwbuWvy=0A= zezkiDcqQQ2G8mu/ER3oByfQ84iMIxGv1V608EBddHWygd6YQIKdScay0D+54IUz=0A= DXyv9tcnAAnxvMM5wzJyjWytOwL2H7FvSVAtfdywaF2wZA0iHho5Df8OeZdPEZhF=0A= 85GngH3hOBE0EAUMSFwThhRU7a2oMLSTFXRg0bKC3n0MoNExAV/oKiSM5HC06PsP=0A= exONpT/8WHL6GRk6vfsj09m7qScZSvyX35TxggnEHNwNW5/aYKIuhsXohxhLkUqM=0A= Bzu9/Xdq0xPOTyJSTberO8LR1TdWwi2WtPEBOtD25VMtEwhHrX3BKBkmYVu5f7vr=0A= CZikOLr7N8a5zJHJIiEdA2uljajBVTkPRCbMVsIBN2VVPcY2YOyNmG4gAtYmuDRL=0A= rb8=3D=0A= =3D8FDv=0A= -----END PGP PUBLIC KEY BLOCK-----=0A= --------------8F8DF7CD2C2161DA8B697298-- --Lqbia319wwEdOuJCq2XH7lefmTKAxGV5S-- --3PAtiM8ttGXg5EFNPf2i0F84FmOCBwExA Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" Content-length: 819 -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJXl4SNAAoJEI2t6SdnWbp0sLwP/0Fd3UWfIZTiK8zLxhf9AisH QDJiobz1fZuH11YVxWiY8DH4n4Du4zJvYuYnIRZ6QrHncrc0rO0U9wf9apMLm4cU cqkZILro9TvSVOPjLz6pU88Od4AWwBn2w9CPU6YkL9uT9RZ1c7qgRicTN1/yiqWz ahIaW2HwbtCQSLb/WIWUo81Tgk4m1EhwrQAb9/Wyaw6zdfey/Sq/Kh3A58E4GOgZ SZq5WtxOc5VN6EbwYzcXBf8AqEnZJDL0jfhjlhKmo/QJp4CphUg55L2HRnHa3n4H o6MkFjFjZaJMtJdXDdX6wflEQ4NPHFO3ptPbEc9hViQxQkql6nDFEeyWZSvX6UCo CqmmT3BLBMbLMwJD8oxjbCZeyDNpgS7NhOHq1zlNiNRwsW9Y8g0qUVX/WTsI2p60 Yl8Wf62+FXyOZRJItLK+U0zsNkc4zpdzG2p3DXjxmIspkZZB1JwCLxjGDsVC+j/w y1EXOi6xHws6wiE7h4AouIoQIoqjnlU+smW5SNlf5LJPwSHgjKjcXOcq3OgeZUGF jiPaEzGT4QC03r24YSnD7lCT3bkpBmQDp1YYrdSA75/ODstcCRUP5oY2SC1gnibv 9bc6jlJfnRh6GDFfeJ0eDz3Xmo0NZsWWkUMZLYfrIQMExYVrJjIFf1cRxYW2i/8q rYWoiCFAS93bwH55TSbi =Ff9u -----END PGP SIGNATURE----- --3PAtiM8ttGXg5EFNPf2i0F84FmOCBwExA--