Re: small redesign...
Ćukasz Tasz <[email protected]> Fri, 24 Oct 2014 10:27:20 +0200
| Newsgroups | gmane.comp.compilers.distcc |
|---|---|
| Message-ID | <CAGRr-NjQvQ4Ro-QkTeEpuvfmGgNvVFXzyHmWokZg2KbcTtm88Q@mail.gmail.com> |
--001a113481e4e3f231050626f4ab Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi Martin What I have noticed. Client tries to connect distccd 3 times with 500ms delays in between. Linux kernel by default accept 128 connection. If client creates connection, even if no executors are avaliable, connection is accepted and queued by kernel running distccd. This leads to situation that client thinks that distccd is reserved, but in fact connection still waits to be accepted by distccd server. I suspect that then client starts communication too fast, distcc wont receive DIST token, and both sides waits, communication is broken, and then timeouts are applied for client default is applied, for server there is no defaults. fail scenarion is: one distccd, and two distcc users, both of them will try to compile with DISTCC_HOSTS=3Ddistccd/1,cpp,lzo, both users have lot of big objects, cluster is overloaded with ratio 2. This still should be OK, that third, and forth user will join cluster. Easy reproducer is to set one distcc, and set distcc_hosts=3Ddistccd/20, this is broken configuration, but simulates overload by 20 - 20 developers uses cluster in a same time. Please remember that those are exceptional situation, but developer can start compilation with -j 1000 from his laptop, and cluster will timeout, then receiving 1000 jobs on a laptop will end with memmory killer :D Those are exceptional situation, and somehow cluster should handle that. In the attachement, next to some pump changes, you can find change which is moving making connection to very beginning, when distcc is picking host, also remote connection is made. if this will fail, discc follow default behaviour, goes sleep for one sec, and will pick host again. But this requires additional administration change on distccd machine: iptables -I INPUT -p tcp --dport 3632 -m connlimit --connlimit-above <NUMBER OF DISTCCD> --connlimit-mask 0 -j REJECT --reject-with tcp-reset which accept only number of connection which equals to number of executors. So far so good! remark, patch is done on top of arankine_distcc_issue16-r335, since his pump changes are making pump mode working on my environment. But distccd allocation I tested also on latest official distcc release. let me know what you think! with best regards Lukasz =C5=81ukasz Tasz 2014-10-24 2:42 GMT+02:00 Martin Pool <[email protected]>: > It seems like if there's nowhere to execute the job, we want the client > program to just pause, before using too many resources, until it gets > unqueued by a server ready to do the job. (Or, by a local slot being > available.) > > > On Thu Oct 16 2014 at 2:43:35 AM =C5=81ukasz Tasz <[email protected]> wrote: >> >> Hi Martin, >> >> Lets assume that you can trigger more compilation tasks executors then y= ou >> have. >> In this scenario you are facing situation that cluster is saturated. >> When such a compilation will be triggered by two developers, or two CI >> (e.g jenkins) jobs, then cluster is saturated twice... >> >> Default behaviour is to lock locally slot, and try to connect three >> times, if not, fallback, if fallback is disabled CI got failed build >> (fallback is not the case, since local machine cannot handle -j >> $(distcc -j)). >> >> consider scenario, I have 1000 objects, 500 executors, >> - clean build on one machine takes >> 1000 * 20 sec (one obj) =3D 20000 / 16 processors =3D 1000 sec, >> - on cluster (1000/500) * 20 sec =3D 40 sec >> >> Saturating cluster was impossible without pump mode, but now with pump >> mode after "warm up" effect, pump can dispatch many tasks, and I faced >> situation that saturated cluster destroys almost every compilation. >> >> My expectation is that cluster wont reject my connect, or reject will >> be handled, either by client, either by server. >> >> by server: >> - accept every connetion, >> - fork child if not accepted by child, >> - in case of pump prepare local dir structure, receive headers >> - --critical section starts here-- multi value semaphore with value >> maxchild >> - execute job >> - release semaphore >> >> >> Also what you suggested may be even better solution, since client will >> pick first avaliable executor instead of entering queue, so distcc >> could make connection already in function dcc_lock_one() >> >> I already tried to set DISTCC_DIR on a common nfs share, but in case >> you are triggering so many jobs, this started to be bottle neck... I >> won't tell about locking on nfs, and also scenario that somebody will >> make a lock on nfs and machine will got crash - will not work by >> design :) >> >> I know that scenario is not happening very often, and it has more or >> less picks characteristic, but we should be happy that distcc cluster >> is saturated and this case should be handled. >> >> hope it's more clear now! >> br >> LT >> >> >> >> >> >> >> >> >> >> =C5=81ukasz Tasz >> >> >> 2014-10-16 1:39 GMT+02:00 Martin Pool <[email protected]>: >> > Can you try to explain more clearly what difference in queueing behavi= or >> > you >> > expect from this change? >> > >> > I think probably the main change that's needed is for the client to as= k >> > all >> > masters if they have space, to avoid needing to effectively poll by >> > retrying, or getting stuck waiting for a particular server. >> > >> > On Wed, Oct 15, 2014 at 12:53 PM, =C5=81ukasz Tasz <[email protected]> wr= ote: >> >> >> >> Hi Guys, >> >> >> >> please correct me if I'm wrong, >> >> - currently distcc tries to connect server 3 times, with small delay, >> >> - server forks x childs and all of them are trying to accept incoming >> >> connection. >> >> If server runs out of childs (all of them are busy), client will >> >> fallback, and within next 60 sec will not try this machine. >> >> >> >> What do you think about redesigning distcc in a way that master serve= r >> >> will always accept inconing connection, fork a child, but in a same >> >> time only x of them will be able to enter compilation >> >> task(dcc_spawn_child)? (mayby preforking still could be used?) >> >> >> >> This may create kind of queue, client always can decide by his own, i= f >> >> can wait some time, or maximum is DISTCC_IO_TIMEOUT, but still it's >> >> faster to wait, since probably on a cluster side it's just a pick of >> >> saturation then making falback to local machine. >> >> >> >> currently I'm facing situation that many jobs are making fallback, an= d >> >> localmachine is being killed by make's -j calculated for distccd... >> >> >> >> other trick maybe to pick different machine, if current is busy, but >> >> this may be much more complex in my opinion. >> >> >> >> what do you think? >> >> regards >> >> =C5=81ukasz Tasz >> >> __ >> >> distcc mailing list http://distcc.samba.org/ >> >> To unsubscribe or change options: >> >> https://lists.samba.org/mailman/listinfo/distcc >> > >> > >> > >> > >> > -- >> > Martin --001a113481e4e3f231050626f4ab Content-Type: text/x-patch; charset=UTF-8; name="tasz_lukasz.patch" Content-Disposition: attachment; filename="tasz_lukasz.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i1n909p10 ZGlmZiAtLWV4Y2x1ZGU9LnN2biAtcnVwTiBkaXN0Y2MtMy4yLWFyYW5raW5lL2luY2x1ZGVfc2Vy dmVyL2Jhc2ljcy5weSBkaXN0Y2MtMy4ycmMyX25ldy9pbmNsdWRlX3NlcnZlci9iYXNpY3MucHkK LS0tIGRpc3RjYy0zLjItYXJhbmtpbmUvaW5jbHVkZV9zZXJ2ZXIvYmFzaWNzLnB5CTIwMTQtMDkt MDQgMTE6NDQ6NDEuMDAwMDAwMDAwICswMjAwCisrKyBkaXN0Y2MtMy4ycmMyX25ldy9pbmNsdWRl X3NlcnZlci9iYXNpY3MucHkJMjAxNC0wOS0wNSAxMToyOTo0OC4yMzg1NjE4ODcgKzAyMDAKQEAg LTE4MCw3ICsxODAsNyBAQCBNQVhfRU1BSUxTX1RPX1NFTkQgPSAzCiAjIGltcG9ydGFuY2UgdG8g YnVpbGRzIHRoYXQgaW52b2x2ZSBjb21waWxhdGlvbnMgdGhhdCBkaXN0Y2MtcHVtcCBkb2VzIG5v dCBncm9rOgogIyBhbiBhbW91bnQgb2YgdGltZSByb3VnaGx5IGVxdWFsIHRvIHRoaXMgcXVvdGEg aXMgd2FzdGVkIGJlZm9yZSBDUFAgaXMgaW52b2tlZAogIyBpbnN0ZWFkLgotVVNFUl9USU1FX1FV T1RBID0gMy44ICAjIHNlY29uZHMKK1VTRVJfVElNRV9RVU9UQSA9IDIwICAjIHNlY29uZHMKIAog IyBIb3cgb2Z0ZW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbiBpcyBhbnN3ZXJlZDogaGFzIHRvbyBt dWNoIHVzZXIgdGltZSBiZWVuCiAjIHNwZW50IGluIHRoZSBpbmNsdWRlIGhhbmRsZXIgc2Vydmlj aW5nIHRoZSBjdXJyZW50IHJlcXVlc3Q/CmRpZmYgLS1leGNsdWRlPS5zdm4gLXJ1cE4gZGlzdGNj LTMuMi1hcmFua2luZS9NYWtlZmlsZS5pbiBkaXN0Y2MtMy4ycmMyX25ldy9NYWtlZmlsZS5pbgot LS0gZGlzdGNjLTMuMi1hcmFua2luZS9NYWtlZmlsZS5pbgkyMDE0LTA5LTA0IDExOjQ0OjQxLjAw MDAwMDAwMCArMDIwMAorKysgZGlzdGNjLTMuMnJjMl9uZXcvTWFrZWZpbGUuaW4JMjAxNC0xMC0y MSAxNToxMDowOS4yMTE0NTM3NzUgKzAyMDAKQEAgLTEwNzIsOSArMTA3Miw3IEBAIGluc3RhbGwt aW5jbHVkZS1zZXJ2ZXI6IGluY2x1ZGUtc2VydmVyIHAKIAkgICAgY3AgLWYgIiQoaW5jbHVkZV9z ZXJ2ZXJfYnVpbGRkaXIpL2luc3RhbGwubG9nIiAiJChQWVRIT05fSU5TVEFMTF9SRUNPUkQpIjsg XAogCSAgZmk7IFwKIAkgICQobWtpbnN0YWxsZGlycykgIiQoREVTVERJUikkKGJpbmRpcikiICYm IFwKLQkgIElOQ0xVREVfU0VSVkVSPWBncmVwICcvaW5jbHVkZV9zZXJ2ZXIucHkkJCcgIiQoaW5j bHVkZV9zZXJ2ZXJfYnVpbGRkaXIpL2luc3RhbGwubG9nImAgJiYgXAotCSAgc2VkICJzLF5pbmNs dWRlX3NlcnZlcj0nJyxpbmNsdWRlX3NlcnZlcj0nJCRJTkNMVURFX1NFUlZFUicsIiBcCi0JICAg IHB1bXAgPiAiJChpbmNsdWRlX3NlcnZlcl9idWlsZGRpcikvcHVtcCIgJiYgXAorCSAgY3AgcHVt cCAgIiQoaW5jbHVkZV9zZXJ2ZXJfYnVpbGRkaXIpL3B1bXAiICYmIFwKIAkgICQoSU5TVEFMTF9Q Uk9HUkFNKSAiJChpbmNsdWRlX3NlcnZlcl9idWlsZGRpcikvcHVtcCIgIiQoREVTVERJUikkKGJp bmRpcikiOyBcCiAJZmkKIApkaWZmIC0tZXhjbHVkZT0uc3ZuIC1ydXBOIGRpc3RjYy0zLjItYXJh bmtpbmUvcHVtcC5pbiBkaXN0Y2MtMy4ycmMyX25ldy9wdW1wLmluCi0tLSBkaXN0Y2MtMy4yLWFy YW5raW5lL3B1bXAuaW4JMjAxNC0wOS0wNCAxMTo0NDo0MS4wMDAwMDAwMDAgKzAyMDAKKysrIGRp c3RjYy0zLjJyYzJfbmV3L3B1bXAuaW4JMjAxNC0xMC0yMSAxNToxOTowNS40MTIzMjM2NTYgKzAy MDAKQEAgLTQwLDcgKzQwLDEyIEBAIHNyY2Rpcj1Ac3JjZGlyQAogIyB0byB0aGUgaW5zdGFsbGVk IGluY2x1ZGVfc2VydmVyLnB5LgogIyBOT1RFOiBETyBOT1QgQ0hBTkdFIFRIRSBMSU5FIEJFTE9X IFdJVEhPVVQgQ0hBTkdJTkcgVEhFIFNFRCBJTgogIyAgICAgICBNYWtlZmlsZS5pbjppbnN0YWxs LWluY2x1ZGUtc2VydmVyLgotaW5jbHVkZV9zZXJ2ZXI9JycKKworI3Rhc3psdWsgdGhpcyBzaG91 bGQgYmUgY2FsY3VsYXRlZCB3aGlsZSBydW50aW1lLCBpbmNsdWRlX3NlcnZlci5weSBpcyBhbHdh eXMgcmVsYXRpdmVseSB0byBwdW1wCisjL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMv aW5jbHVkZV9zZXJ2ZXIKKyMvdXNyL2Jpbi9wdW1wCitjZGlyPSQocmVhZGxpbmsgLWYgJDApCitp bmNsdWRlX3NlcnZlcj0kKHJlYWRsaW5rIC1mICQoZGlybmFtZSAkY2RpcikvLi4vbGliL3B5dGhv bjIuNy9zaXRlLXBhY2thZ2VzL2luY2x1ZGVfc2VydmVyL2luY2x1ZGVfc2VydmVyLnB5KQogCiAK IENoZWNrVXNhZ2UoKSB7CkBAIC00OTcsNyArNTAyLDcgQEAgRHVtcEVudmlyb25tZW50VmFyaWFi bGVzKCkgewogICBpZiBbIC1uICIkRElTVENDX0hPU1RTIiBdOyB0aGVuCiAgICAgZWNobyBleHBv cnQgRElTVENDX0hPU1RTPVwnJERJU1RDQ19IT1NUU1wnCiAgIGZpCi0gIGVjaG8gZXhwb3J0IFBB VEg9XCckZGlzdGNjX2xvY2F0aW9uOiRQQVRIXCcKKyAgI2VjaG8gZXhwb3J0IFBBVEg9XCckZGlz dGNjX2xvY2F0aW9uOiRQQVRIXCcKIH0KIAogTWFpbigpIHsKQEAgLTUzNyw3ICs1NDIsNyBAQCBN YWluKCkgewogICAgICAgQW5ub3VuY2UKICAgICAgIFN0YXJ0SW5jbHVkZVNlcnZlckFuZERldGVy bWluZUhvc3RzIHx8IGV4aXQgMQogICAgICAgIyBOb3cgZXhlY3V0ZSB0aGUgY29tbWFuZCB0aGF0 IGlzIHRoZSBhcmd1bWVudCBvZiAncHVtcCcuCi0gICAgICBQQVRIPSIkZGlzdGNjX2xvY2F0aW9u OiRQQVRIIiBcCisgICAgICAjUEFUSD0iJGRpc3RjY19sb2NhdGlvbjokUEFUSCIgXAogICAgICAg ICAiJEAiCiAgICAgICAjIFdoZW4gd2UgZXhpdCwgdGhlIFNodXREb3duIGZ1bmN0aW9uIHdpbGwg YmUgY2FsbGVkLgogICAgICAgOzsKUGxpa2kgYmluYXJuZSBkaXN0Y2MtMy4yLWFyYW5raW5lLy5w dW1wLmluLnN3cCBpIGRpc3RjYy0zLjJyYzJfbmV3Ly5wdW1wLmluLnN3cCBzacSZIHLDs8W8bmnE hQpQbGlraSBiaW5hcm5lIGRpc3RjYy0zLjItYXJhbmtpbmUvc3JjLy5hcmcuYy5zd3AgaSBkaXN0 Y2MtMy4ycmMyX25ldy9zcmMvLmFyZy5jLnN3cCBzacSZIHLDs8W8bmnEhQpkaWZmIC0tZXhjbHVk ZT0uc3ZuIC1ydXBOIGRpc3RjYy0zLjItYXJhbmtpbmUvc3JjL2NvbXBpbGUuYyBkaXN0Y2MtMy4y cmMyX25ldy9zcmMvY29tcGlsZS5jCi0tLSBkaXN0Y2MtMy4yLWFyYW5raW5lL3NyYy9jb21waWxl LmMJMjAxNC0wOS0wNCAxMTo0NDo0MS4wMDAwMDAwMDAgKzAyMDAKKysrIGRpc3RjYy0zLjJyYzJf bmV3L3NyYy9jb21waWxlLmMJMjAxNC0xMC0xNiAxNDoxMDo1My44NDI2MDc3NDQgKzAyMDAKQEAg LTUwNCw2ICs1MDQsOSBAQCBkY2NfYnVpbGRfc29tZXdoZXJlKGNoYXIgKmFyZ3ZbXSwKICAgICBz dHJ1Y3QgZGNjX2hvc3RkZWYgKmhvc3QgPSBOVUxMOwogICAgIGNoYXIgKmRpc2NyZXBhbmN5X2Zp bGVuYW1lID0gTlVMTDsKICAgICBjaGFyICoqbmV3X2FyZ3Y7CisgICAgaW50IHRvX25ldF9mZCA9 IC0xLCBmcm9tX25ldF9mZCA9IC0xOworICAgIHBpZF90IHNzaF9waWQgPSAwOworICAgIAogCiAg ICAgaWYgKChyZXQgPSBkY2NfZXhwYW5kX3ByZXByb2Nlc3Nvcl9vcHRpb25zKCZhcmd2KSkgIT0g MCkKICAgICAgICAgZ290byBjbGVhbl91cDsKQEAgLTU0OSw3ICs1NTIsNyBAQCBkY2NfYnVpbGRf c29tZXdoZXJlKGNoYXIgKmFyZ3ZbXSwKIAogICAgIC8qIENob29zZSB0aGUgZGlzdGNjIHNlcnZl ciBob3N0ICh3aGljaCBjb3VsZCBiZSBlaXRoZXIgYSByZW1vdGUKICAgICAgKiBob3N0IG9yIGxv Y2FsaG9zdCkgYW5kIGFjcXVpcmUgdGhlIGxvY2sgZm9yIGl0LiAgKi8KLSAgICBpZiAoKHJldCA9 IGRjY19waWNrX2hvc3RfZnJvbV9saXN0X2FuZF9sb2NrX2l0KCZob3N0LCAmY3B1X2xvY2tfZmQp KSAhPSAwKSB7CisgICAgaWYgKChyZXQgPSBkY2NfcGlja19ob3N0X2Zyb21fbGlzdF9hbmRfbG9j a19pdCgmaG9zdCwgJmNwdV9sb2NrX2ZkLCAmdG9fbmV0X2ZkLCAmZnJvbV9uZXRfZmQsICZzc2hf cGlkKSkgIT0gMCkgewogICAgICAgICAvKiBEb2Vzbid0IGhhcHBlbiBhdCB0aGUgbW9tZW50OiBh bGwgZmFpbHVyZXMgYXJlIG1hc2tlZCBieQogICAgICAgICAgICByZXR1cm5pbmcgbG9jYWxob3N0 LiAqLwogICAgICAgICBnb3RvIGZhbGxiYWNrOwpAQCAtNjM4LDcgKzY0MSw4IEBAIGRjY19idWls ZF9zb21ld2hlcmUoY2hhciAqYXJndltdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5lZWRzX2RvdGQgPyBkZXBzX2ZuYW1lIDogTlVMTCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZXJ2ZXJfc3RkZXJyX2ZuYW1lLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNwcF9waWQsIGxvY2FsX2NwdV9sb2NrX2ZkLAotICAgICAgICAgICAgICAg ICAgaG9zdCwgc3RhdHVzKSkgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGhvc3QsIHN0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdG9f bmV0X2ZkLCAmZnJvbV9uZXRfZmQsICZzc2hfcGlkKSkgIT0gMCkgewogICAgICAgICAvKiBSZXR1 cm5zIHplcm8gaWYgd2Ugc3VjY2Vzc2Z1bGx5IHJhbiB0aGUgY29tcGlsZXIsIGV2ZW4gaWYKICAg ICAgICAgICogdGhlIGNvbXBpbGVyIGl0c2VsZiBib21iZWQgb3V0LiAqLwogCmRpZmYgLS1leGNs dWRlPS5zdm4gLXJ1cE4gZGlzdGNjLTMuMi1hcmFua2luZS9zcmMvY29tcGlsZS5oIGRpc3RjYy0z LjJyYzJfbmV3L3NyYy9jb21waWxlLmgKLS0tIGRpc3RjYy0zLjItYXJhbmtpbmUvc3JjL2NvbXBp bGUuaAkyMDE0LTA5LTA0IDExOjQ0OjQxLjAwMDAwMDAwMCArMDIwMAorKysgZGlzdGNjLTMuMnJj Ml9uZXcvc3JjL2NvbXBpbGUuaAkyMDE0LTEwLTE2IDE1OjI0OjI4LjkyNjY0NDU2OSArMDIwMApA QCAtMjYsMTQgKzI2LDIyIEBACiBpbnQgZGNjX2NvbXBpbGVfcmVtb3RlKGNoYXIgKiphcmd2LAog ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICppbnB1dF9mbmFtZSwKICAgICAgICAgICAgICAg ICAgICAgICAgY2hhciAqY3BwX2ZuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoq ZmlsZV9uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKmZpbGVzLAogICAgICAg ICAgICAgICAgICAgICAgICBjaGFyICpvdXRwdXRfZm5hbWUsCiAgICAgICAgICAgICAgICAgICAg ICAgIGNoYXIgKmRlcHNfZm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnNlcnZl cl9zdGRlcnJfZm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHBpZF90IGNwcF9waWQsCiAg ICAgICAgICAgICAgICAgICAgICAgIGludCBsb2NhbF9jcHVfbG9ja19mZCwKICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGRjY19ob3N0ZGVmICpob3N0LAotICAgICAgICAgICAgICAgICAg ICAgICBpbnQgKnN0YXR1cyk7CisgICAgICAgICAgICAgICAgICAgICAgIGludCAqc3RhdHVzLAor ICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnRvX25ldF9mZCwgCisgICAgICAgICAgICAgICAg ICAgICAgIGludCAqZnJvbV9uZXRfZmQsIAorICAgICAgICAgICAgICAgICAgICAgICBwaWRfdCAq c3NoX3BpZCk7CisKK3N0YXRpYyBpbnQgZGNjX3JlbW90ZV9jb25uZWN0KHN0cnVjdCBkY2NfaG9z dGRlZiAqaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqdG9fbmV0X2Zk LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpmcm9tX25ldF9mZCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBpZF90ICpzc2hfcGlkKTsKIAogLyogY29tcGlsZS5j ICovCiAKZGlmZiAtLWV4Y2x1ZGU9LnN2biAtcnVwTiBkaXN0Y2MtMy4yLWFyYW5raW5lL3NyYy9t b24uYyBkaXN0Y2MtMy4ycmMyX25ldy9zcmMvbW9uLmMKLS0tIGRpc3RjYy0zLjItYXJhbmtpbmUv c3JjL21vbi5jCTIwMTQtMDktMDQgMTE6NDQ6NDEuMDAwMDAwMDAwICswMjAwCisrKyBkaXN0Y2Mt My4ycmMyX25ldy9zcmMvbW9uLmMJMjAxNC0wOS0wNSAxMToyODozNC4yNDgwMDg1NTQgKzAyMDAK QEAgLTcxLDcgKzcxLDcgQEAKICAqIHRha2UgYSB2ZXJ5IGxvbmcgdGltZSwgYW5kIGNvbWJpbmVk IHdpdGggdGhlIGNoZWNrIHRoYXQgdGhlIHByb2Nlc3MKICAqIGV4aXN0cyB3ZSBjYW4gYWxsb3cg dGhpcyB0byBiZSByZWFzb25hYmx5IGxhcmdlLgogICovCi1jb25zdCBpbnQgZGNjX3BoYXNlX21h eF9hZ2UgPSA2MDsKK2NvbnN0IGludCBkY2NfcGhhc2VfbWF4X2FnZSA9IDMwMDsKIAogCiAvKioK ZGlmZiAtLWV4Y2x1ZGU9LnN2biAtcnVwTiBkaXN0Y2MtMy4yLWFyYW5raW5lL3NyYy9yZW1vdGUu YyBkaXN0Y2MtMy4ycmMyX25ldy9zcmMvcmVtb3RlLmMKLS0tIGRpc3RjYy0zLjItYXJhbmtpbmUv c3JjL3JlbW90ZS5jCTIwMTQtMDktMDQgMTE6NDQ6NDEuMDAwMDAwMDAwICswMjAwCisrKyBkaXN0 Y2MtMy4ycmMyX25ldy9zcmMvcmVtb3RlLmMJMjAxNC0xMC0xNiAxNToyOToxOS44NTg3NjYzNDAg KzAyMDAKQEAgLTY3LDEwICs2NywxMSBAQCBleHRlcm4gZ3NzX2N0eF9pZF90IGRpc3RjY19jdHhf aGFuZGxlOwogICovCiAKIC8qKgorICogdGFzemx1aywgbW92ZWQgdG8gd2hlcmUuYwogICogT3Bl biBhIGNvbm5lY3Rpb24gdXNpbmcgZWl0aGVyIGEgVENQIHNvY2tldCBvciBTU0guICBSZXR1cm4g aW5wdXQKICAqIGFuZCBvdXRwdXQgZmlsZSBkZXNjcmlwdG9ycyAod2hpY2ggbWF5IG9yIG1heSBu b3QgYmUgZGlmZmVyZW50LikKICAqKi8KLXN0YXRpYyBpbnQgZGNjX3JlbW90ZV9jb25uZWN0KHN0 cnVjdCBkY2NfaG9zdGRlZiAqaG9zdCwKKy8qc3RhdGljIGludCBkY2NfcmVtb3RlX2Nvbm5lY3Qo c3RydWN0IGRjY19ob3N0ZGVmICpob3N0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50ICp0b19uZXRfZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmZyb21f bmV0X2ZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkX3QgKnNzaF9waWQpCkBA IC05NSw3ICs5Niw3IEBAIHN0YXRpYyBpbnQgZGNjX3JlbW90ZV9jb25uZWN0KHN0cnVjdCBkY2MK ICAgICAgICAgcnNfbG9nX2NyaXQoImltcG9zc2libGUgaG9zdCBtb2RlIik7CiAgICAgICAgIHJl dHVybiBFWElUX0RJU1RDQ19GQUlMRUQ7CiAgICAgfQotfQorfSovCiAKIAogc3RhdGljIGludCBk Y2Nfd2FpdF9mb3JfY3BwKHBpZF90IGNwcF9waWQsCkBAIC0yMDIsMTEgKzIwMywxNCBAQCBpbnQg ZGNjX2NvbXBpbGVfcmVtb3RlKGNoYXIgKiphcmd2LAogICAgICAgICAgICAgICAgICAgICAgICBw aWRfdCBjcHBfcGlkLAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgbG9jYWxfY3B1X2xvY2tf ZmQsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkY2NfaG9zdGRlZiAqaG9zdCwKLSAg ICAgICAgICAgICAgICAgICAgICAgaW50ICpzdGF0dXMpCisgICAgICAgICAgICAgICAgICAgICAg IGludCAqc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnRvX25ldF9mZF9wLCBp bnQgKmZyb21fbmV0X2ZkX3AsIHBpZF90ICpzc2hfcGlkX3ApCiB7Ci0gICAgaW50IHRvX25ldF9m ZCA9IC0xLCBmcm9tX25ldF9mZCA9IC0xOworLy8gICAgdGFzemx1ayBjb25uZWN0aW9uIGVzdGFi bGlzaGVkIHVwcGVyCisgICAgaW50IHRvX25ldF9mZCA9ICp0b19uZXRfZmRfcDsKKyAgICBpbnQg ZnJvbV9uZXRfZmQgPSAqZnJvbV9uZXRfZmRfcDsKKyAgICBwaWRfdCBzc2hfcGlkID0gKnNzaF9w aWRfcDsKICAgICBpbnQgcmV0OwotICAgIHBpZF90IHNzaF9waWQgPSAwOwogICAgIGludCBzc2hf c3RhdHVzOwogICAgIG9mZl90IGRvdGlfc2l6ZTsKICAgICBzdHJ1Y3QgdGltZXZhbCBiZWZvcmUs IGFmdGVyOwpAQCAtMjIzLDggKzIyNyw5IEBAIGludCBkY2NfY29tcGlsZV9yZW1vdGUoY2hhciAq KmFyZ3YsCiAgICAgICogYmUgb3ZlciBwaXBlcywgd2hpY2ggYXJlIG9uZS13YXkgY29ubmVjdGlv bnMuICovCiAKICAgICAqc3RhdHVzID0gMDsKLSAgICBpZiAoKHJldCA9IGRjY19yZW1vdGVfY29u bmVjdChob3N0LCAmdG9fbmV0X2ZkLCAmZnJvbV9uZXRfZmQsICZzc2hfcGlkKSkpCi0gICAgICAg IGdvdG8gb3V0OworLy90YXN6bHVrLCBtb3ZlIGl0IHRvIGRjY19waWNrX2hvc3RfZnJvbV9saXN0 X2FuZF9sb2NrX2l0CisvLyAgICBpZiAoKHJldCA9IGRjY19yZW1vdGVfY29ubmVjdChob3N0LCAm dG9fbmV0X2ZkLCAmZnJvbV9uZXRfZmQsICZzc2hfcGlkKSkpCisvLyAgICAgICAgZ290byBvdXQ7 CiAKICNpZmRlZiBIQVZFX0dTU0FQSQogICAgIC8qIFBlcmZvcm0gcmVxdWVzdGVkIHNlY3VyaXR5 LiAqLwpQbGlraSBiaW5hcm5lIGRpc3RjYy0zLjItYXJhbmtpbmUvc3JjLy5zdGF0ZS5oLnN3cCBp IGRpc3RjYy0zLjJyYzJfbmV3L3NyYy8uc3RhdGUuaC5zd3Agc2nEmSByw7PFvG5pxIUKZGlmZiAt LWV4Y2x1ZGU9LnN2biAtcnVwTiBkaXN0Y2MtMy4yLWFyYW5raW5lL3NyYy93aGVyZS5jIGRpc3Rj Yy0zLjJyYzJfbmV3L3NyYy93aGVyZS5jCi0tLSBkaXN0Y2MtMy4yLWFyYW5raW5lL3NyYy93aGVy ZS5jCTIwMTQtMDktMDQgMTE6NDQ6NDEuMDAwMDAwMDAwICswMjAwCisrKyBkaXN0Y2MtMy4ycmMy X25ldy9zcmMvd2hlcmUuYwkyMDE0LTEwLTIxIDEzOjM3OjE4LjMzNDU0MzQyOSArMDIwMApAQCAt NzYsMTUgKzc2LDI0IEBACiAjaW5jbHVkZSAibG9jay5oIgogI2luY2x1ZGUgIndoZXJlLmgiCiAj aW5jbHVkZSAiZXhpdGNvZGUuaCIKKyNpbmNsdWRlICJjb21waWxlLmgiCiAKIAogc3RhdGljIGlu dCBkY2NfbG9ja19vbmUoc3RydWN0IGRjY19ob3N0ZGVmICpob3N0bGlzdCwKICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBkY2NfaG9zdGRlZiAqKmJ1aWxkaG9zdCwKLSAgICAgICAgICAg ICAgICAgICAgICAgIGludCAqY3B1X2xvY2tfZmQpOworICAgICAgICAgICAgICAgICAgICAgICAg aW50ICpjcHVfbG9ja19mZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCAqdG9fbmV0X2Zk LAorICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpmcm9tX25ldF9mZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgIHBpZF90ICpzc2hfcGlkKTsKKworc3RhdGljIGludCBkY2NfcmVtb3RlX2Nv bm5lY3Qoc3RydWN0IGRjY19ob3N0ZGVmICpob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50ICp0b19uZXRfZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg KmZyb21fbmV0X2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkX3QgKnNzaF9w aWQpOwogCiAKIGludCBkY2NfcGlja19ob3N0X2Zyb21fbGlzdF9hbmRfbG9ja19pdChzdHJ1Y3Qg ZGNjX2hvc3RkZWYgKipidWlsZGhvc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 ICpjcHVfbG9ja19mZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmNwdV9sb2Nr X2ZkLCBpbnQgKnRvX25ldF9mZCwgaW50ICpmcm9tX25ldF9mZCwgcGlkX3QgKnNzaF9waWQpCiB7 CiAgICAgc3RydWN0IGRjY19ob3N0ZGVmICpob3N0bGlzdDsKICAgICBpbnQgcmV0OwpAQCAtMTAx LDcgKzExMCw3IEBAIGludCBkY2NfcGlja19ob3N0X2Zyb21fbGlzdF9hbmRfbG9ja19pdCgKICAg ICAgICAgcmV0dXJuIEVYSVRfTk9fSE9TVFM7CiAgICAgfQogCi0gICAgcmV0dXJuIGRjY19sb2Nr X29uZShob3N0bGlzdCwgYnVpbGRob3N0LCBjcHVfbG9ja19mZCk7CisgICAgcmV0dXJuIGRjY19s b2NrX29uZShob3N0bGlzdCwgYnVpbGRob3N0LCBjcHVfbG9ja19mZCwgdG9fbmV0X2ZkLCBmcm9t X25ldF9mZCwgc3NoX3BpZCk7CiAKICAgICAvKiBGSVhNRTogSG9zdCBsaXN0IGlzIGxlYWtlZD8g Ki8KIH0KQEAgLTE0NSwxMSArMTU0LDE1IEBAIHN0YXRpYyB2b2lkIGRjY19sb2NrX3BhdXNlKHZv aWQpCiAgKiovCiBzdGF0aWMgaW50IGRjY19sb2NrX29uZShzdHJ1Y3QgZGNjX2hvc3RkZWYgKmhv c3RsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRjY19ob3N0ZGVmICoqYnVp bGRob3N0LAotICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpjcHVfbG9ja19mZCkKKyAgICAg ICAgICAgICAgICAgICAgICAgIGludCAqY3B1X2xvY2tfZmQsCisgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgKnRvX25ldF9mZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCAqZnJvbV9u ZXRfZmQsCisgICAgICAgICAgICAgICAgICAgICAgICBwaWRfdCAqc3NoX3BpZCkKIHsKICAgICBz dHJ1Y3QgZGNjX2hvc3RkZWYgKmg7CiAgICAgaW50IGlfY3B1OwogICAgIGludCByZXQ7CisgICAg aW50IGRjY19idXN5OwogCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgZm9yIChpX2NwdSA9IDA7 IGlfY3B1IDwgNTA7IGlfY3B1KyspIHsKQEAgLTE2MCw5ICsxNzMsMjUgQEAgc3RhdGljIGludCBk Y2NfbG9ja19vbmUoc3RydWN0IGRjY19ob3N0ZAogICAgICAgICAgICAgICAgIHJldCA9IGRjY19s b2NrX2hvc3QoImNwdSIsIGgsIGlfY3B1LCAwLCBjcHVfbG9ja19mZCk7CiAKICAgICAgICAgICAg ICAgICBpZiAocmV0ID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgKmJ1aWxkaG9zdCA9IGg7 Ci0gICAgICAgICAgICAgICAgICAgIGRjY19ub3RlX3N0YXRlX3Nsb3QoaV9jcHUsIHN0cmNtcCho LT5ob3N0bmFtZSwgImxvY2FsaG9zdCIpID09IDAgPyBEQ0NfTE9DQUwgOiBEQ0NfUkVNT1RFKTsK LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgICAgIC8vcnNf bG9nX3dhcm5pbmcoImxvY2FsIGxvY2sgZG9uZSIpOworICAgICAgICAgICAgICAgICAgICAvL3Rh c3psdWssIG1ha2UgY29ubmV0aW9uIHdoaWxlIGxvY2FsIGxvY2sKKyAgICAgICAgICAgICAgICAg ICAgLy9pZiBob3N0IHdpbGwgYmUgYnVzeSwgbGV0J3MgdHJ5IG90aGVyIG9uZQorICAgICAgICAg ICAgICAgICAgICBpZiAoc3RyY21wKGgtPmhvc3RuYW1lLCAibG9jYWxob3N0IikgPT0gMCkgewor ICAgICAgICAgICAgICAgICAgICAgICAgZGNjX2J1c3k9MDsKKyAgICAgICAgICAgICAgICAgICAg fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJzX2xvZ19pbmZvKCJsb2NraW5nIHJl bW90ZSBob3N0ICclcycgIiwgaC0+aG9zdG5hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAg ZGNjX2J1c3kgPSBkY2NfcmVtb3RlX2Nvbm5lY3QoaCwgdG9fbmV0X2ZkLCBmcm9tX25ldF9mZCwg c3NoX3BpZCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYg KGRjY19idXN5ICE9IDAgKSB7CisgICAgICAgICAgICAgICAgICAgICAgIHJzX2xvZ19lcnJvcigi bG9ja2luZyByZW1vdGUgaG9zdCAnJXMnIGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgJyVkJyIsIGgt Pmhvc3RuYW1lLCBkY2NfYnVzeSk7CisgICAgICAgICAgICAgICAgICAgICAgIGRjY191bmxvY2so KmNwdV9sb2NrX2ZkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvL3JzX2xvZ193 YXJuaW5nKCJsb2NraW5nIHJlbW90ZSBob3N0ICclcycgc3VjY2VzcyEiLCBoLT5ob3N0bmFtZSk7 CisgICAgICAgICAgICAgICAgICAgICAgICAqYnVpbGRob3N0ID0gaDsKKyAgICAgICAgICAgICAg ICAgICAgICAgIGRjY19ub3RlX3N0YXRlX3Nsb3QoaV9jcHUsIHN0cmNtcChoLT5ob3N0bmFtZSwg ImxvY2FsaG9zdCIpID09IDAgPyBEQ0NfTE9DQUwgOiBEQ0NfUkVNT1RFKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg ICAgICAgfSBlbHNlIGlmIChyZXQgPT0gRVhJVF9CVVNZKSB7CiAgICAgICAgICAgICAgICAgICAg IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0xODYsMTQgKzIxNSw0NSBA QCBpbnQgZGNjX2xvY2tfbG9jYWwoaW50ICpjcHVfbG9ja19mZCkKIHsKICAgICBzdHJ1Y3QgZGNj X2hvc3RkZWYgKmNob3NlbjsKIAotICAgIHJldHVybiBkY2NfbG9ja19vbmUoZGNjX2hvc3RkZWZf bG9jYWwsICZjaG9zZW4sIGNwdV9sb2NrX2ZkKTsKKyAgICByZXR1cm4gZGNjX2xvY2tfb25lKGRj Y19ob3N0ZGVmX2xvY2FsLCAmY2hvc2VuLCBjcHVfbG9ja19mZCwgTlVMTCwgTlVMTCwgTlVMTCk7 CiB9CiAKIGludCBkY2NfbG9ja19sb2NhbF9jcHAoaW50ICpjcHVfbG9ja19mZCkKIHsKICAgICBp bnQgcmV0OwogICAgIHN0cnVjdCBkY2NfaG9zdGRlZiAqY2hvc2VuOwotICAgIHJldCA9IGRjY19s b2NrX29uZShkY2NfaG9zdGRlZl9sb2NhbF9jcHAsICZjaG9zZW4sIGNwdV9sb2NrX2ZkKTsKKyAg ICByZXQgPSBkY2NfbG9ja19vbmUoZGNjX2hvc3RkZWZfbG9jYWxfY3BwLCAmY2hvc2VuLCBjcHVf bG9ja19mZCwgTlVMTCwgTlVMTCwgTlVMTCk7CiAgICAgZGNjX25vdGVfc3RhdGUoRENDX1BIQVNF X0NQUCwgTlVMTCwgY2hvc2VuLT5ob3N0bmFtZSwgRENDX0xPQ0FMKTsKICAgICByZXR1cm4gcmV0 OwogfQorCisvKioKKyAqICAqIE9wZW4gYSBjb25uZWN0aW9uIHVzaW5nIGVpdGhlciBhIFRDUCBz b2NrZXQgb3IgU1NILiAgUmV0dXJuIGlucHV0CisgKiAgICogYW5kIG91dHB1dCBmaWxlIGRlc2Ny aXB0b3JzICh3aGljaCBtYXkgb3IgbWF5IG5vdCBiZSBkaWZmZXJlbnQuKQorICogICAgKiovCitz dGF0aWMgaW50IGRjY19yZW1vdGVfY29ubmVjdChzdHJ1Y3QgZGNjX2hvc3RkZWYgKmhvc3QsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnRvX25ldF9mZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCAqZnJvbV9uZXRfZmQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwaWRfdCAqc3NoX3BpZCkKK3sKKyAgICBpbnQgcmV0OworCisgICAgaWYgKGhv c3QtPm1vZGUgPT0gRENDX01PREVfVENQKSB7CisgICAgICAgICpzc2hfcGlkID0gMDsKKyAgICAg ICAgaWYgKChyZXQgPSBkY2NfY29ubmVjdF9ieV9uYW1lKGhvc3QtPmhvc3RuYW1lLCBob3N0LT5w b3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9fbmV0X2ZkKSkg IT0gMCkKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgICpmcm9tX25ldF9mZCA9ICp0 b19uZXRfZmQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0gZWxzZSBpZiAoaG9zdC0+bW9kZSA9 PSBEQ0NfTU9ERV9TU0gpIHsKKyAgICAgICAgaWYgKChyZXQgPSBkY2Nfc3NoX2Nvbm5lY3QoTlVM TCwgaG9zdC0+dXNlciwgaG9zdC0+aG9zdG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGhvc3QtPnNzaF9jb21tYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmcm9tX25ldF9mZCwgdG9fbmV0X2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzc2hfcGlkKSkpCisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICBy ZXR1cm4gMDsKKyAgICB9IGVsc2UgeworICAgICAgICByc19sb2dfY3JpdCgiaW1wb3NzaWJsZSBo b3N0IG1vZGUiKTsKKyAgICAgICAgcmV0dXJuIEVYSVRfRElTVENDX0ZBSUxFRDsKKyAgICB9Cit9 CmRpZmYgLS1leGNsdWRlPS5zdm4gLXJ1cE4gZGlzdGNjLTMuMi1hcmFua2luZS9zcmMvd2hlcmUu aCBkaXN0Y2MtMy4ycmMyX25ldy9zcmMvd2hlcmUuaAotLS0gZGlzdGNjLTMuMi1hcmFua2luZS9z cmMvd2hlcmUuaAkyMDE0LTA5LTA0IDExOjQ0OjQxLjAwMDAwMDAwMCArMDIwMAorKysgZGlzdGNj LTMuMnJjMl9uZXcvc3JjL3doZXJlLmgJMjAxNC0xMC0xNiAxNDowMToxMC44NTgyNjYzMTEgKzAy MDAKQEAgLTIyLDggKzIyLDggQEAKICAqLwogCiAvKiB3aGVyZS5jICovCi1pbnQgZGNjX3BpY2tf aG9zdF9mcm9tX2xpc3RfYW5kX2xvY2tfaXQoc3RydWN0IGRjY19ob3N0ZGVmICoqLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqY3B1X2xvY2tfZmQpOworaW50 IGRjY19waWNrX2hvc3RfZnJvbV9saXN0X2FuZF9sb2NrX2l0KHN0cnVjdCBkY2NfaG9zdGRlZiAq KmJ1aWxkaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmNwdV9sb2NrX2Zk LCBpbnQgKnRvX25ldF9mZCwgaW50ICpmcm9tX25ldF9mZCwgcGlkX3QgKnNzaF9waWQpOwogCiBp bnQgZGNjX2xvY2tfbG9jYWwoaW50ICpjcHVfbG9ja19mZCk7CiAK --001a113481e4e3f231050626f4ab Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline __ distcc mailing list http://distcc.samba.org/ To unsubscribe or change options: https://lists.samba.org/mailman/listinfo/distcc --001a113481e4e3f231050626f4ab--