X-Recipient: archive-cygwin AT delorie DOT com X-SWARE-Spam-Status: No, hits=-3.5 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: sourceware.org Message-ID: <4AD992A9.1030708@cwilson.fastmail.fm> Date: Sat, 17 Oct 2009 05:47:21 -0400 From: Charles Wilson User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.23) Gecko/20090812 Thunderbird/2.0.0.23 Mnenhy/0.7.6.666 MIME-Version: 1.0 To: cygwin AT cygwin DOT com Subject: Re: fork failure? References: <4AD732C7 DOT 4020301 AT cwilson DOT fastmail DOT fm> <4AD73B83 DOT 9060505 AT gmail DOT com> <4AD74586 DOT 8070803 AT cwilson DOT fastmail DOT fm> <4AD752C8 DOT 2040908 AT gmail DOT com> <4AD7B135 DOT 6020401 AT cwilson DOT fastmail DOT fm> <4AD8220D DOT 8000908 AT cwilson DOT fastmail DOT fm> <4AD8AD47 DOT 6010605 AT cwilson DOT fastmail DOT fm> <4AD8B90B DOT 4040507 AT gmail DOT com> <4AD8CD8A DOT 7010708 AT cwilson DOT fastmail DOT fm> <4AD8D490 DOT 2040000 AT gmail DOT com> <4AD8DAC3 DOT 2080709 AT cwilson DOT fastmail DOT fm> <4AD93CA2 DOT 6020002 AT cwilson DOT fastmail DOT fm> <4AD95908 DOT 9020208 AT gmail DOT com> <4AD96A3B DOT 6010901 AT cwilson DOT fastmail DOT fm> In-Reply-To: <4AD96A3B.6010901@cwilson.fastmail.fm> Content-Type: multipart/mixed; boundary="------------050205090009010709080904" Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com --------------050205090009010709080904 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Charles Wilson wrote: > Dave Korn wrote: >> Umm, yes. Poking around directly inside a sigjmp_buf. Wonder if the layout >> is actually what that code expects it to be or not? That's where I'd start >> looking next, anyway, if I was wondering why maybe things were randomly >> jumping to unexpected places ... > > Oh gosh. I hope that code isn't actually "live" in the cygwin > build...yeah, messing around with jmp_bufs behind cygwin's -- or ANY > OS's -- back is just bound to screw up. Sigh. Ok, it's pth's fault. As it happens, none of the tests in pth's test suite use fork(); that seems to be a serious oversight. Anyway, here are two dirt-simple apps. One using pthreads, the other using pth. 'Course, you need pth to build the latter. gcc -o pth-fork pth-fork.c -lpth gcc -o pthreads-fork pthreads-fork.c $ ./pthreads-fork FORKPARENT: mypid=7328 childpid=7724 FORKCHILD: mypid=7724 $ ./pth-fork FORKPARENT: mypid=7140 childpid=7840 It looks like this is a long-standing problem: http://www.cygwin.com/ml/cygwin/2001-05/threads.html#01131 Then, as now, suspicion falls on messing with jmp_buf and/or the stack in bad ways. (Note: using -DPTH_SYSCALL_SOFT=1 to force using pth_fork() as a wrapper around the system fork() doesn't help. Same bad behavior.) I wonder what's more difficult...fixing pth, or modifying libassuan and gnupg to use plain old pthreads instead of pth? Typically, there's a big performance impact between native threads (slow, but pre-emptive) and user-mode threads (fast, but non-pre-emptive). However, on windows, I believe you don't have nearly as much of a performance penalty using native threads (which cygwin's pthread implementation uses under the hood). So, modifying the code to use pthreads wouldn't be bad, from a performance standpoint...but the APIs are /just annoyingly different enough/ to be painful. Hmmm...or writing shim wrappers to translate pth calls to pthread? Ach, the purist in me just wants to get pth working... I've attached the two test progs, and the cygport for pth. (sans source. use 'cygport *.cygport get'). -- Chuck --------------050205090009010709080904 Content-Type: application/octet-stream; name="pth-2.0.7-1.cygport.tar.bz2" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="pth-2.0.7-1.cygport.tar.bz2" cHRoLTIuMC43LTEuY3lncG9ydAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAADAwMDA2NDQAMDAwMTc1MQAwMDAxMDQxADAwMDAwMDAxMTcx ADExMjY1MjQ2MzYxADAxMzQyMwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGN3aWxz b24AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVXNlcnMAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAjIEN5Z3BvcnQgc2NyaXB0IGZvciBHTlUgUG9y dGFibGUgVGhyZWFkcyAocHRoKQpERVNDUklQVElPTj0iR05VIFB0aCAtIFRo ZSBHTlUgUG9ydGFibGUgVGhyZWFkcyIKSE9NRVBBR0U9Imh0dHA6Ly93d3cu Z251Lm9yZy9zb2Z0d2FyZS9wdGgvIgpTUkNfVVJJPSJmdHA6Ly9mdHAuZ251 Lm9yZy9nbnUvJHtQTn0vJHtQfS50YXIuZ3ogZnRwOi8vZnRwLmdudS5vcmcv Z251LyR7UE59LyR7UH0udGFyLmd6LnNpZyIKCmFiaT0yMApQS0dfTkFNRVM9 IiR7UE59IGxpYiR7UE59JHthYml9IGxpYiR7UE59LWRldmVsIgpQS0dfSElO VFM9InNldHVwIHJ1bnRpbWUgZGV2ZWwiClBLR19DT05URU5UU1swXT0idXNy L3NoYXJlL2RvYyB1c3Ivc2hhcmUvbWFuIgpQS0dfQ09OVEVOVFNbMV09InVz ci9iaW4vY3lncHRoLSR7YWJpfS5kbGwiClBLR19DT05URU5UU1syXT0ndXNy L2Jpbi9wdGgtY29uZmlnIHVzci9saWIgdXNyL2luY2x1ZGUgdXNyL3NoYXJl L2FjbG9jYWwnCgoKIyBGdW5jdGlvbiB0byBkbyB0aGUgY29tcGlsYXRpb24u Ck1BS0VPUFRTPS1qMQpzcmNfY29tcGlsZSgpCnsKICBjZCAke1N9CiAgbGli dG9vbGl6ZSAtY2lmdgogIGF1dG9yZWNvbmYgLWZ2aQogIGNkICR7Qn0KICBj eWdjb25mCiAgY3lnbWFrZQp9CgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAcHRoLTIuMC43LTEuY3lnd2luLnBhdGNoAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMTc1MQAwMDAxMDQxADAwMDAw MDEwMzU0ADExMjY1MjQ2MzYxADAxNDMzNQAgMAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAg AGN3aWxzb24AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVXNlcnMAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtLS0gb3JpZ3NyYy9wdGgtMi4wLjcv Q1lHV0lOLVBBVENIRVMvZGV2ZWwuaGludAkxOTY5LTEyLTMxIDE5OjAwOjAw LjAwMDAwMDAwMCAtMDUwMAorKysgc3JjL3B0aC0yLjAuNy9DWUdXSU4tUEFU Q0hFUy9kZXZlbC5oaW50CTIwMDktMTAtMTQgMDA6MDA6MzYuNjc2ODAwMDAw IC0wNDAwCkBAIC0wLDAgKzEsOCBAQAorcmVxdWlyZXM6IGxpYnB0aDIwCitj YXRlZ29yeTogRGV2ZWwgTGlicworZXh0ZXJuYWwtc291cmNlOiBwdGgKK3Nk ZXNjOiAiR05VIFB0aCAtIFRoZSBHTlUgUG9ydGFibGUgVGhyZWFkcyAoZGV2 ZWwpIgorbGRlc2M6ICJQdGggaXMgYSB2ZXJ5IHBvcnRhYmxlIFBPU0lYL0FO U0ktQyBiYXNlZCBsaWJyYXJ5IGZvcgorVW5peCBwbGF0Zm9ybXMgd2hpY2gg cHJvdmlkZXMgbm9uLXByZWVtcHRpdmUgcHJpb3JpdHktYmFzZWQKK3NjaGVk dWxpbmcgZm9yIG11bHRpcGxlIHRocmVhZHMgb2YgZXhlY3V0aW9uIChha2Eg bXVsdGl0aHJlYWRpbmcpCitpbnNpZGUgZXZlbnQtZHJpdmVuIGFwcGxpY2F0 aW9ucy4iCi0tLSBvcmlnc3JjL3B0aC0yLjAuNy9DWUdXSU4tUEFUQ0hFUy9w dGguUkVBRE1FCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAw CisrKyBzcmMvcHRoLTIuMC43L0NZR1dJTi1QQVRDSEVTL3B0aC5SRUFETUUJ MjAwOS0xMC0xMyAyMzo0OTozOC41NzY4MDAwMDAgLTA0MDAKQEAgLTAsMCAr MSw5OCBAQAorcHRoCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1B0 aCBpcyBhIHZlcnkgcG9ydGFibGUgUE9TSVgvQU5TSS1DIGJhc2VkIGxpYnJh cnkgZm9yIFVuaXggcGxhdGZvcm1zCit3aGljaCBwcm92aWRlcyBub24tcHJl ZW1wdGl2ZSBwcmlvcml0eS1iYXNlZCBzY2hlZHVsaW5nIGZvciBtdWx0aXBs ZQordGhyZWFkcyBvZiBleGVjdXRpb24gKGFrYSBgbXVsdGl0aHJlYWRpbmcn KSBpbnNpZGUgZXZlbnQtZHJpdmVuCithcHBsaWNhdGlvbnMuIEFsbCB0aHJl YWRzIHJ1biBpbiB0aGUgc2FtZSBhZGRyZXNzIHNwYWNlIG9mIHRoZSBzZXJ2 ZXIKK2FwcGxpY2F0aW9uLCBidXQgZWFjaCB0aHJlYWQgaGFzIGl0cyBvd24g aW5kaXZpZHVhbCBwcm9ncmFtLWNvdW50ZXIsCitydW4tdGltZSBzdGFjaywg c2lnbmFsIG1hc2sgYW5kIGVycm5vIHZhcmlhYmxlLgorCitSdW50aW1lIHJl cXVpcmVtZW50czoKKyAgY3lnd2luLTEuNy4wLTYyCisgIGxpYmdjYzEtNC4z LjQtMQorCitCdWlsZCByZXF1aXJlbWVudHM6CisoYmVzaWRlcyBjb3JyZXNw b25kaW5nIC1kZXZlbCBwYWNrYWdlcykKKyAgYXV0b2NvbmYyLjUtMi42NC0x MAorICBhdXRvbWFrZTEuMTEtMS4xMS0xMAorICBsaWJ0b29sLTIuMi43YS0x NAorICBiaW51dGlscy0yLjE5LjUxLTEKKyAgY3lncG9ydC0wLjkuOS0xCisg IGdhd2stMy4xLjctMgorICBnY2MtY29yZS00LjMuMi0yCisgIG1ha2UtMy44 MS0yCisgIHNlZC00LjEuNS0yCisKK0Nhbm9uaWNhbCB3ZWJzaXRlOgorICBo dHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvcHRoLworCitDYW5vbmljYWwg ZG93bmxvYWQ6CisgIGZ0cDovL2Z0cC5nbnUub3JnL2dudS9wdGgvCisKK0xp Y2Vuc2U6CisgIExHUEx2Mi4xKworCitMYW5ndWFnZToKKyAgQworCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKworQnVpbGQgaW5zdHJ1Y3Rpb25z OgorICB1bnBhY2sgbGlicHRoLTIuMC43LVgtc3JjLnRhci5iejIKKyAgICBp ZiB5b3UgdXNlIHNldHVwIHRvIGluc3RhbGwgdGhpcyBzcmMgcGFja2FnZSwg aXQgd2lsbCBiZQorCSB1bnBhY2tlZCB1bmRlciAvdXNyL3NyYyBhdXRvbWF0 aWNhbGx5CisgIGNkIC91c3Ivc3JjCisgIGN5Z3BvcnQgLi9saWJwdGgtMi4w LjctWC5jeWdwb3J0IGFsbAorCitUaGlzIHdpbGwgY3JlYXRlOgorICAvdXNy L3NyYy9saWJwdGgtMi4wLjctWC1zcmMudGFyLmJ6MgorICAvdXNyL3NyYy9s aWJwdGgyMC0yLjAuNy1YLnRhci5iejIKKyAgL3Vzci9zcmMvbGlicHRoLTIu MC43LVgudGFyLmJ6MgorICAvdXNyL3NyYy9saWJwdGgtZGV2ZWwtMi4wLjct WC50YXIuYnoyCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitG aWxlcyBpbmNsdWRlZCBpbiBsaWJwdGgyMDoKKyAgdXNyL2Jpbi9jeWdwdGgt MjAuZGxsCisKK0ZpbGVzIGluY2x1ZGVkIGluIGxpYnB0aDoKKyAgdXNyL3No YXJlL2RvYy9DeWd3aW4vcHRoLlJFQURNRQorICB1c3Ivc2hhcmUvZG9jL3B0 aC9BTk5PVU5DRQorICB1c3Ivc2hhcmUvZG9jL3B0aC9BVVRIT1JTCisgIHVz ci9zaGFyZS9kb2MvcHRoL0NPUFlJTkcKKyAgdXNyL3NoYXJlL2RvYy9wdGgv Q2hhbmdlTG9nCisgIHVzci9zaGFyZS9kb2MvcHRoL0hBQ0tJTkcKKyAgdXNy L3NoYXJlL2RvYy9wdGgvSElTVE9SWQorICB1c3Ivc2hhcmUvZG9jL3B0aC9O RVdTCisgIHVzci9zaGFyZS9kb2MvcHRoL1JFQURNRQorICB1c3Ivc2hhcmUv ZG9jL3B0aC9USEFOS1MKKyAgdXNyL3NoYXJlL21hbi9tYW4xL3B0aC1jb25m aWcuMS5negorICB1c3Ivc2hhcmUvbWFuL21hbjMvcHRoLjMuZ3oKKworRmls ZXMgaW5jbHVkZWQgaW4gbGlia3NiYS1kZXZlbDoKKyAgdXNyL2Jpbi9wdGgt Y29uZmlnCisgIHVzci9pbmNsdWRlL3B0aC5oCisgIHVzci9saWIvbGlicHRo LmEKKyAgdXNyL2xpYi9saWJwdGguZGxsLmEKKyAgdXNyL2xpYi9saWJwdGgu bGEKKyAgdXNyL3NoYXJlL2FjbG9jYWwvcHRoLm00CisKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorCitUZXN0IHN1aXRlIHJlc3VsdHMKK1RoaXMg c2VjdGlvbiBvZiB0aGlzIGRvY3VtZW50IGlzIHVwZGF0ZWQgd2l0aCBlYWNo IG5ldyByZWxlYXNlLgorTm8gaGlzdG9yeSBpcyBtYWludGFpbmVkIGhlcmUu CisKK09LIC0gQUxMIFRFU1RTIFNVQ0NFU1NGVUxMWSBQQVNTRUQuCisKKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorCitQb3J0IE5vdGVzOgorZGVj aXNpb24gb24gbWN0eCBpbXBsZW1lbnRhdGlvbi4uLiBzamxqL3NqbGp3MzIv bm9uZQorCisKKy0tLS0tIHB0aC0yLjAuNy0xIC0tIDIwMDkgT2N0IDEzIC0t LS0tCisqIEluaXRpYWwgY3lnd2luIHJlbGVhc2UKKworQ3lnd2luIHBvcnQg bWFpbnRhaW5lZCBieTogQ2hhcmxlcyBXaWxzb24gPGN5Z3dpbkBjeWd3aW4u Y29tPgorCi0tLSBvcmlnc3JjL3B0aC0yLjAuNy9DWUdXSU4tUEFUQ0hFUy9y dW50aW1lLmhpbnQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1 MDAKKysrIHNyYy9wdGgtMi4wLjcvQ1lHV0lOLVBBVENIRVMvcnVudGltZS5o aW50CTIwMDktMTAtMTQgMDA6MDA6MzAuNjQ0ODAwMDAwIC0wNDAwCkBAIC0w LDAgKzEsOCBAQAorcmVxdWlyZXM6IGxpYmdjYzEgCitjYXRlZ29yeTogTGli cworZXh0ZXJuYWwtc291cmNlOiBwdGggCitzZGVzYzogIkdOVSBQdGggLSBU aGUgR05VIFBvcnRhYmxlIFRocmVhZHMgKHJ1bnRpbWUpIgorbGRlc2M6ICJQ dGggaXMgYSB2ZXJ5IHBvcnRhYmxlIFBPU0lYL0FOU0ktQyBiYXNlZCBsaWJy YXJ5IGZvcgorVW5peCBwbGF0Zm9ybXMgd2hpY2ggcHJvdmlkZXMgbm9uLXBy ZWVtcHRpdmUgcHJpb3JpdHktYmFzZWQKK3NjaGVkdWxpbmcgZm9yIG11bHRp cGxlIHRocmVhZHMgb2YgZXhlY3V0aW9uIChha2EgbXVsdGl0aHJlYWRpbmcp CitpbnNpZGUgZXZlbnQtZHJpdmVuIGFwcGxpY2F0aW9ucy4iCi0tLSBvcmln c3JjL3B0aC0yLjAuNy9DWUdXSU4tUEFUQ0hFUy9zZXR1cC5oaW50CTE5Njkt MTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCisrKyBzcmMvcHRoLTIu MC43L0NZR1dJTi1QQVRDSEVTL3NldHVwLmhpbnQJMjAwOS0xMC0xMyAyMzo0 OTozOC42Mjc4MDAwMDAgLTA0MDAKQEAgLTAsMCArMSw3IEBACityZXF1aXJl czogbGlicHRoMjAKK2NhdGVnb3J5OiBEb2MKK3NkZXNjOiAiR05VIFB0aCAt IFRoZSBHTlUgUG9ydGFibGUgVGhyZWFkcyAoZG9jKSIKK2xkZXNjOiAiUHRo IGlzIGEgdmVyeSBwb3J0YWJsZSBQT1NJWC9BTlNJLUMgYmFzZWQgbGlicmFy eSBmb3IKK1VuaXggcGxhdGZvcm1zIHdoaWNoIHByb3ZpZGVzIG5vbi1wcmVl bXB0aXZlIHByaW9yaXR5LWJhc2VkCitzY2hlZHVsaW5nIGZvciBtdWx0aXBs ZSB0aHJlYWRzIG9mIGV4ZWN1dGlvbiAoYWthIG11bHRpdGhyZWFkaW5nKQor aW5zaWRlIGV2ZW50LWRyaXZlbiBhcHBsaWNhdGlvbnMuIgoAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwdGgt Mi4wLjctMS5zcmMucGF0Y2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAMDAwMDY0NAAwMDAxNzUxADAwMDEwNDEAMDAwMDAwMDYwMDAAMTEy NjUyNDYzNjEAMDEzNjE1ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAY3dpbHNvbgAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVc2VycwAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAC0tLSBvcmlnc3JjL3B0aC0yLjAuNy9NYWtlZmlsZS5p bgkyMDA2LTA2LTA4IDEzOjU0OjAxLjAwMDAwMDAwMCAtMDQwMAorKysgc3Jj L3B0aC0yLjAuNy9NYWtlZmlsZS5pbgkyMDA5LTEwLTEzIDIzOjQ5OjM5Ljcx NjgwMDAwMCAtMDQwMApAQCAtMTY5LDEwICsxNjksMTAgQEAgcHRoX3AuaDog JChTKXB0aF9wLmguaW4KICMgICBidWlsZCB0aGUgc3RhdGljIGFuZCBwb3Nz aWJseSBzaGFyZWQgbGlicmFyaWVzCiBsaWJwdGgubGE6ICQoTE9CSlMpCiAJ JChMSUJUT09MKSAtLW1vZGU9bGluayAtLXF1aWV0ICQoQ0MpIC1vIGxpYnB0 aC5sYSAkKExPQkpTKSBcCi0JLXJwYXRoICQobGliZGlyKSAtdmVyc2lvbi1p bmZvIGAkKFNIVE9PTCkgdmVyc2lvbiAtbGMgLWRsaWJ0b29sICQoX1ZFUlNJ T05fRklMRSlgCisJLXJwYXRoICQobGliZGlyKSAtdmVyc2lvbi1pbmZvIGAk KFNIVE9PTCkgdmVyc2lvbiAtbGMgLWRsaWJ0b29sICQoX1ZFUlNJT05fRklM RSlgIC1uby11bmRlZmluZWQKIGxpYnB0aHJlYWQubGE6IHB0aHJlYWQubG8g JChMT0JKUykKIAkkKExJQlRPT0wpIC0tbW9kZT1saW5rIC0tcXVpZXQgJChD QykgLW8gbGlicHRocmVhZC5sYSBwdGhyZWFkLmxvICQoTE9CSlMpIFwKLQkt cnBhdGggJChsaWJkaXIpIC12ZXJzaW9uLWluZm8gYCQoU0hUT09MKSB2ZXJz aW9uIC1sYyAtZGxpYnRvb2wgJChfVkVSU0lPTl9GSUxFKWAKKwktcnBhdGgg JChsaWJkaXIpIC12ZXJzaW9uLWluZm8gYCQoU0hUT09MKSB2ZXJzaW9uIC1s YyAtZGxpYnRvb2wgJChfVkVSU0lPTl9GSUxFKWAgLW5vLXVuZGVmaW5lZAog CiAjICAgYnVpbGQgdGhlIG1hbnVhbCBwYWdlcwogJChTKXB0aC1jb25maWcu MTogJChTKXB0aC1jb25maWcucG9kICQoX1ZFUlNJT05fRklMRSkKLS0tIG9y aWdzcmMvcHRoLTIuMC43L2FjbG9jYWwubTQJMjAwNi0wNi0wOCAxMzo1NDow MS4wMDAwMDAwMDAgLTA0MDAKKysrIHNyYy9wdGgtMi4wLjcvYWNsb2NhbC5t NAkyMDA5LTEwLTEzIDIzOjQ5OjM5LjcyMzgwMDAwMCAtMDQwMApAQCAtMTYy NywzICsxNjI3LDkgQEAgQUNfTVNHX1ZFUkJPU0UoWyRdJDIpCiBBQ19NU0df VkVSQk9TRShbJF0kMykKIF0pCiAKK200X2luY2x1ZGUoW2xpYnRvb2wubTRd KQorbTRfaW5jbHVkZShbbHRvcHRpb25zLm00XSkKK200X2luY2x1ZGUoW2x0 c3VnYXIubTRdKQorbTRfaW5jbHVkZShbbHR2ZXJzaW9uLm00XSkKK200X2lu Y2x1ZGUoW2x0fm9ic29sZXRlLm00XSkKKwotLS0gb3JpZ3NyYy9wdGgtMi4w LjcvY29uZmlndXJlLmFjCTIwMDYtMDYtMDggMTM6NTQ6MDEuMDAwMDAwMDAw IC0wNDAwCisrKyBzcmMvcHRoLTIuMC43L2NvbmZpZ3VyZS5hYwkyMDA5LTEw LTEzIDIzOjQ5OjM5LjczMDgwMDAwMCAtMDQwMApAQCAtMzIsMTMgKzMyLDE0 IEBAIGRubCAjIyAgUFJPTE9HCiBkbmwgIyMKIAogZG5sICMgICBzdGFuZGFy ZCBBdXRvY29uZiBwcm9sb2cKLUFDX1BSRVJFUSgyLjUyKWRubAorQUNfUFJF UkVRKDIuNjMpZG5sCiBBQ19SRVZJU0lPTihbMS4wXSkKIAogZG5sICMgICBh dXRvY29uZiBpbml0aWFsaXphdGlvbgogQUNfSU5JVChSRUFETUUpCiBBQ19F TkFCTEVTVUJESVIKIEFDX1NSQ0RJUl9QUkVGSVgoc3JjZGlyX3ByZWZpeCkK K0FDX0NPTkZJR19NQUNST19ESVIoWy5dKQogQUNfSEVBRExJTkUoZG5sCiBH TlUgUHRoLCBQb3J0YWJsZSBUaHJlYWRzLCBkbmwKIFBUSF9WRVJTSU9OLCBw dGhfdmVycy5jLCBkbmwKQEAgLTYxLDE4ICs2MiwxMiBAQCBBQ19TRVRfTUFL RQogQUNfQ0hFQ0tfREVCVUdHSU5HCiBBQ19DSEVDS19QUk9GSUxJTkcKIEFD X0NIRUNLX09QVElNSVpFCi1pZiB0ZXN0IC1mICIkc3JjZGlyL2x0bWFpbi5z aCI7IHRoZW4KLSAgICBjYXNlICIkUExBVEZPUk0iIGluCi0gICAgICAgICMg ICBTb2xhcmlzIDIuNy94ODYgaXMgc2xpZ2h0bHkgYnJva2VuCi0gICAgICAg ICotcGMtc29sYXJpczIuW1s3OF1dIFspXSBlbmFibGVfc2hhcmVkPW5vIDs7 Ci0gICAgZXNhYwotICAgIHNpbmNsdWRlKGxpYnRvb2wubTQpCi0gICAgQUNf UFJPR19MSUJUT09MCi1lbHNlCi0gICAgZG5sICMgb25seSBmb3Igc3RyaXBw ZWQgZG93biBQdGggc291cmNlIHRyZWUKLSAgICBBQ19DSEVDS19QUk9HKEFS LCBhciwgYXIpCi0gICAgQUNfUFJPR19SQU5MSUIKLWZpCitMVF9JTklUKFt3 aW4zMi1kbGxdKQorCitjYXNlICIkUExBVEZPUk0iIGluCisgICAgIyAgIFNv bGFyaXMgMi43L3g4NiBpcyBzbGlnaHRseSBicm9rZW4KKyAgICAqLXBjLXNv bGFyaXMyLltbNzhdXSBbKV0gZW5hYmxlX3NoYXJlZD1ubyA7OworZXNhYwog CiBkbmwgIyMgIFN1cHBvcnQgZm9yIHNvbWUgc3BlY2lhbCBwbGF0Zm9ybS9j b21waWxlciBvcHRpb25zCiBjYXNlICIkUExBVEZPUk06JENDIiBpbgotLS0g b3JpZ3NyYy9wdGgtMi4wLjcvcHRoX2FjZGVmLmguaW4JMjAwNi0wNi0wOCAx Mzo1NDowMy4wMDAwMDAwMDAgLTA0MDAKKysrIHNyYy9wdGgtMi4wLjcvcHRo X2FjZGVmLmguaW4JMjAwOS0xMC0xMyAyMzo1MDo1Ny4yMjA4MDAwMDAgLTA0 MDAKQEAgLTI0Miw2ICsyNDIsMTAgQEAKIC8qIERlZmluZSB0byAxIGlmIHlv dSBoYXZlIHRoZSBgX3NldGptcCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFW RV9fU0VUSk1QCiAKKy8qIERlZmluZSB0byB0aGUgc3ViLWRpcmVjdG9yeSBp biB3aGljaCBsaWJ0b29sIHN0b3JlcyB1bmluc3RhbGxlZCBsaWJyYXJpZXMu CisgICAqLworI3VuZGVmIExUX09CSkRJUgorCiAvKiBEZWZpbmUgdG8gdGhl IGFkZHJlc3Mgd2hlcmUgYnVnIHJlcG9ydHMgZm9yIHRoaXMgcGFja2FnZSBz aG91bGQgYmUgc2VudC4gKi8KICN1bmRlZiBQQUNLQUdFX0JVR1JFUE9SVAog CkBAIC0yNTQsNiArMjU4LDkgQEAKIC8qIERlZmluZSB0byB0aGUgb25lIHN5 bWJvbCBzaG9ydCBuYW1lIG9mIHRoaXMgcGFja2FnZS4gKi8KICN1bmRlZiBQ QUNLQUdFX1RBUk5BTUUKIAorLyogRGVmaW5lIHRvIHRoZSBob21lIHBhZ2Ug Zm9yIHRoaXMgcGFja2FnZS4gKi8KKyN1bmRlZiBQQUNLQUdFX1VSTAorCiAv KiBEZWZpbmUgdG8gdGhlIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLwog I3VuZGVmIFBBQ0tBR0VfVkVSU0lPTgogCgAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAA= --------------050205090009010709080904 Content-Type: text/plain; name="pthreads-fork.c" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="pthreads-fork.c" #include #include #include #include #include void *test (void *arg); int main (int argc, char *argv[]) { int err; pthread_t thread; void *threadrv; if ((err = pthread_create (&thread, NULL, test, NULL)) != 0) { printf ("Error on pthread_create %d:%s\n", err, strerror (err)); exit (1); } if ((err = pthread_join (thread, &threadrv)) != 0) { printf ("Error on pthread_join %d:%s\n", err, strerror (err)); exit (1); } return 0; } void * test (void *arg) { int pid; pid = fork (); if (pid < 0) { printf ("FORKFAILED\n"); } else if (pid == 0) { printf ("FORKCHILD: mypid=%d\n", getpid ()); } else { printf ("FORKPARENT: mypid=%d childpid=%d\n", getpid (), pid); } } --------------050205090009010709080904 Content-Type: text/plain; name="pth-fork.c" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="pth-fork.c" #include #include #include #include #include void *test (void *arg); int main (int argc, char *argv[]) { int err; pth_t thread; void *threadrv; if ((err = pth_init ()) != TRUE) { printf ("Error on pth_init: %d: %s\n", errno, strerror (errno)); exit (1); } if ((thread = pth_spawn (PTH_ATTR_DEFAULT, test, NULL)) == (pid_t) NULL) { printf ("Error on pth_spawn: %d: %s\n", errno, strerror (errno)); exit (1); } if ((err = pth_join (thread, &threadrv)) != TRUE) { printf ("Error on pthread_join %d: %s\n", errno, strerror (errno)); exit (1); } return 0; } void * test (void *arg) { int pid; pid = fork (); if (pid < 0) { printf ("FORKFAILED\n"); } else if (pid == 0) { printf ("FORKCHILD: mypid=%d\n", getpid ()); } else { printf ("FORKPARENT: mypid=%d childpid=%d\n", getpid (), pid); } } --------------050205090009010709080904 Content-Type: text/plain; charset=us-ascii -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple --------------050205090009010709080904--