delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2009/10/17/05:48:13

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 <cygwin AT cwilson DOT fastmail DOT fm>
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>
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
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 <stdlib.h>
#include <stdio.h>
#include <pthread.h>
#include <string.h>
#include <sys/errno.h>

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 <stdlib.h>
#include <stdio.h>
#include <pth.h>
#include <string.h>
#include <sys/errno.h>

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--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019