Bug #3880: Ruby 1.9.1 - crash in timeout.rb
http://redmine.ruby-lang.org/issues/show/3880

Author: Elvita Lobo
Status: Open, Priority: High
Category: core, Target version: 1.9.1
ruby -v: ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-mingw32]

I am using the serialport 1.0.4 Ruby gem. In my serial port connection co=
de, I have the following piece of code [1] that causes Ruby to crash from=
 time to time.

[1] In serial_equipment_connection.rb
  23     status =3D Timeout::timeout(timeout) {
  24         while (!listener.match) =

  25             sleep 0.5
  26         end
  27     }

ruby =E2=80=93v
ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-mingw32]

I am running on a Windows XP SP 3 machine. =


I have attached the two related files - serial_equipment_connection.rb, e=
quipment_connection.rb, and the crash log. =


[2] Crash log (file attached)

MXP>(eval):2: [BUG] The handle is invalid.

ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-mingw32]

-- control frame ----------
c:0044 p:0054 s:0226 b:0226 l:000225 d:000225 METHOD c:/Ruby191/lib/ruby/=
1.9.1/monitor.rb:178
c:0043 p:---- s:0232 b:0232 l:000231 d:000231 CFUNC  :to_i
c:0042 p:---- s:0235 b:0235 l:000234 d:000234 CFUNC  :instance_variable_s=
et
c:0041 p:0098 s:0230 b:0230 l:000229 d:000229 METHOD c:/Ruby191/lib/ruby/=
gems/1.9.1/gems/activesuppo
rt-2.3.8/lib/active_support/core_ext/class/inheritable_attributes.rb:135
c:0040 p:---- s:0226 b:0226 l:000225 d:000225 CFUNC  :index
c:0039 p:---- s:0223 b:0223 l:000222 d:000222 CFUNC  :sleep
c:0038 p:0019 s:0219 b:0219 l:001a24 d:000218 BLOCK  C:/VATF_source/targe=
t/serial_equipment_connecti
on.rb:25
c:0037 p:0109 s:0217 b:0217 l:002698 d:002698 METHOD c:/Ruby191/lib/ruby/=
1.9.1/timeout.rb:52
c:0036 p:0153 s:0205 b:0205 l:001a24 d:001a24 METHOD C:/VATF_source/targe=
t/serial_equipment_connecti
on.rb:23
c:0035 p:0014 s:0194 b:0194 l:000193 d:000193 METHOD C:/VATF_source/targe=
t/equipment_connection.rb:5
4


