やりたかったこと
Ruby 2.7から導入された numbered parameter を使って配列内の数値を3乗したものを作ろうとした。
が、SEGVが起きてしまった。
sh@MyComputer:~/rubydev/bugs$ ruby -e "[1, 2, 3, 4].map{ _1 **3 }" -e:1: [BUG] Segmentation fault at 0x0000000000000007 ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux] -- Control frame information ----------------------------------------------- c:0004 p:0006 s:0016 e:000012 BLOCK -e:1 [FINISH] c:0003 p:---- s:0010 e:000009 CFUNC :map c:0002 p:0005 s:0006 e:000005 EVAL -e:1 [FINISH] c:0001 p:0000 s:0003 E:000d00 (none) [FINISH] -- Ruby level backtrace information ---------------------------------------- -e:1:in `<main>' -e:1:in `map' -e:1:in `block in <main>' -- Machine register context ------------------------------------------------ RIP: 0x00007f8030a95a52 RBP: 0x00007f8030fd8f30 RSP: 0x00007ffc361da270 RAX: 0x00007f8030ed9090 RBX: 0x0000000001195650 RCX: 0x0000000000000000 RDX: 0x0000000000000007 RDI: 0x0000000000000000 RSI: 0x00007f8030fd8f30 R8: 0x00007ffc361da590 R9: 0x000000000000001f R10: 0x000000000000000e R11: 0x00007f8030a9a330 R12: 0x00000000011e8fd8 R13: 0x0000000000000002 R14: 0x00000000011f1d68 R15: 0x0000000001243c20 EFL: 0x0000000000010202 -- C level backtrace information ------------------------------------------- /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7(rb_vm_bugreport+0x573) [0x7f8030abc9f3] vm_dump.c:755 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7(rb_bug_for_fatal_signal+0xe7) [0x7f80308e4b47] error.c:658 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7(sigsegv+0x49) [0x7f8030a1b819] signal.c:946 /lib/x86_64-linux-gnu/libpthread.so.0(__restore_rt+0x0) [0x7f80303ea890] /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7(CALLER_REMOVE_EMPTY_KW_SPLAT+0x8) [0x7f8030a95a52] vm_insnhelper.c:1996 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7(CALLER_REMOVE_EMPTY_KW_SPLAT) vm_insnhelper.c:1983 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7(vm_call_cfunc) vm_insnhelper.c:2535 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7(vm_call_method+0xcb) [0x7f8030aaa3cb] vm_insnhelper.c:3053 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7(vm_call_method_missing+0x172) [0x7f8030aaa682] vm_insnhelper.c:2744 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7(vm_call_method+0x12e) [0x7f8030aaa42e] vm_insnhelper.c:3013 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7(vm_sendish+0x96) [0x7f8030aa2b13] vm_insnhelper.c:4023 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7(vm_exec_core) insns.def:801 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7(rb_vm_exec+0x16c) [0x7f8030aa879c] vm.c:1920 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7(invoke_block_from_c_bh+0x168) [0x7f8030aacd73] vm.c:1044 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7(vm_yield) vm.c:1179 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7(rb_yield_0) vm_eval.c:1227 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7(rb_yield_1) vm_eval.c:1233 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7(rb_yield) vm_eval.c:1243 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7(rb_ary_collect+0x5c) [0x7f803085595c] array.c:3065 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7(vm_call_cfunc_with_frame+0x4d) [0x7f8030a9571c] vm_insnhelper.c:2514 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7(vm_call_cfunc) vm_insnhelper.c:2539 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7(vm_call_method+0xcb) [0x7f8030aaa3cb] vm_insnhelper.c:3053 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7(vm_sendish+0x23) [0x7f8030aa2bcd] vm_insnhelper.c:4023 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7(vm_exec_core) insns.def:782 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7(rb_vm_exec+0x16c) [0x7f8030aa879c] vm.c:1920 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7(rb_ec_exec_node+0xaa) [0x7f80308e957a] eval.c:277 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7(ruby_run_node+0x4a) [0x7f80308eec2a] eval.c:335 /home/sh/.rbenv/versions/2.7.0/bin/ruby(main+0x5b) [0x40090b] ./main.c:50 -- Other runtime information ----------------------------------------------- * Loaded script: -e * Loaded features: 0 enumerator.so 1 thread.rb 2 rational.so 3 complex.so 4 ruby2_keywords.rb 5 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/x86_64-linux/enc/encdb.so 6 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/x86_64-linux/enc/trans/transdb.so 7 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/x86_64-linux/rbconfig.rb 8 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/compatibility.rb 9 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/defaults.rb 10 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/deprecate.rb 11 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/errors.rb 12 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/version.rb 13 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/requirement.rb 14 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/platform.rb 15 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/basic_specification.rb 16 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/stub_specification.rb 17 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/util.rb 18 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/text.rb 19 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/user_interaction.rb 20 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/specification_policy.rb 21 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/util/list.rb 22 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/specification.rb 23 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/exceptions.rb 24 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/bundler_version_finder.rb 25 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/dependency.rb 26 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_gem.rb 27 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/x86_64-linux/monitor.so 28 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/monitor.rb 29 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb 30 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_warn.rb 31 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems.rb 32 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/rubygems/path_support.rb 33 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/did_you_mean/version.rb 34 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/did_you_mean/core_ext/name_error.rb 35 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/did_you_mean/levenshtein.rb 36 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/did_you_mean/jaro_winkler.rb 37 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/did_you_mean/spell_checker.rb 38 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb 39 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb 40 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/did_you_mean/spell_checkers/name_error_checkers.rb 41 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/did_you_mean/spell_checkers/method_name_checker.rb 42 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/did_you_mean/spell_checkers/key_error_checker.rb 43 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/did_you_mean/spell_checkers/null_checker.rb 44 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/did_you_mean/formatters/plain_formatter.rb 45 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/did_you_mean/tree_spell_checker.rb 46 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/did_you_mean.rb * Process memory map: 00400000-00401000 r-xp 00000000 08:30 1094561 /home/sh/.rbenv/versions/2.7.0/bin/ruby 00600000-00601000 r--p 00000000 08:30 1094561 /home/sh/.rbenv/versions/2.7.0/bin/ruby 00601000-00602000 rw-p 00001000 08:30 1094561 /home/sh/.rbenv/versions/2.7.0/bin/ruby 01193000-01569000 rw-p 00000000 00:00 0 [heap] 7f8029dce000-7f8029fbe000 r--s 00000000 08:30 630711 /lib/x86_64-linux-gnu/libc-2.27.so 7f8029fbe000-7f802aa90000 rw-p 00000000 00:00 0 7f802aa90000-7f802b47d000 r--s 00000000 08:30 1036292 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7.0 7f802b47d000-7f802b494000 r-xp 00000000 08:30 630748 /lib/x86_64-linux-gnu/libgcc_s.so.1 7f802b494000-7f802b693000 ---p 00017000 08:30 630748 /lib/x86_64-linux-gnu/libgcc_s.so.1 7f802b693000-7f802b694000 r--p 00016000 08:30 630748 /lib/x86_64-linux-gnu/libgcc_s.so.1 7f802b694000-7f802b695000 rw-p 00017000 08:30 630748 /lib/x86_64-linux-gnu/libgcc_s.so.1 7f802b695000-7f802b697000 r-xp 00000000 08:30 1093292 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/x86_64-linux/monitor.so 7f802b697000-7f802b896000 ---p 00002000 08:30 1093292 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/x86_64-linux/monitor.so 7f802b896000-7f802b897000 r--p 00001000 08:30 1093292 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/x86_64-linux/monitor.so 7f802b897000-7f802b898000 rw-p 00002000 08:30 1093292 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/x86_64-linux/monitor.so 7f802b898000-7f802b89a000 r-xp 00000000 08:30 1093377 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/x86_64-linux/enc/trans/transdb.so 7f802b89a000-7f802ba9a000 ---p 00002000 08:30 1093377 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/x86_64-linux/enc/trans/transdb.so 7f802ba9a000-7f802ba9b000 r--p 00002000 08:30 1093377 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/x86_64-linux/enc/trans/transdb.so 7f802ba9b000-7f802ba9c000 rw-p 00003000 08:30 1093377 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/x86_64-linux/enc/trans/transdb.so 7f802ba9c000-7f802ba9e000 r-xp 00000000 08:30 1093322 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/x86_64-linux/enc/encdb.so 7f802ba9e000-7f802bc9d000 ---p 00002000 08:30 1093322 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/x86_64-linux/enc/encdb.so 7f802bc9d000-7f802bc9e000 r--p 00001000 08:30 1093322 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/x86_64-linux/enc/encdb.so 7f802bc9e000-7f802bc9f000 rw-p 00002000 08:30 1093322 /home/sh/.rbenv/versions/2.7.0/lib/ruby/2.7.0/x86_64-linux/enc/encdb.so 7f802bc9f000-7f802bca0000 ---p 00000000 00:00 0 7f802bca0000-7f802bd41000 rw-p 00000000 00:00 0 7f802bd41000-7f802bd42000 ---p 00000000 00:00 0 7f802bd42000-7f802bde3000 rw-p 00000000 00:00 0 7f802bde3000-7f802bde4000 ---p 00000000 00:00 0 7f802bde4000-7f802be85000 rw-p 00000000 00:00 0 7f802be85000-7f802be86000 ---p 00000000 00:00 0 7f802be86000-7f802bf27000 rw-p 00000000 00:00 0 7f802bf27000-7f802bf28000 ---p 00000000 00:00 0 7f802bf28000-7f802bfc9000 rw-p 00000000 00:00 0 7f802bfc9000-7f802bfca000 ---p 00000000 00:00 0 7f802bfca000-7f802c06b000 rw-p 00000000 00:00 0 7f802c06b000-7f802c06c000 ---p 00000000 00:00 0 7f802c06c000-7f802c10d000 rw-p 00000000 00:00 0 7f802c10d000-7f802c10e000 ---p 00000000 00:00 0 7f802c10e000-7f802c1af000 rw-p 00000000 00:00 0 7f802c1af000-7f802c1b0000 ---p 00000000 00:00 0 7f802c1b0000-7f802c251000 rw-p 00000000 00:00 0 7f802c251000-7f802c252000 ---p 00000000 00:00 0 7f802c252000-7f802c2f3000 rw-p 00000000 00:00 0 7f802c2f3000-7f802c2f4000 ---p 00000000 00:00 0 7f802c2f4000-7f802c395000 rw-p 00000000 00:00 0 7f802c395000-7f802c396000 ---p 00000000 00:00 0 7f802c396000-7f802c437000 rw-p 00000000 00:00 0 7f802c437000-7f802c438000 ---p 00000000 00:00 0 7f802c438000-7f802c4d9000 rw-p 00000000 00:00 0 7f802c4d9000-7f802c4da000 ---p 00000000 00:00 0 7f802c4da000-7f802c57b000 rw-p 00000000 00:00 0 7f802c57b000-7f802c57c000 ---p 00000000 00:00 0 7f802c57c000-7f802c61d000 rw-p 00000000 00:00 0 7f802c61d000-7f802c61e000 ---p 00000000 00:00 0 7f802c61e000-7f802c6bf000 rw-p 00000000 00:00 0 7f802c6bf000-7f802c6c0000 ---p 00000000 00:00 0 7f802c6c0000-7f802c761000 rw-p 00000000 00:00 0 7f802c761000-7f802c762000 ---p 00000000 00:00 0 7f802c762000-7f802c803000 rw-p 00000000 00:00 0 7f802c803000-7f802c804000 ---p 00000000 00:00 0 7f802c804000-7f802c8a5000 rw-p 00000000 00:00 0 7f802c8a5000-7f802c8a6000 ---p 00000000 00:00 0 7f802c8a6000-7f802c947000 rw-p 00000000 00:00 0 7f802c947000-7f802c948000 ---p 00000000 00:00 0 7f802c948000-7f802c9e9000 rw-p 00000000 00:00 0 7f802c9e9000-7f802c9ea000 ---p 00000000 00:00 0 7f802c9ea000-7f802ca8b000 rw-p 00000000 00:00 0 7f802ca8b000-7f802ca8c000 ---p 00000000 00:00 0 7f802ca8c000-7f802cb2d000 rw-p 00000000 00:00 0 7f802cb2d000-7f802cb2e000 ---p 00000000 00:00 0 7f802cb2e000-7f802cbcf000 rw-p 00000000 00:00 0 7f802cbcf000-7f802cbd0000 ---p 00000000 00:00 0 7f802cbd0000-7f802cc71000 rw-p 00000000 00:00 0 7f802cc71000-7f802cc72000 ---p 00000000 00:00 0 7f802cc72000-7f802cd13000 rw-p 00000000 00:00 0 7f802cd13000-7f802cd14000 ---p 00000000 00:00 0 7f802cd14000-7f802cdb5000 rw-p 00000000 00:00 0 7f802cdb5000-7f802cdb6000 ---p 00000000 00:00 0 7f802cdb6000-7f802ce57000 rw-p 00000000 00:00 0 7f802ce57000-7f802ce58000 ---p 00000000 00:00 0 7f802ce58000-7f802cef9000 rw-p 00000000 00:00 0 7f802cef9000-7f802cefa000 ---p 00000000 00:00 0 7f802cefa000-7f802cf9b000 rw-p 00000000 00:00 0 7f802cf9b000-7f802cf9c000 ---p 00000000 00:00 0 7f802cf9c000-7f802d03d000 rw-p 00000000 00:00 0 7f802d03d000-7f802d03e000 ---p 00000000 00:00 0 7f802d03e000-7f802f0e8000 rw-p 00000000 00:00 0 7f802f0e8000-7f802f384000 r--p 00000000 08:30 140826 /usr/lib/locale/locale-archive 7f802f384000-7f802f56b000 r-xp 00000000 08:30 630711 /lib/x86_64-linux-gnu/libc-2.27.so 7f802f56b000-7f802f76b000 ---p 001e7000 08:30 630711 /lib/x86_64-linux-gnu/libc-2.27.so 7f802f76b000-7f802f76f000 r--p 001e7000 08:30 630711 /lib/x86_64-linux-gnu/libc-2.27.so 7f802f76f000-7f802f771000 rw-p 001eb000 08:30 630711 /lib/x86_64-linux-gnu/libc-2.27.so 7f802f771000-7f802f775000 rw-p 00000000 00:00 0 7f802f775000-7f802f912000 r-xp 00000000 08:30 630774 /lib/x86_64-linux-gnu/libm-2.27.so 7f802f912000-7f802fb11000 ---p 0019d000 08:30 630774 /lib/x86_64-linux-gnu/libm-2.27.so 7f802fb11000-7f802fb12000 r--p 0019c000 08:30 630774 /lib/x86_64-linux-gnu/libm-2.27.so 7f802fb12000-7f802fb13000 rw-p 0019d000 08:30 630774 /lib/x86_64-linux-gnu/libm-2.27.so 7f802fb13000-7f802fb1c000 r-xp 00000000 08:30 630721 /lib/x86_64-linux-gnu/libcrypt-2.27.so 7f802fb1c000-7f802fd1b000 ---p 00009000 08:30 630721 /lib/x86_64-linux-gnu/libcrypt-2.27.so 7f802fd1b000-7f802fd1c000 r--p 00008000 08:30 630721 /lib/x86_64-linux-gnu/libcrypt-2.27.so 7f802fd1c000-7f802fd1d000 rw-p 00009000 08:30 630721 /lib/x86_64-linux-gnu/libcrypt-2.27.so 7f802fd1d000-7f802fd4b000 rw-p 00000000 00:00 0 7f802fd4b000-7f802fd4e000 r-xp 00000000 08:30 630734 /lib/x86_64-linux-gnu/libdl-2.27.so 7f802fd4e000-7f802ff4d000 ---p 00003000 08:30 630734 /lib/x86_64-linux-gnu/libdl-2.27.so 7f802ff4d000-7f802ff4e000 r--p 00002000 08:30 630734 /lib/x86_64-linux-gnu/libdl-2.27.so 7f802ff4e000-7f802ff4f000 rw-p 00003000 08:30 630734 /lib/x86_64-linux-gnu/libdl-2.27.so 7f802ff4f000-7f802ffce000 r-xp 00000000 08:30 123859 /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.2 7f802ffce000-7f80301ce000 ---p 0007f000 08:30 123859 /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.2 7f80301ce000-7f80301cf000 r--p 0007f000 08:30 123859 /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.2 7f80301cf000-7f80301d0000 rw-p 00080000 08:30 123859 /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.2 7f80301d0000-7f80301d7000 r-xp 00000000 08:30 630843 /lib/x86_64-linux-gnu/librt-2.27.so 7f80301d7000-7f80303d6000 ---p 00007000 08:30 630843 /lib/x86_64-linux-gnu/librt-2.27.so 7f80303d6000-7f80303d7000 r--p 00006000 08:30 630843 /lib/x86_64-linux-gnu/librt-2.27.so 7f80303d7000-7f80303d8000 rw-p 00007000 08:30 630843 /lib/x86_64-linux-gnu/librt-2.27.so 7f80303d8000-7f80303f2000 r-xp 00000000 08:30 630835 /lib/x86_64-linux-gnu/libpthread-2.27.so 7f80303f2000-7f80305f1000 ---p 0001a000 08:30 630835 /lib/x86_64-linux-gnu/libpthread-2.27.so 7f80305f1000-7f80305f2000 r--p 00019000 08:30 630835 /lib/x86_64-linux-gnu/libpthread-2.27.so 7f80305f2000-7f80305f3000 rw-p 0001a000 08:30 630835 /lib/x86_64-linux-gnu/libpthread-2.27.so 7f80305f3000-7f80305f7000 rw-p 00000000 00:00 0 7f80305f7000-7f8030613000 r-xp 00000000 08:30 630874 /lib/x86_64-linux-gnu/libz.so.1.2.11 7f8030613000-7f8030812000 ---p 0001c000 08:30 630874 /lib/x86_64-linux-gnu/libz.so.1.2.11 7f8030812000-7f8030813000 r--p 0001b000 08:30 630874 /lib/x86_64-linux-gnu/libz.so.1.2.11 7f8030813000-7f8030814000 rw-p 0001c000 08:30 630874 /lib/x86_64-linux-gnu/libz.so.1.2.11 7f8030814000-7f8030bbe000 r-xp 00000000 08:30 1036292 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7.0 7f8030bbe000-7f8030dbe000 ---p 003aa000 08:30 1036292 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7.0 7f8030dbe000-7f8030dc4000 r--p 003aa000 08:30 1036292 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7.0 7f8030dc4000-7f8030dc7000 rw-p 003b0000 08:30 1036292 /home/sh/.rbenv/versions/2.7.0/lib/libruby.so.2.7.0 7f8030dc7000-7f8030de2000 rw-p 00000000 00:00 0 7f8030de2000-7f8030e09000 r-xp 00000000 08:30 630683 /lib/x86_64-linux-gnu/ld-2.27.so 7f8030e86000-7f8030eaa000 r--s 00000000 08:30 630835 /lib/x86_64-linux-gnu/libpthread-2.27.so 7f8030eaa000-7f8030ed9000 r--s 00000000 08:30 1094561 /home/sh/.rbenv/versions/2.7.0/bin/ruby 7f8030ed9000-7f8030fde000 rw-p 00000000 00:00 0 7f8031000000-7f8031007000 r--s 00000000 08:30 130054 /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache 7f8031007000-7f8031009000 rw-p 00000000 00:00 0 7f8031009000-7f803100a000 r--p 00027000 08:30 630683 /lib/x86_64-linux-gnu/ld-2.27.so 7f803100a000-7f803100b000 rw-p 00028000 08:30 630683 /lib/x86_64-linux-gnu/ld-2.27.so 7f803100b000-7f803100c000 rw-p 00000000 00:00 0 7ffc359de000-7ffc361dd000 rw-p 00000000 00:00 0 [stack] 7ffc361ed000-7ffc361f0000 r--p 00000000 00:00 0 [vvar] 7ffc361f0000-7ffc361f2000 r-xp 00000000 00:00 0 [vdso] 中止
原因
おそらく、_1
がメソッドと解釈されているのが原因くさい。
ちなみに、masterでは以下のようなエラーになる
sh@MyComputer:~/rubydev/bugs$ ruby -e "[1, 2, 3, 4].map{ _1 **3 }" -e:1:in `block in <main>': no implicit conversion of Integer into Hash (TypeError) from -e:1:in `map' from -e:1:in `<main>'
このことから_1
がメソッドと解釈されていることが分かる。
なぜかと言えば、**3
がキーワード引数としてメソッドに渡されていると解釈されているためだ。
ちなみに_1
と**3
との間にあるスペースを取り除くと意図したとおりに動作する。
sh@MyComputer:~/rubydev/bugs$ ruby -e "p [1, 2, 3, 4].map{ _1**3 }" [1, 8, 27, 64]
また、_1.**3
でも同様に動作する(メソッド呼び出しと解釈されるため)
sh@MyComputer:~/rubydev/bugs$ ruby -e "p [1, 2, 3, 4].map{ _1.**3 }" [1, 8, 27, 64]
まとめ
とりあえず、Ruby 2.7 でSEGVするのはまずいのでチケットを作っておこうかと思う。
あと、パッチが作れないかコードを読んでいこうかな(多分、pase.yとか読まなきゃだろうしで怖い……)