From: Jan Lelis Date: 2011-01-13T05:48:07+09:00 Subject: [ruby-core:34446] [Ruby 1.9-Bug#4274][Open] SEGFAULT: ARGF.gets will crash if first file is not readable! --mimepart_4d2e12ec3d27d_1dc2b45c73857ad Content-Type: text/plain Content-Transfer-Encoding: Quoted-printable Content-Disposition: inline Bug #4274: SEGFAULT: ARGF.gets will crash if first file is not readable! http://redmine.ruby-lang.org/issues/show/4274 Author: Jan Lelis Status: Open, Priority: Normal ruby -v: ruby 1.9.2p136 (2010-12-25) [i686-linux] Hi, welcome to crash golf ;). ruby -e 'gets rescue gets' CRASH! or some alternative forms of it: ARGV.unshift 'filename_that_does_not_exist' ARGF.gets rescue nil ARGF.gets or $*.unshift'X' $<.fileno rescue $<.fileno However, if the first arg is readable, everything will be fine. I've produced that error on various 1.9 versions. 1.8.7 (tested on p330) does not segfault, but displays a weird error mess= age: ruby -e 'gets rescue gets' CRASH! -e:1:in `gets': private method `gets' called for false:FalseClass (NoMe= thodError) Appended the segfault info and a patch. J-_-L ---------------------------------------- http://redmine.ruby-lang.org --mimepart_4d2e12ec3d27d_1dc2b45c73857ad Content-Type: text/plain; name=argf_segfault.segfault Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=argf_segfault.segfault LWU6MTogW0JVR10gU2VnbWVudGF0aW9uIGZhdWx0CnJ1YnkgMS45LjJwMTM2 ICgyMDEwLTEyLTI1KSBbaTY4Ni1saW51eF0KCi0tIGNvbnRyb2wgZnJhbWUg LS0tLS0tLS0tLQpjOjAwMDYgcDotLS0tIHM6MDAxNCBiOjAwMTQgbDowMDAw MTMgZDowMDAwMTMgQ0ZVTkMgIDpnZXRzCmM6MDAwNSBwOi0tLS0gczowMDEy IGI6MDAxMiBsOjAwMDAxMSBkOjAwMDAxMSBDRlVOQyAgOmdldHMKYzowMDA0 IHA6MDAyMCBzOjAwMDkgYjowMDA5IGw6MDAxZjE0IGQ6MDAwMDA4IEJMT0NL ICAtZToxCmM6MDAwMyBwOjAwMTAgczowMDA2IGI6MDAwNiBsOjAwMWYxNCBk OjAwMjUzYyBFVkFMICAgLWU6MQpjOjAwMDIgcDotLS0tIHM6MDAwNCBiOjAw MDQgbDowMDAwMDMgZDowMDAwMDMgRklOSVNICmM6MDAwMSBwOjAwMDAgczow MDAyIGI6MDAwMiBsOjAwMWYxNCBkOjAwMWYxNCBUT1AgICAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCi0tIFJ1YnkgbGV2ZWwgYmFja3RyYWNlIGlu Zm9ybWF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KLWU6MTppbiBgPG1haW4+JwotZToxOmluIGByZXNjdWUgaW4gPG1h aW4+JwotZToxOmluIGBnZXRzJwotZToxOmluIGBnZXRzJwoKLS0gQyBsZXZl bCBiYWNrdHJhY2UgaW5mb3JtYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQouL3J1Ynk5KHJiX3ZtX2J1Z3JlcG9y dCsweGE1KSBbMHg4MTYxOGI1XQouL3J1Ynk5KCkgWzB4ODFhMDcwOV0KLi9y dWJ5OShyYl9idWcrMHgyOCkgWzB4ODFhMDdiOF0KLi9ydWJ5OSgpIFsweDgw ZjM4NThdClsweDkzNzQxMF0KLi9ydWJ5OSgpIFsweDgwODU4ODRdCi4vcnVi eTkoKSBbMHg4MDg1OTA1XQouL3J1Ynk5KCkgWzB4ODE0ZDAxNV0KLi9ydWJ5 OSgpIFsweDgxNTkzMzFdCi4vcnVieTkoKSBbMHg4MDg1OTVjXQouL3J1Ynk5 KCkgWzB4ODE0ZDAxNV0KLi9ydWJ5OSgpIFsweDgxNTFmYThdCi4vcnVieTko KSBbMHg4MTU0MzI4XQouL3J1Ynk5KCkgWzB4ODE1N2Y3ZV0KLi9ydWJ5OShy Yl9pc2VxX2V2YWxfbWFpbisweDFjZSkgWzB4ODE1ODM1ZV0KLi9ydWJ5OSgp IFsweDgwNWU0ZjJdCi4vcnVieTkocnVieV9ydW5fbm9kZSsweDMyKSBbMHg4 MDVmZDEyXQouL3J1Ynk5KG1haW4rMHg1YSkgWzB4ODA1ZDcyYV0KL2xpYi90 bHMvaTY4Ni9jbW92L2xpYmMuc28uNihfX2xpYmNfc3RhcnRfbWFpbisweGU2 KSBbMHgyNjViZDZdCi4vcnVieTkoKSBbMHg4MDVkNjMxXQoKW05PVEVdCllv dSBtYXkgaGF2ZSBlbmNvdW50ZXJlZCBhIGJ1ZyBpbiB0aGUgUnVieSBpbnRl cnByZXRlciBvciBleHRlbnNpb24gbGlicmFyaWVzLgpCdWcgcmVwb3J0cyBh cmUgd2VsY29tZS4KRm9yIGRldGFpbHM6IGh0dHA6Ly93d3cucnVieS1sYW5n Lm9yZy9idWdyZXBvcnQuaHRtbAoK --mimepart_4d2e12ec3d27d_1dc2b45c73857ad Content-Type: text/plain; name=argf_segfault.backtrace Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=argf_segfault.backtrace U3RhcnRpbmcgcHJvZ3JhbTogL2hvbWUvamFuL3NyYy9ub24tZ2l0L3J1Ynkt MS45LjItcDEzNi9ydWJ5OSAtZSBnZXRzXCByZXNjdWVcIGdldHMgQ1JBU0gK W1RocmVhZCBkZWJ1Z2dpbmcgdXNpbmcgbGlidGhyZWFkX2RiIGVuYWJsZWRd CltOZXcgVGhyZWFkIDB4YjdmZjZiNzAgKExXUCAyMDY1MCldCgpQcm9ncmFt IHJlY2VpdmVkIHNpZ25hbCBTSUdTRUdWLCBTZWdtZW50YXRpb24gZmF1bHQu CjB4MDgwODQ4NGIgaW4gcmJfaW9fZ2V0bGluZV8xIChycz08dmFsdWUgb3B0 aW1pemVkIG91dD4sIGxpbWl0PTx2YWx1ZSBvcHRpbWl6ZWQgb3V0PiwgaW89 PHZhbHVlIG9wdGltaXplZCBvdXQ+KQogICAgYXQgaW8uYzoyNDQ3CjI0NDcJ ICAgIEdldE9wZW5GaWxlKGlvLCBmcHRyKTsKKGdkYikgYnQKIzAgIDB4MDgw ODQ4NGIgaW4gcmJfaW9fZ2V0bGluZV8xIChycz08dmFsdWUgb3B0aW1pemVk IG91dD4sIGxpbWl0PTx2YWx1ZSBvcHRpbWl6ZWQgb3V0PiwgaW89PHZhbHVl IG9wdGltaXplZCBvdXQ+KQogICAgYXQgaW8uYzoyNDQ3CiMxICAweDA4MDg1 ODg0IGluIHJiX2lvX2dldHMgKGFyZ2M9MCwgYXJndj08dmFsdWUgb3B0aW1p emVkIG91dD4sIGFyZ2Y9MTM2NjMxMTIwKSBhdCBpby5jOjI1NjEKIzIgIGFy Z2ZfZ2V0bGluZSAoYXJnYz0wLCBhcmd2PTx2YWx1ZSBvcHRpbWl6ZWQgb3V0 PiwgYXJnZj0xMzY2MzExMjApIGF0IGlvLmM6Njg5MgojMyAgMHgwODA4NTkw NSBpbiBhcmdmX2dldHMgKGFyZ2M9MCwgYXJndj0weGI3ZjI1MDMwLCBhcmdm PTEzNjYzMTEyMCkgYXQgaW8uYzo2OTg5CiM0ICAweDA4MTRkMDE1IGluIGNh bGxfY2Z1bmMgKGZ1bmM9MHg4MDg1OGYwIDxhcmdmX2dldHM+LCByZWN2PTQs IGxlbj00LCBhcmdjPTAsIGFyZ3Y9MHg0KSBhdCB2bV9pbnNuaGVscGVyLmM6 MzE1CiM1ICAweDA4MTU5MzMxIGluIHZtX2NhbGwwICh0aD0weDgyMjJlZTAs IHJlY3Y9PHZhbHVlIG9wdGltaXplZCBvdXQ+LCBpZD08dmFsdWUgb3B0aW1p emVkIG91dD4sIGFyZ2M9MCwgYXJndj0weGI3ZjI1MDMwLCAKICAgIG1lPTB4 ODI4ZjExOCkgYXQgdm1fZXZhbC5jOjc5CiM2ICAweDA4MDg1OTVjIGluIHJi X2ZfZ2V0cyAoYXJnYz0wLCBhcmd2PTB4YjdmMjUwMzAsIHJlY3Y9MTM2NjU2 MjgwKSBhdCBpby5jOjY5NjYKIzcgIDB4MDgxNGQwMTUgaW4gY2FsbF9jZnVu YyAoZnVuYz0weDgwODU5MjAgPHJiX2ZfZ2V0cz4sIHJlY3Y9NCwgbGVuPTQs IGFyZ2M9MCwgYXJndj0weDQpIGF0IHZtX2luc25oZWxwZXIuYzozMTUKIzgg IDB4MDgxNTFmYTggaW4gdm1fY2FsbF9jZnVuYyAodGg9PHZhbHVlIG9wdGlt aXplZCBvdXQ+LCBjZnA9MHhiN2ZhNGY1OCwgbnVtPTAsIGJsb2NrcHRyPTB4 MCwgZmxhZz0yNCwgaWQ9NDA4LCAKICAgIG1lPTB4ODI4YWU0OCwgcmVjdj0x MzY2NTYyODApIGF0IHZtX2luc25oZWxwZXIuYzo0MDIKIzkgIHZtX2NhbGxf bWV0aG9kICh0aD08dmFsdWUgb3B0aW1pemVkIG91dD4sIGNmcD0weGI3ZmE0 ZjU4LCBudW09MCwgYmxvY2twdHI9MHgwLCBmbGFnPTI0LCBpZD00MDgsIG1l PTB4ODI4YWU0OCwgCiAgICByZWN2PTEzNjY1NjI4MCkgYXQgdm1faW5zbmhl bHBlci5jOjUyNAojMTAgMHgwODE1NDMyOCBpbiB2bV9leGVjX2NvcmUgKHRo PTx2YWx1ZSBvcHRpbWl6ZWQgb3V0PiwgaW5pdGlhbD08dmFsdWUgb3B0aW1p emVkIG91dD4pIGF0IGluc25zLmRlZjoxMDA2CiMxMSAweDA4MTU3ZjdlIGlu IHZtX2V4ZWMgKHRoPTx2YWx1ZSBvcHRpbWl6ZWQgb3V0PikgYXQgdm0uYzox MTQ3CiMxMiAweDA4MTU4MzVlIGluIHJiX2lzZXFfZXZhbF9tYWluIChpc2Vx dmFsPTEzNjU2ODAyMCkgYXQgdm0uYzoxMzg4CiMxMyAweDA4MDVlNGYyIGlu IHJ1YnlfZXhlY19pbnRlcm5hbCAobj08dmFsdWUgb3B0aW1pemVkIG91dD4p IGF0IGV2YWwuYzoyMTQKIzE0IDB4MDgwNWZkMTIgaW4gcnVieV9leGVjX25v ZGUgKG49MHg4MjNkY2Q0KSBhdCBldmFsLmM6MjYxCiMxNSBydWJ5X3J1bl9u b2RlIChuPTB4ODIzZGNkNCkgYXQgZXZhbC5jOjI1NAojMTYgMHgwODA1ZDcy YSBpbiBtYWluIChhcmdjPTQsIGFyZ3Y9MHhiZmZmZjI2NCkgYXQgbWFpbi5j OjM1Cg== --mimepart_4d2e12ec3d27d_1dc2b45c73857ad Content-Type: text/x-patch; name=argf_segfault.patch Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=argf_segfault.patch ZGlmZiAtLWdpdCBhL2lvLmMub3JpZ2luYWwgYi9pby5jCmluZGV4IDFhMDE1 NTMuLjcyNDhlMTIgMTAwNjQ0Ci0tLSBhL2lvLmMub3JpZ2luYWwKKysrIGIv aW8uYwpAQCAtNjc3Myw5ICs2NzczLDExIEBAIGFyZ2ZfbmV4dF9hcmd2KFZB TFVFIGFyZ2YpCiAJQVJHRi5uZXh0X3AgPSAwOwogICAgICAgcmV0cnk6CiAJ aWYgKFJBUlJBWV9MRU4oQVJHRi5hcmd2KSA+IDApIHsKLQkgICAgQVJHRi5m aWxlbmFtZSA9IHJiX2FyeV9zaGlmdChBUkdGLmFyZ3YpOwotCSAgICBmbiA9 IFN0cmluZ1ZhbHVlQ1N0cihBUkdGLmZpbGVuYW1lKTsKKwkgICAgVkFMVUUg Zm5hbWUgPSByYl9hcnlfZW50cnkoQVJHRi5hcmd2LCAwKTsKKwkgICAgZm4g PSBTdHJpbmdWYWx1ZUNTdHIoZm5hbWUpOworCiAJICAgIGlmIChzdHJsZW4o Zm4pID09IDEgJiYgZm5bMF0gPT0gJy0nKSB7CisJCUFSR0YuZmlsZW5hbWUg PSByYl9hcnlfc2hpZnQoQVJHRi5hcmd2KTsKIAkJQVJHRi5jdXJyZW50X2Zp bGUgPSByYl9zdGRpbjsKIAkJaWYgKEFSR0YuaW5wbGFjZSkgewogCQkgICAg cmJfd2FybigiQ2FuJ3QgZG8gaW5wbGFjZSBlZGl0IGZvciBzdGRpbzsgc2tp cHBpbmciKTsKQEAgLTY3ODMsNiArNjc4NSwxNSBAQCBhcmdmX25leHRfYXJn dihWQUxVRSBhcmdmKQogCQl9CiAJICAgIH0KIAkgICAgZWxzZSB7CisJCUZp bGVQYXRoVmFsdWUoZm5hbWUpOworCQlmbmFtZSA9IHJiX3N0cl9lbmNvZGVf b3NwYXRoKGZuYW1lKTsKKwkJaWYgKGVhY2Nlc3MoU3RyaW5nVmFsdWVDU3Ry KGZuYW1lKSwgUl9PSykgPCAwKXsKKwkJICAgQVJHRi5pbml0X3AgPSAwOwor CQkgICBBUkdGLm5leHRfcCA9IDA7CisJCSAgIHJiX3JhaXNlKHJiX2VJT0Vy cm9yLCAibmV4dCBhcmdmIGZpbGUgaXMgbm90IHJlYWRhYmxlIik7CisJCX0K KworCQlBUkdGLmZpbGVuYW1lID0gcmJfYXJ5X3NoaWZ0KEFSR0YuYXJndik7 CiAJCWludCBmciA9IHJiX3N5c29wZW4oQVJHRi5maWxlbmFtZSwgT19SRE9O TFksIDApOwogCiAJCWlmIChBUkdGLmlucGxhY2UpIHsK --mimepart_4d2e12ec3d27d_1dc2b45c73857ad--