-- i8TMpBT/Gu++Y25XqSj Content-Type: multipart/mixed; boundary="=-1m3cSpLQ8LIOq5tLuKAC" --m3cSpLQ8LIOq5tLuKAC Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On Fri, 2007-01-12 at 05:37 +0900, Young Hyun wrote: > On Jan 10, 2007, at 1:39 PM, MenTaLguY wrote: > > I've given up trying to build Ruby with dmalloc support now that I've > learned that MacOS X has built-in support for dmalloc-like memory > debugging. Have you gotten any useful reports from the memory debugging facility? > I don't get these crashes if I run my program without fastthread > (but my program can't run for long periods of time without fastthread > because of a serious memory leak, so I can't say with 100% certainty > that these crashes don't happen without fastthread). Try replacing your stdlib's thread.rb with the attached, modified version which may mitigate the memory leak somewhat (though it won't offer fastthread's performance). I'd like to be sure that the crash doesn't happen without fastthread. Assuming it's a fastthread issue, I'm a little suspicious of Queues. Where and how does your code use them? If we can narrow it down to a specific class, then it is easier to derive a simple test case. -mental --m3cSpLQ8LIOq5tLuKAC Content-Disposition: attachment; filename=thread.rb Content-Type: application/x-ruby; name=thread.rb Content-Transfer-Encoding: base64 IwojCQl0aHJlYWQucmIgLSB0aHJlYWQgc3VwcG9ydCBjbGFzc2VzCiMJCQkkRGF0ZTogMjAwNS8w Ni8wNyAwOTo0MToxNyAkCiMJCQlieSBZdWtpaGlybyBNYXRzdW1vdG8gPG1hdHpAbmV0bGFiLmNv LmpwPgojCiMgQ29weXJpZ2h0IChDKSAyMDAxICBZdWtpaGlybyBNYXRzdW1vdG8KIyBDb3B5cmln aHQgKEMpIDIwMDAgIE5ldHdvcmsgQXBwbGllZCBDb21tdW5pY2F0aW9uIExhYm9yYXRvcnksIElu Yy4KIyBDb3B5cmlnaHQgKEMpIDIwMDAgIEluZm9ybWF0aW9uLXRlY2hub2xvZ3kgUHJvbW90aW9u IEFnZW5jeSwgSmFwYW4KIwoKdW5sZXNzIGRlZmluZWQ/IFRocmVhZAogIGZhaWwgIlRocmVhZCBu b3QgYXZhaWxhYmxlIGZvciB0aGlzIHJ1YnkgaW50ZXJwcmV0ZXIiCmVuZAoKdW5sZXNzIGRlZmlu ZWQ/IFRocmVhZEVycm9yCiAgY2xhc3MgVGhyZWFkRXJyb3I8U3RhbmRhcmRFcnJvcgogIGVuZApl bmQKCmlmICRERUJVRwogIFRocmVhZC5hYm9ydF9vbl9leGNlcHRpb24gPSB0cnVlCmVuZAoKY2xh c3MgVGhyZWFkCiAgIwogICMgV3JhcHMgYSBibG9jayBpbiBUaHJlYWQuY3JpdGljYWwsIHJlc3Rv cmluZyB0aGUgb3JpZ2luYWwgdmFsdWUgdXBvbiBleGl0CiAgIyBmcm9tIHRoZSBjcml0aWNhbCBz ZWN0aW9uLgogICMKICBkZWYgVGhyZWFkLmV4Y2x1c2l2ZQogICAgX29sZCA9IFRocmVhZC5jcml0 aWNhbAogICAgYmVnaW4KICAgICAgVGhyZWFkLmNyaXRpY2FsID0gdHJ1ZQogICAgICByZXR1cm4g eWllbGQKICAgIGVuc3VyZQogICAgICBUaHJlYWQuY3JpdGljYWwgPSBfb2xkCiAgICBlbmQKICBl bmQKZW5kCgojCiMgTXV0ZXggaW1wbGVtZW50cyBhIHNpbXBsZSBzZW1hcGhvcmUgdGhhdCBjYW4g YmUgdXNlZCB0byBjb29yZGluYXRlIGFjY2VzcyB0bwojIHNoYXJlZCBkYXRhIGZyb20gbXVsdGlw bGUgY29uY3VycmVudCB0aHJlYWRzLgojCiMgRXhhbXBsZToKIwojICAgcmVxdWlyZSAndGhyZWFk JwojICAgc2VtYXBob3JlID0gTXV0ZXgubmV3CiMgICAKIyAgIGEgPSBUaHJlYWQubmV3IHsKIyAg ICAgc2VtYXBob3JlLnN5bmNocm9uaXplIHsKIyAgICAgICAjIGFjY2VzcyBzaGFyZWQgcmVzb3Vy Y2UKIyAgICAgfQojICAgfQojICAgCiMgICBiID0gVGhyZWFkLm5ldyB7CiMgICAgIHNlbWFwaG9y ZS5zeW5jaHJvbml6ZSB7CiMgICAgICAgIyBhY2Nlc3Mgc2hhcmVkIHJlc291cmNlCiMgICAgIH0K IyAgIH0KIwpjbGFzcyBNdXRleAogICMKICAjIENyZWF0ZXMgYSBuZXcgTXV0ZXgKICAjCiAgZGVm IGluaXRpYWxpemUKICAgIEB3YWl0aW5nID0gW10KICAgIEBsb2NrZWQgPSBmYWxzZTsKICAgIEB3 YWl0aW5nLnRhaW50CQkjIGVuYWJsZSB0YWludGVkIGNvbXVuaWNhdGlvbgogICAgc2VsZi50YWlu dAogIGVuZAoKICAjCiAgIyBSZXR1cm5zICt0cnVlKyBpZiB0aGlzIGxvY2sgaXMgY3VycmVudGx5 IGhlbGQgYnkgc29tZSB0aHJlYWQuCiAgIwogIGRlZiBsb2NrZWQ/CiAgICBAbG9ja2VkCiAgZW5k CgogICMKICAjIEF0dGVtcHRzIHRvIG9idGFpbiB0aGUgbG9jayBhbmQgcmV0dXJucyBpbW1lZGlh dGVseS4gUmV0dXJucyArdHJ1ZSsgaWYgdGhlCiAgIyBsb2NrIHdhcyBncmFudGVkLgogICMKICBk ZWYgdHJ5X2xvY2sKICAgIHJlc3VsdCA9IGZhbHNlCiAgICBUaHJlYWQuY3JpdGljYWwgPSB0cnVl CiAgICB1bmxlc3MgQGxvY2tlZAogICAgICBAbG9ja2VkID0gdHJ1ZQogICAgICByZXN1bHQgPSB0 cnVlCiAgICBlbmQKICAgIFRocmVhZC5jcml0aWNhbCA9IGZhbHNlCiAgICByZXN1bHQKICBlbmQK CiAgIwogICMgQXR0ZW1wdHMgdG8gZ3JhYiB0aGUgbG9jayBhbmQgd2FpdHMgaWYgaXQgaXNuJ3Qg YXZhaWxhYmxlLgogICMKICBkZWYgbG9jawogICAgd2hpbGUgKFRocmVhZC5jcml0aWNhbCA9IHRy dWU7IEBsb2NrZWQpCiAgICAgIEB3YWl0aW5nLnVuc2hpZnQgVGhyZWFkLmN1cnJlbnQKICAgICAg VGhyZWFkLnN0b3AKICAgIGVuZAogICAgQGxvY2tlZCA9IHRydWUKICAgIFRocmVhZC5jcml0aWNh bCA9IGZhbHNlCiAgICBzZWxmCiAgZW5kCgogICMKICAjIFJlbGVhc2VzIHRoZSBsb2NrLiBSZXR1 cm5zICtuaWwrIGlmIHJlZiB3YXNuJ3QgbG9ja2VkLgogICMKICBkZWYgdW5sb2NrCiAgICByZXR1 cm4gdW5sZXNzIEBsb2NrZWQKICAgIFRocmVhZC5jcml0aWNhbCA9IHRydWUKICAgIEBsb2NrZWQg PSBmYWxzZQogICAgYmVnaW4KICAgICAgdCA9IEB3YWl0aW5nLnBvcAogICAgICB0Lndha2V1cCBp ZiB0CiAgICByZXNjdWUgVGhyZWFkRXJyb3IKICAgICAgcmV0cnkKICAgIGVuZAogICAgVGhyZWFk LmNyaXRpY2FsID0gZmFsc2UKICAgIGJlZ2luCiAgICAgIHQucnVuIGlmIHQKICAgIHJlc2N1ZSBU aHJlYWRFcnJvcgogICAgZW5kCiAgICBzZWxmCiAgZW5kCgogICMKICAjIE9idGFpbnMgYSBsb2Nr LCBydW5zIHRoZSBibG9jaywgYW5kIHJlbGVhc2VzIHRoZSBsb2NrIHdoZW4gdGhlIGJsb2NrCiAg IyBjb21wbGV0ZXMuICBTZWUgdGhlIGV4YW1wbGUgdW5kZXIgTXV0ZXguCiAgIwogIGRlZiBzeW5j aHJvbml6ZQogICAgbG9jawogICAgYmVnaW4KICAgICAgeWllbGQKICAgIGVuc3VyZQogICAgICB1 bmxvY2sKICAgIGVuZAogIGVuZAoKICAjCiAgIyBJZiB0aGUgbXV0ZXggaXMgbG9ja2VkLCB1bmxv Y2tzIHRoZSBtdXRleCwgd2FrZXMgb25lIHdhaXRpbmcgdGhyZWFkLCBhbmQKICAjIHlpZWxkcyBp biBhIGNyaXRpY2FsIHNlY3Rpb24uCiAgIwogIGRlZiBleGNsdXNpdmVfdW5sb2NrCiAgICByZXR1 cm4gdW5sZXNzIEBsb2NrZWQKICAgIFRocmVhZC5leGNsdXNpdmUgZG8KICAgICAgQGxvY2tlZCA9 IGZhbHNlCiAgICAgIGJlZ2luCgl0ID0gQHdhaXRpbmcucG9wCgl0Lndha2V1cCBpZiB0CiAgICAg IHJlc2N1ZSBUaHJlYWRFcnJvcgoJcmV0cnkKICAgICAgZW5kCiAgICAgIHlpZWxkCiAgICBlbmQK ICAgIHNlbGYKICBlbmQKZW5kCgojIAojIENvbmRpdGlvblZhcmlhYmxlIG9iamVjdHMgYXVnbWVu dCBjbGFzcyBNdXRleC4gVXNpbmcgY29uZGl0aW9uIHZhcmlhYmxlcywKIyBpdCBpcyBwb3NzaWJs ZSB0byBzdXNwZW5kIHdoaWxlIGluIHRoZSBtaWRkbGUgb2YgYSBjcml0aWNhbCBzZWN0aW9uIHVu dGlsIGEKIyByZXNvdXJjZSBiZWNvbWVzIGF2YWlsYWJsZS4KIwojIEV4YW1wbGU6CiMKIyAgIHJl cXVpcmUgJ3RocmVhZCcKIwojICAgbXV0ZXggPSBNdXRleC5uZXcKIyAgIHJlc291cmNlID0gQ29u ZGl0aW9uVmFyaWFibGUubmV3CiMgICAKIyAgIGEgPSBUaHJlYWQubmV3IHsKIyAgICAgbXV0ZXgu c3luY2hyb25pemUgewojICAgICAgICMgVGhyZWFkICdhJyBub3cgbmVlZHMgdGhlIHJlc291cmNl CiMgICAgICAgcmVzb3VyY2Uud2FpdChtdXRleCkKIyAgICAgICAjICdhJyBjYW4gbm93IGhhdmUg dGhlIHJlc291cmNlCiMgICAgIH0KIyAgIH0KIyAgIAojICAgYiA9IFRocmVhZC5uZXcgewojICAg ICBtdXRleC5zeW5jaHJvbml6ZSB7CiMgICAgICAgIyBUaHJlYWQgJ2InIGhhcyBmaW5pc2hlZCB1 c2luZyB0aGUgcmVzb3VyY2UKIyAgICAgICByZXNvdXJjZS5zaWduYWwKIyAgICAgfQojICAgfQoj CmNsYXNzIENvbmRpdGlvblZhcmlhYmxlCiAgIwogICMgQ3JlYXRlcyBhIG5ldyBDb25kaXRpb25W YXJpYWJsZQogICMKICBkZWYgaW5pdGlhbGl6ZQogICAgQHdhaXRlcnMgPSBbXQogIGVuZAogIAog ICMKICAjIFJlbGVhc2VzIHRoZSBsb2NrIGhlbGQgaW4gK211dGV4KyBhbmQgd2FpdHM7IHJlYWNx dWlyZXMgdGhlIGxvY2sgb24gd2FrZXVwLgogICMKICBkZWYgd2FpdChtdXRleCkKICAgIGJlZ2lu CiAgICAgIG11dGV4LmV4Y2x1c2l2ZV91bmxvY2sgZG8KICAgICAgICBAd2FpdGVycy51bnNoaWZ0 KFRocmVhZC5jdXJyZW50KQogICAgICAgIFRocmVhZC5zdG9wCiAgICAgIGVuZAogICAgZW5zdXJl CiAgICAgIG11dGV4LmxvY2sKICAgIGVuZAogIGVuZAogIAogICMKICAjIFdha2VzIHVwIHRoZSBm aXJzdCB0aHJlYWQgaW4gbGluZSB3YWl0aW5nIGZvciB0aGlzIGxvY2suCiAgIwogIGRlZiBzaWdu YWwKICAgIGJlZ2luCiAgICAgIHQgPSBAd2FpdGVycy5wb3AKICAgICAgdC5ydW4gaWYgdAogICAg cmVzY3VlIFRocmVhZEVycm9yCiAgICAgIHJldHJ5CiAgICBlbmQKICBlbmQKICAgIAogICMKICAj IFdha2VzIHVwIGFsbCB0aHJlYWRzIHdhaXRpbmcgZm9yIHRoaXMgbG9jay4KICAjCiAgZGVmIGJy b2FkY2FzdAogICAgd2FpdGVyczAgPSBuaWwKICAgIFRocmVhZC5leGNsdXNpdmUgZG8KICAgICAg d2FpdGVyczAgPSBAd2FpdGVycy5kdXAKICAgICAgQHdhaXRlcnMuY2xlYXIKICAgIGVuZAogICAg Zm9yIHQgaW4gd2FpdGVyczAKICAgICAgYmVnaW4KCXQucnVuCiAgICAgIHJlc2N1ZSBUaHJlYWRF cnJvcgogICAgICBlbmQKICAgIGVuZAogIGVuZAplbmQKCiMKIyBUaGlzIGNsYXNzIHByb3ZpZGVz IGEgd2F5IHRvIHN5bmNocm9uaXplIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aHJlYWRzLgojCiMg RXhhbXBsZToKIwojICAgcmVxdWlyZSAndGhyZWFkJwojICAgCiMgICBxdWV1ZSA9IFF1ZXVlLm5l dwojICAgCiMgICBwcm9kdWNlciA9IFRocmVhZC5uZXcgZG8KIyAgICAgNS50aW1lcyBkbyB8aXwK IyAgICAgICBzbGVlcCByYW5kKGkpICMgc2ltdWxhdGUgZXhwZW5zZQojICAgICAgIHF1ZXVlIDw8 IGkKIyAgICAgICBwdXRzICIje2l9IHByb2R1Y2VkIgojICAgICBlbmQKIyAgIGVuZAojICAgCiMg ICBjb25zdW1lciA9IFRocmVhZC5uZXcgZG8KIyAgICAgNS50aW1lcyBkbyB8aXwKIyAgICAgICB2 YWx1ZSA9IHF1ZXVlLnBvcAojICAgICAgIHNsZWVwIHJhbmQoaS8yKSAjIHNpbXVsYXRlIGV4cGVu c2UKIyAgICAgICBwdXRzICJjb25zdW1lZCAje3ZhbHVlfSIKIyAgICAgZW5kCiMgICBlbmQKIyAg IAojICAgY29uc3VtZXIuam9pbgojCmNsYXNzIFF1ZXVlCiAgIwogICMgQ3JlYXRlcyBhIG5ldyBx dWV1ZS4KICAjCiAgZGVmIGluaXRpYWxpemUKICAgIEBxdWUgPSBbXQogICAgQHdhaXRpbmcgPSBb XQogICAgQHF1ZS50YWludAkJIyBlbmFibGUgdGFpbnRlZCBjb211bmljYXRpb24KICAgIEB3YWl0 aW5nLnRhaW50CiAgICBzZWxmLnRhaW50CiAgZW5kCgogICMKICAjIFB1c2hlcyArb2JqKyB0byB0 aGUgcXVldWUuCiAgIwogIGRlZiBwdXNoKG9iaikKICAgIFRocmVhZC5jcml0aWNhbCA9IHRydWUK ICAgIEBxdWUudW5zaGlmdCBvYmoKICAgIGJlZ2luCiAgICAgIHQgPSBAd2FpdGluZy5wb3AKICAg ICAgdC53YWtldXAgaWYgdAogICAgcmVzY3VlIFRocmVhZEVycm9yCiAgICAgIHJldHJ5CiAgICBl bnN1cmUKICAgICAgVGhyZWFkLmNyaXRpY2FsID0gZmFsc2UKICAgIGVuZAogICAgYmVnaW4KICAg ICAgdC5ydW4gaWYgdAogICAgcmVzY3VlIFRocmVhZEVycm9yCiAgICBlbmQKICBlbmQKCiAgIwog ICMgQWxpYXMgb2YgcHVzaAogICMKICBhbGlhcyA8PCBwdXNoCgogICMKICAjIEFsaWFzIG9mIHB1 c2gKICAjCiAgYWxpYXMgZW5xIHB1c2gKCiAgIwogICMgUmV0cmlldmVzIGRhdGEgZnJvbSB0aGUg cXVldWUuICBJZiB0aGUgcXVldWUgaXMgZW1wdHksIHRoZSBjYWxsaW5nIHRocmVhZCBpcwogICMg c3VzcGVuZGVkIHVudGlsIGRhdGEgaXMgcHVzaGVkIG9udG8gdGhlIHF1ZXVlLiAgSWYgK25vbl9i bG9jaysgaXMgdHJ1ZSwgdGhlCiAgIyB0aHJlYWQgaXNuJ3Qgc3VzcGVuZGVkLCBhbmQgYW4gZXhj ZXB0aW9uIGlzIHJhaXNlZC4KICAjCiAgZGVmIHBvcChub25fYmxvY2s9ZmFsc2UpCiAgICB3aGls ZSAoVGhyZWFkLmNyaXRpY2FsID0gdHJ1ZTsgQHF1ZS5lbXB0eT8pCiAgICAgIHJhaXNlIFRocmVh ZEVycm9yLCAicXVldWUgZW1wdHkiIGlmIG5vbl9ibG9jawogICAgICBAd2FpdGluZy51bnNoaWZ0 IFRocmVhZC5jdXJyZW50CiAgICAgIFRocmVhZC5zdG9wCiAgICBlbmQKICAgIEBxdWUucG9wCiAg ZW5zdXJlCiAgICBUaHJlYWQuY3JpdGljYWwgPSBmYWxzZQogIGVuZAoKICAjCiAgIyBBbGlhcyBv ZiBwb3AKICAjCiAgYWxpYXMgc2hpZnQgcG9wCgogICMKICAjIEFsaWFzIG9mIHBvcAogICMKICBh bGlhcyBkZXEgcG9wCgogICMKICAjIFJldHVybnMgK3RydWUrIGlzIHRoZSBxdWV1ZSBpcyBlbXB0 eS4KICAjCiAgZGVmIGVtcHR5PwogICAgQHF1ZS5lbXB0eT8KICBlbmQKCiAgIwogICMgUmVtb3Zl cyBhbGwgb2JqZWN0cyBmcm9tIHRoZSBxdWV1ZS4KICAjCiAgZGVmIGNsZWFyCiAgICBAcXVlLmNs ZWFyCiAgZW5kCgogICMKICAjIFJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgcXVldWUuCiAgIwog IGRlZiBsZW5ndGgKICAgIEBxdWUubGVuZ3RoCiAgZW5kCgogICMKICAjIEFsaWFzIG9mIGxlbmd0 aC4KICAjCiAgYWxpYXMgc2l6ZSBsZW5ndGgKCiAgIwogICMgUmV0dXJucyB0aGUgbnVtYmVyIG9m IHRocmVhZHMgd2FpdGluZyBvbiB0aGUgcXVldWUuCiAgIwogIGRlZiBudW1fd2FpdGluZwogICAg QHdhaXRpbmcuc2l6ZQogIGVuZAplbmQKCiMKIyBUaGlzIGNsYXNzIHJlcHJlc2VudHMgcXVldWVz IG9mIHNwZWNpZmllZCBzaXplIGNhcGFjaXR5LiAgVGhlIHB1c2ggb3BlcmF0aW9uCiMgbWF5IGJl IGJsb2NrZWQgaWYgdGhlIGNhcGFjaXR5IGlzIGZ1bGwuCiMKIyBTZWUgUXVldWUgZm9yIGFuIGV4 YW1wbGUgb2YgaG93IGEgU2l6ZWRRdWV1ZSB3b3Jrcy4KIwpjbGFzcyBTaXplZFF1ZXVlPFF1ZXVl CiAgIwogICMgQ3JlYXRlcyBhIGZpeGVkLWxlbmd0aCBxdWV1ZSB3aXRoIGEgbWF4aW11bSBzaXpl IG9mICttYXgrLgogICMKICBkZWYgaW5pdGlhbGl6ZShtYXgpCiAgICByYWlzZSBBcmd1bWVudEVy cm9yLCAicXVldWUgc2l6ZSBtdXN0IGJlIHBvc2l0aXZlIiB1bmxlc3MgbWF4ID4gMAogICAgQG1h eCA9IG1heAogICAgQHF1ZXVlX3dhaXQgPSBbXQogICAgQHF1ZXVlX3dhaXQudGFpbnQJCSMgZW5h YmxlIHRhaW50ZWQgY29tdW5pY2F0aW9uCiAgICBzdXBlcigpCiAgZW5kCgogICMKICAjIFJldHVy bnMgdGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgcXVldWUuCiAgIwogIGRlZiBtYXgKICAgIEBtYXgK ICBlbmQKCiAgIwogICMgU2V0cyB0aGUgbWF4aW11bSBzaXplIG9mIHRoZSBxdWV1ZS4KICAjCiAg ZGVmIG1heD0obWF4KQogICAgVGhyZWFkLmNyaXRpY2FsID0gdHJ1ZQogICAgaWYgbWF4IDw9IEBt YXgKICAgICAgQG1heCA9IG1heAogICAgICBUaHJlYWQuY3JpdGljYWwgPSBmYWxzZQogICAgZWxz ZQogICAgICBkaWZmID0gbWF4IC0gQG1heAogICAgICBAbWF4ID0gbWF4CiAgICAgIFRocmVhZC5j cml0aWNhbCA9IGZhbHNlCiAgICAgIGRpZmYudGltZXMgZG8KCWJlZ2luCgkgIHQgPSBAcXVldWVf d2FpdC5wb3AKCSAgdC5ydW4gaWYgdAoJcmVzY3VlIFRocmVhZEVycm9yCgkgIHJldHJ5CgllbmQK ICAgICAgZW5kCiAgICBlbmQKICAgIG1heAogIGVuZAoKICAjCiAgIyBQdXNoZXMgK29iaisgdG8g dGhlIHF1ZXVlLiAgSWYgdGhlcmUgaXMgbm8gc3BhY2UgbGVmdCBpbiB0aGUgcXVldWUsIHdhaXRz CiAgIyB1bnRpbCBzcGFjZSBiZWNvbWVzIGF2YWlsYWJsZS4KICAjCiAgZGVmIHB1c2gob2JqKQog ICAgVGhyZWFkLmNyaXRpY2FsID0gdHJ1ZQogICAgd2hpbGUgQHF1ZS5sZW5ndGggPj0gQG1heAog ICAgICBAcXVldWVfd2FpdC51bnNoaWZ0IFRocmVhZC5jdXJyZW50CiAgICAgIFRocmVhZC5zdG9w CiAgICAgIFRocmVhZC5jcml0aWNhbCA9IHRydWUKICAgIGVuZAogICAgc3VwZXIKICBlbmQKCiAg IwogICMgQWxpYXMgb2YgcHVzaAogICMKICBhbGlhcyA8PCBwdXNoCgogICMKICAjIEFsaWFzIG9m IHB1c2gKICAjCiAgYWxpYXMgZW5xIHB1c2gKCiAgIwogICMgUmV0cmlldmVzIGRhdGEgZnJvbSB0 aGUgcXVldWUgYW5kIHJ1bnMgYSB3YWl0aW5nIHRocmVhZCwgaWYgYW55LgogICMKICBkZWYgcG9w KCphcmdzKQogICAgcmV0dmFsID0gc3VwZXIKICAgIFRocmVhZC5jcml0aWNhbCA9IHRydWUKICAg IGlmIEBxdWUubGVuZ3RoIDwgQG1heAogICAgICBiZWdpbgoJdCA9IEBxdWV1ZV93YWl0LnBvcAoJ dC53YWtldXAgaWYgdAogICAgICByZXNjdWUgVGhyZWFkRXJyb3IKCXJldHJ5CiAgICAgIGVuc3Vy ZQoJVGhyZWFkLmNyaXRpY2FsID0gZmFsc2UKICAgICAgZW5kCiAgICAgIGJlZ2luCgl0LnJ1biBp ZiB0CiAgICAgIHJlc2N1ZSBUaHJlYWRFcnJvcgogICAgICBlbmQKICAgIGVuZAogICAgcmV0dmFs CiAgZW5kCgogICMKICAjIEFsaWFzIG9mIHBvcAogICMKICBhbGlhcyBzaGlmdCBwb3AKCiAgIwog ICMgQWxpYXMgb2YgcG9wCiAgIwogIGFsaWFzIGRlcSBwb3AKCiAgIwogICMgUmV0dXJucyB0aGUg bnVtYmVyIG9mIHRocmVhZHMgd2FpdGluZyBvbiB0aGUgcXVldWUuCiAgIwogIGRlZiBudW1fd2Fp dGluZwogICAgQHdhaXRpbmcuc2l6ZSArIEBxdWV1ZV93YWl0LnNpemUKICBlbmQKZW5kCgojIERv Y3VtZW50YXRpb24gY29tbWVudHM6CiMgIC0gSG93IGRvIHlvdSBtYWtlIFJEb2MgaW5oZXJpdCBk b2N1bWVudGF0aW9uIGZyb20gc3VwZXJjbGFzcz8K --m3cSpLQ8LIOq5tLuKAC-- -- i8TMpBT/Gu++Y25XqSj Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.3 (GNU/Linux) iD8DBQBFqBqeSuZBmZzm14ERAmZ/AJ0V1kTxGVn2ivjt7SGApyMAf+10RQCgsc8U AfO5FaXT/fwSFpA1KkkrJfI Sl -----END PGP SIGNATURE----- -- i8TMpBT/Gu++Y25XqSj--