--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/fwSFpA1KkkrJfISl
-----END PGP SIGNATURE-----

--i8TMpBT/Gu++Y25XqSj--