----------------------------------------
http://redmine.ruby-lang.org
TVhQPihldmFsKToyOiBbQlVHXSBUaGUgaGFuZGxlIGlzIGludmFsaWQuDQoN
CnJ1YnkgMS45LjFwMzc4ICgyMDEwLTAxLTEwIHJldmlzaW9uIDI2MjczKSBb
aTM4Ni1taW5ndzMyXQ0KDQotLSBjb250cm9sIGZyYW1lIC0tLS0tLS0tLS0N
CmM6MDA0NCBwOjAwNTQgczowMjI2IGI6MDIyNiBsOjAwMDIyNSBkOjAwMDIy
NSBNRVRIT0QgYzovUnVieTE5MS9saWIvcnVieS8xLjkuMS9tb25pdG9yLnJi
OjE3OA0KYzowMDQzIHA6LS0tLSBzOjAyMzIgYjowMjMyIGw6MDAwMjMxIGQ6
MDAwMjMxIENGVU5DICA6dG9faQ0KYzowMDQyIHA6LS0tLSBzOjAyMzUgYjow
MjM1IGw6MDAwMjM0IGQ6MDAwMjM0IENGVU5DICA6aW5zdGFuY2VfdmFyaWFi
bGVfc2V0DQpjOjAwNDEgcDowMDk4IHM6MDIzMCBiOjAyMzAgbDowMDAyMjkg
ZDowMDAyMjkgTUVUSE9EIGM6L1J1YnkxOTEvbGliL3J1YnkvZ2Vtcy8xLjku
MS9nZW1zL2FjdGl2ZXN1cHBvDQpydC0yLjMuOC9saWIvYWN0aXZlX3N1cHBv
cnQvY29yZV9leHQvY2xhc3MvaW5oZXJpdGFibGVfYXR0cmlidXRlcy5yYjox
MzUNCmM6MDA0MCBwOi0tLS0gczowMjI2IGI6MDIyNiBsOjAwMDIyNSBkOjAw
MDIyNSBDRlVOQyAgOmluZGV4DQpjOjAwMzkgcDotLS0tIHM6MDIyMyBiOjAy
MjMgbDowMDAyMjIgZDowMDAyMjIgQ0ZVTkMgIDpzbGVlcA0KYzowMDM4IHA6
MDAxOSBzOjAyMTkgYjowMjE5IGw6MDAxYTI0IGQ6MDAwMjE4IEJMT0NLICBD
Oi9WQVRGX3NvdXJjZS90YXJnZXQvc2VyaWFsX2VxdWlwbWVudF9jb25uZWN0
aQ0Kb24ucmI6MjUNCmM6MDAzNyBwOjAxMDkgczowMjE3IGI6MDIxNyBsOjAw
MjY5OCBkOjAwMjY5OCBNRVRIT0QgYzovUnVieTE5MS9saWIvcnVieS8xLjku
MS90aW1lb3V0LnJiOjUyDQpjOjAwMzYgcDowMTUzIHM6MDIwNSBiOjAyMDUg
bDowMDFhMjQgZDowMDFhMjQgTUVUSE9EIEM6L1ZBVEZfc291cmNlL3Rhcmdl
dC9zZXJpYWxfZXF1aXBtZW50X2Nvbm5lY3RpDQpvbi5yYjoyMw0KYzowMDM1
IHA6MDAxNCBzOjAxOTQgYjowMTk0IGw6MDAwMTkzIGQ6MDAwMTkzIE1FVEhP
RCBDOi9WQVRGX3NvdXJjZS90YXJnZXQvZXF1aXBtZW50X2Nvbm5lY3Rpb24u
cmI6NQ0KNA0KYzowMDM0IHA6MDA0NyBzOjAxOTAgYjowMTkwIGw6MDAwMTg5
IGQ6MDAwMTg5IE1FVEhPRCBDOi9WQVRGX3NvdXJjZS90YXJnZXQvZXF1aXBt
ZW50X2RyaXZlci5yYjo0MQ0KYzowMDMzIHA6MDA0NSBzOjAxODIgYjowMTgy
IGw6MDAwMTgxIGQ6MDAwMTgxIE1FVEhPRCBjOi9SdWJ5MTkxL2xpYi9ydWJ5
LzEuOS4xL2RlbGVnYXRlLnJiOjEzNw0KYzowMDMyIHA6LS0tLSBzOjAxNzUg
YjowMTc1IGw6MDAwMTc0IGQ6MDAwMTc0IEZJTklTSA0KYzowMDMxIHA6MDA3
OSBzOjAxNzMgYjowMTczIGw6MDAwMTQxIGQ6MDAwMTcyIEJMT0NLICBDOlx2
YXRmQHZnZGtfZW5nZ19hcmFnby1wcm9qZWN0X29yZ19naXRfcHJvamVjdA0K
c190ZXN0LWF1dG9tYXRpb25fZXhlY3V0aW9uLWVuZ2luZXNfdmF0Zi1zY3Jp
cHRzX2dpdF9cVkdES1x0cmFuc2NvZGluZ1x0cmFuc2NvZGkNCmM6MDAzMCBw
Oi0tLS0gczowMTY5IGI6MDE2OSBsOjAwMDE2OCBkOjAwMDE2OCBGSU5JU0gN
CmM6MDAyOSBwOi0tLS0gczowMTY3IGI6MDE2NyBsOjAwMDE2NiBkOjAwMDE2
NiBDRlVOQyAgOmVhY2hfcGFpcg0KYzowMDI4IHA6MDI1NCBzOjAxNjQgYjow
MTY0IGw6MDAwMTQxIGQ6MDAwMTYzIEJMT0NLICBDOlx2YXRmQHZnZGtfZW5n
Z19hcmFnby1wcm9qZWN0X29yZ19naXRfcHJvamVjdA0Kc190ZXN0LWF1dG9t
YXRpb25fZXhlY3V0aW9uLWVuZ2luZXNfdmF0Zi1zY3JpcHRzX2dpdF9cVkdE
S1x0cmFuc2NvZGluZ1x0cmFuc2NvZGkNCmM6MDAyNyBwOi0tLS0gczowMTU2
IGI6MDE1NiBsOjAwMDE1NSBkOjAwMDE1NSBGSU5JU0gNCmM6MDAyNiBwOi0t
LS0gczowMTU0IGI6MDE1NCBsOjAwMDE1MyBkOjAwMDE1MyBDRlVOQyAgOmVh
Y2gNCmM6MDAyNSBwOjAwMTEgczowMTUxIGI6MDE1MSBsOjAwMDE0MSBkOjAw
MDE1MCBCTE9DSyAgQzpcdmF0ZkB2Z2RrX2VuZ2dfYXJhZ28tcHJvamVjdF9v
cmdfZ2l0X3Byb2plY3QNCnNfdGVzdC1hdXRvbWF0aW9uX2V4ZWN1dGlvbi1l
bmdpbmVzX3ZhdGYtc2NyaXB0c19naXRfXFZHREtcdHJhbnNjb2RpbmdcdHJh
bnNjb2RpDQpjOjAwMjQgcDotLS0tIHM6MDE0NyBiOjAxNDcgbDowMDAxNDYg
ZDowMDAxNDYgRklOSVNIDQpjOjAwMjMgcDotLS0tIHM6MDE0NSBiOjAxNDUg
bDowMDAxNDQgZDowMDAxNDQgQ0ZVTkMgIDplYWNoX3BhaXINCmM6MDAyMiBw
OjA5MTYgczowMTQyIGI6MDE0MiBsOjAwMDE0MSBkOjAwMDE0MSBNRVRIT0Qg
QzpcdmF0ZkB2Z2RrX2VuZ2dfYXJhZ28tcHJvamVjdF9vcmdfZ2l0X3Byb2pl
Y3QNCnNfdGVzdC1hdXRvbWF0aW9uX2V4ZWN1dGlvbi1lbmdpbmVzX3ZhdGYt
c2NyaXB0c19naXRfXFZHREtcdHJhbnNjb2RpbmdcdHJhbnNjb2RpDQpjOjAw
MjEgcDowODk3IHM6MDA5NyBiOjAwOTcgbDowMDE1YWMgZDowMDE1YWMgTUVU
SE9EIEM6L1ZBVEZfc291cmNlL2F0Zl9zZXNzaW9uX3J1bm5lci5yYjo0MjAN
CmM6MDAyMCBwOjAxMzAgczowMDc4IGI6MDA3OCBsOjAwMDA2OCBkOjAwMDA3
NyBCTE9DSyAgQzovVkFURl9zb3VyY2UvYXRmX3Nlc3Npb25fcnVubmVyLnJi
OjI5Mw0KYzowMDE5IHA6LS0tLSBzOjAwNzUgYjowMDc1IGw6MDAwMDc0IGQ6
MDAwMDc0IEZJTklTSA0KYzowMDE4IHA6LS0tLSBzOjAwNzMgYjowMDczIGw6
MDAwMDcyIGQ6MDAwMDcyIENGVU5DICA6dXB0bw0KYzowMDE3IHA6MDIzMiBz
OjAwNjkgYjowMDY5IGw6MDAwMDY4IGQ6MDAwMDY4IE1FVEhPRCBDOi9WQVRG
X3NvdXJjZS9hdGZfc2Vzc2lvbl9ydW5uZXIucmI6Mjg4DQpjOjAwMTYgcDow
MDIzIHM6MDA2MiBiOjAwNjIgbDowMDAwMjMgZDowMDAwNjEgQkxPQ0sgIGF0
Zl9ydW4ucmI6NTANCmM6MDAxNSBwOi0tLS0gczowMDU5IGI6MDA1OSBsOjAw
MDA1OCBkOjAwMDA1OCBGSU5JU0gNCmM6MDAxNCBwOi0tLS0gczowMDU3IGI6
MDA1NyBsOjAwMDA1NiBkOjAwMDA1NiBDRlVOQyAgOmVhY2gNCmM6MDAxMyBw
OjAwMzEgczowMDU0IGI6MDA1NCBsOjAwMDAyMyBkOjAwMDA1MyBCTE9DSyAg
YXRmX3J1bi5yYjo0OQ0KYzowMDEyIHA6LS0tLSBzOjAwNTEgYjowMDUxIGw6
MDAwMDUwIGQ6MDAwMDUwIEZJTklTSA0KYzowMDExIHA6LS0tLSBzOjAwNDkg
YjowMDQ5IGw6MDAwMDQ4IGQ6MDAwMDQ4IENGVU5DICA6ZWFjaA0KYzowMDEw
IHA6MDAxNyBzOjAwNDYgYjowMDQ2IGw6MDAwMDIzIGQ6MDAwMDQ1IEJMT0NL
ICBhdGZfcnVuLnJiOjQ3DQpjOjAwMDkgcDotLS0tIHM6MDA0MyBiOjAwNDMg
bDowMDAwNDIgZDowMDAwNDIgRklOSVNIDQpjOjAwMDggcDotLS0tIHM6MDA0
MSBiOjAwNDEgbDowMDAwNDAgZDowMDAwNDAgQ0ZVTkMgIDp1cHRvDQpjOjAw
MDcgcDowMjI5IHM6MDAzNyBiOjAwMzcgbDowMDAwMjMgZDowMDAwMzYgQkxP
Q0sgIGF0Zl9ydW4ucmI6NDYNCmM6MDAwNiBwOi0tLS0gczowMDI5IGI6MDAy
OSBsOjAwMDAyOCBkOjAwMDAyOCBGSU5JU0gNCmM6MDAwNSBwOi0tLS0gczow
MDI3IGI6MDAyNyBsOjAwMDAyNiBkOjAwMDAyNiBDRlVOQyAgOmVhY2gNCmM6
MDAwNCBwOjA0NTAgczowMDI0IGI6MDAyNCBsOjAwMDAyMyBkOjAwMDAyMyBN
RVRIT0QgYXRmX3J1bi5yYjo0MQ0KYzowMDAzIHA6MDA4NCBzOjAwMDYgYjow
MDA2IGw6MDAwMjA0IGQ6MDAxNzdjIEVWQUwgICBhdGZfcnVuLnJiOjEwNw0K
YzowMDAyIHA6LS0tLSBzOjAwMDQgYjowMDA0IGw6MDAwMDAzIGQ6MDAwMDAz
IEZJTklTSA0KYzowMDAxIHA6MDAwMCBzOjAwMDIgYjowMDAyIGw6MDAwMjA0
IGQ6MDAwMjA0IFRPUA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQot
LSBSdWJ5IGxldmVsIGJhY2t0cmFjZSBpbmZvcm1hdGlvbi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpjOi9SdWJ5MTkxL2xp
Yi9ydWJ5LzEuOS4xL3RpbWVvdXQucmI6NDk6aW4gYHNsZWVwJw0KYzovUnVi
eTE5MS9saWIvcnVieS8xLjkuMS90aW1lb3V0LnJiOjQ5OmluIGBibG9jayBp
biB0aW1lb3V0Jw0KDQpbTk9URV0NCllvdSBtYXkgZW5jb3VudGVyIGEgYnVn
IG9mIFJ1YnkgaW50ZXJwcmV0ZXIuIEJ1ZyByZXBvcnRzIGFyZSB3ZWxjb21l
Lg0KRm9yIGRldGFpbHM6IGh0dHA6Ly93d3cucnVieS1sYW5nLm9yZy9idWdy
ZXBvcnQuaHRtbA0KDQoNClRoaXMgYXBwbGljYXRpb24gaGFzIHJlcXVlc3Rl
ZCB0aGUgUnVudGltZSB0byB0ZXJtaW5hdGUgaXQgaW4gYW4gdW51c3VhbCB3
YXkuDQpQbGVhc2UgY29udGFjdCB0aGUgYXBwbGljYXRpb24ncyBzdXBwb3J0
IHRlYW0gZm9yIG1vcmUgaW5mb3JtYXRpb24u
cmVxdWlyZSAncnVieWdlbXMnDQpyZXF1aXJlICd0aW1lb3V0Jw0KcmVxdWly
ZSBGaWxlLmRpcm5hbWUoX19GSUxFX18pKycvYmFzZV9saXN0ZW5lcicNCg0K
Y2xhc3MgU2VyaWFsRXF1aXBtZW50Q29ubmVjdGlvbiA8IFNlcmlhbEJhc2VM
aXN0ZW5lckNsaWVudA0KICANCiAgZGVmIGluaXRpYWxpemUocGxhdGZvcm1f
aW5mbykNCiAgICBzdXBlcihwbGF0Zm9ybV9pbmZvKQ0KICAgIHJlc2N1ZSBF
eGNlcHRpb24gPT4gZQ0KICAgICAgcmFpc2UNCiAgZW5kDQoNCiAgZGVmIHNl
bmRfY21kKCpwYXJhbXMpDQogICAgY29tbWFuZCAgICAgICAgPSBwYXJhbXNb
MF0NCiAgICBleHBlY3RlZF9tYXRjaCA9IHBhcmFtc1sxXSA/IHBhcmFtc1sx
XSA6IFJlZ2V4cC5uZXcoJy4qJykNCiAgICB0aW1lb3V0ICAgICAgICA9IHBh
cmFtc1syXSA/IHBhcmFtc1syXSA6IDMwDQogICAgY2hlY2tfY21kX2VjaG8g
PSBwYXJhbXNbM10gPyBwYXJhbXNbM10gOiB0cnVlDQoJDQogICAgQGlzX3Rp
bWVvdXQgPSBmYWxzZQ0KICAgIGxpc3RlbmVyID0gQmFzZUxpc3RlbmVyLm5l
dyhjb21tYW5kLCBleHBlY3RlZF9tYXRjaCwgY2hlY2tfY21kX2VjaG8pDQog
ICAgYWRkX2xpc3RlbmVyKGxpc3RlbmVyKQ0KICAgIHN1cGVyKGNvbW1hbmQp
DQogICAgc3RhdHVzID0gVGltZW91dDo6dGltZW91dCh0aW1lb3V0KSB7DQog
ICAgICAgIHdoaWxlICghbGlzdGVuZXIubWF0Y2gpIA0KICAgICAgICAgICAg
c2xlZXAgMC41DQogICAgICAgIGVuZA0KICAgIH0NCiAgICByZXNjdWUgVGlt
ZW91dDo6RXJyb3IgPT4gZQ0KICAgICAgbG9nX2Vycm9yKCJPbiBjb21tYW5k
OiAiK2NvbW1hbmQudG9fcysiIHdhaXRpbmcgZm9yICIrZXhwZWN0ZWRfbWF0
Y2gudG9fcysiID4+PiBlcnJvcjogIitlLnRvX3MpIGlmIHJlc3BvbmRfdG8/
KDpsb2dfZXJyb3IpDQogICAgICBAaXNfdGltZW91dCA9IHRydWUNCiAgICBy
ZXNjdWUgRXhjZXB0aW9uID0+IGUNCiAgICAgICBLZXJuZWwucHJpbnQgZS50
b19zKyJcbiIrZS5iYWNrdHJhY2UudG9fcw0KICAgICAgIHJhaXNlDQogICAg
ZW5zdXJlDQogICAgICBAcmVzcG9uc2UgPSBsaXN0ZW5lci5yZXNwb25zZQ0K
ICAgICAgcmVtb3ZlX2xpc3RlbmVyKGxpc3RlbmVyKQ0KICBlbmQNCiAgDQog
IGRlZiByZXNwb25zZQ0KICAgIEByZXNwb25zZS50b19zDQogIGVuZA0KICAN
CiAgZGVmIHRpbWVvdXQ/DQogICAgQGlzX3RpbWVvdXQNCiAgZW5kDQogIA0K
ICBkZWYgdXBkYXRlX3Jlc3BvbnNlDQogICAgQHNlc3Npb25fZGF0YQ0KICBl
bmQNCmVuZA0K
cmVxdWlyZSAncnVieWdlbXMnDQpyZXF1aXJlIEZpbGUuZGlybmFtZShfX0ZJ
TEVfXykrJy90ZWxuZXRfZXF1aXBtZW50X2Nvbm5lY3Rpb24nDQpyZXF1aXJl
IEZpbGUuZGlybmFtZShfX0ZJTEVfXykrJy9zZXJpYWxfZXF1aXBtZW50X2Nv
bm5lY3Rpb24nDQoNCmNsYXNzIEVxdWlwbWVudENvbm5lY3Rpb24NCiAgYXR0
cl9yZWFkZXIgOmRlZmF1bHQsIDp0ZWxuZXQsIDpzZXJpYWwNCg0KICBkZWYg
aW5pdGlhbGl6ZShwbGF0Zm9ybV9pbmZvKQ0KICAgIEBwbGF0Zm9ybV9pbmZv
ID0gcGxhdGZvcm1faW5mbw0KICAgIEBkZWZhdWx0ID0gbmlsDQogICAgQHRl
bG5ldCA9IG5pbA0KICAgIEBzZXJpYWwgPSBuaWwNCiAgZW5kDQoNCiAgZGVm
IGNvbm5lY3QocGFyYW1zKQ0KICAgIGNhc2UgcGFyYW1zWyd0eXBlJ10udG9f
cy5kb3duY2FzZS5zdHJpcA0KICAgIHdoZW4gJ3RlbG5ldCcNCiAgICAgIEB0
ZWxuZXQgPSBUZWxuZXRFcXVpcG1lbnRDb25uZWN0aW9uLm5ldyhAcGxhdGZv
cm1faW5mbykgDQogICAgICBpZiBAcGxhdGZvcm1faW5mby5kcml2ZXJfY2xh
c3NfbmFtZS50b19zLmRvd25jYXNlLmluY2x1ZGU/KCJ3aW5jZSIpDQogICAg
ICAgIEB0ZWxuZXQuY29ubmVjdA0KICAgICAgICBAdGVsbmV0LndhaXRmb3Io
eydNYXRjaCcgPT4gLz4vLCAnVGltZW91dCc9PiAxMH0pDQogICAgICAgIHNs
ZWVwIDENCiAgICAgIGVsc2UNCiAgICAgICAgQHRlbG5ldC5jb25uZWN0DQog
ICAgICBlbmQNCgkgIEB0ZWxuZXQuc3RhcnRfbGlzdGVuaW5nDQogICAgICBA
ZGVmYXVsdCA9IEB0ZWxuZXQNCiAgICANCiAgICB3aGVuICdzZXJpYWwnDQog
ICAgICBpZiBAcGxhdGZvcm1faW5mby5zZXJpYWxfcG9ydC50b19zLnN0cmlw
ICE9ICcnDQogICAgICAgIEBzZXJpYWwgPSBTZXJpYWxFcXVpcG1lbnRDb25u
ZWN0aW9uLm5ldyhAcGxhdGZvcm1faW5mbykgDQogICAgICBlbHNlDQogICAg
ICAgIEBzZXJpYWwgPSBTZXJpYWxTZXJ2ZXJDb25uZWN0aW9uLm5ldyhAcGxh
dGZvcm1faW5mbykNCiAgICAgIGVuZA0KCSAgQHNlcmlhbC5zdGFydF9saXN0
ZW5pbmcNCiAgICAgIEBkZWZhdWx0ID0gQHNlcmlhbCBpZiAhQGRlZmF1bHQN
CiAgICBlbHNlDQogICAgICByYWlzZSAiVW5rbm93biBjb25uZWN0aW9uIHR5
cGU6ICN7cGFyYW1zWyd0eXBlJ10udG9fc30iDQogICAgZW5kDQogIGVuZA0K
DQogIGRlZiBkaXNjb25uZWN0DQogICAgQHRlbG5ldC5kaXNjb25uZWN0IGlm
IEB0ZWxuZXQNCiAgICBAc2VyaWFsLmRpc2Nvbm5lY3QgaWYgQHNlcmlhbA0K
ICBlbmQNCg0KICBkZWYgc2VuZF9jbWQoKnBhcmFtcykNCiAgICAjIGNvbW1h
bmQgICAgICAgID0gcGFyYW1zWzBdDQogICAgIyBleHBlY3RlZF9tYXRjaCA9
IHBhcmFtc1sxXSAjPyBwYXJhbXNbMV0gOiBSZWdleHAubmV3KCcuKicpDQog
ICAgIyB0aW1lb3V0ICAgICAgICA9IHBhcmFtc1syXSAjPyBwYXJhbXNbMl0g
OiAzMA0KCSMgY2hlY2tfY21kX2VjaG8gPSBwYXJhbXNbM10gIz8gcGFyYW1z
WzNdIDogdHJ1ZQ0KICAgICMgcHV0cyAiZXF1aXBtZW50X2Nvbm5lY3Rpb246
ICN7Y29tbWFuZH0sICN7ZXhwZWN0ZWRfbWF0Y2h9LCAje3RpbWVvdXR9LCAj
e2NoZWNrX2NtZF9lY2hvfSIgIyBUT0RPIFJFTU9WRSBERUJVRyBQUklOVA0K
ICAgIA0KCUBkZWZhdWx0LnNlbmRfY21kKCpwYXJhbXMpDQoJZW5kDQogIA0K
ICBkZWYgcmVzcG9uc2UNCiAgICBAZGVmYXVsdC5yZXNwb25zZQ0KICBlbmQN
CiAgDQogIGRlZiB0aW1lb3V0Pw0KICAgIEBkZWZhdWx0LnRpbWVvdXQ/DQog
IGVuZA0KICANCiAgZGVmIHVwZGF0ZV9yZXNwb25zZQ0KICAgIEBkZWZhdWx0
LnVwZGF0ZV9yZXNwb25zZQ0KICBlbmQNCiAgDQplbmQNCg0KDQo=