From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: poffice@blade.nagaokaut.ac.jp Delivered-To: poffice@blade.nagaokaut.ac.jp Received: from kankan.nagaokaut.ac.jp (kankan.nagaokaut.ac.jp [133.44.2.24]) by blade.nagaokaut.ac.jp (Postfix) with ESMTP id 45F0E1AC001E for ; Thu, 11 Aug 2016 23:03:44 +0900 (JST) Received: from voscc.nagaokaut.ac.jp (voscc.nagaokaut.ac.jp [133.44.1.100]) by kankan.nagaokaut.ac.jp (Postfix) with ESMTP id DC6C1B5D8B1 for ; Thu, 11 Aug 2016 23:37:05 +0900 (JST) Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by voscc.nagaokaut.ac.jp (Postfix) with ESMTP id B083F18CC81C for ; Thu, 11 Aug 2016 23:37:06 +0900 (JST) Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id A4FBE12047A; Thu, 11 Aug 2016 23:37:06 +0900 (JST) X-Original-To: ruby-core@ruby-lang.org Delivered-To: ruby-core@ruby-lang.org Received: from o10.shared.sendgrid.net (o10.shared.sendgrid.net [173.193.132.135]) by neon.ruby-lang.org (Postfix) with ESMTPS id 020C412045C for ; Thu, 11 Aug 2016 23:37:02 +0900 (JST) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sendgrid.me; h=from:to:references:subject:mime-version:content-type:content-transfer-encoding:list-id; s=smtpapi; bh=qf2J83GW2DSSBeChe5/K8Z7aT24=; b=RJql/VDHZkjY9qdU6C hJ96n2TGDA3ecdEdynEaQAQXuxIJQoQlZ9LSwMtDMHzgUqsvw1jy8RT4KC/yUOU+ lji1K8lY7T4GxyvHLQKDN7reSoI7sAfyYmE1T9dKGO+7GsY0r06iMOvJhMlT0PA8 REgbDqZ/inWJqvFhtDlV8Cwp8= Received: by filter0533p1mdw1.sendgrid.net with SMTP id filter0533p1mdw1.27997.57AC8D6D1 2016-08-11 14:36:29.004823018 +0000 UTC Received: from herokuapp.com (ec2-54-80-56-62.compute-1.amazonaws.com [54.80.56.62]) by ismtpd0001p1iad1.sendgrid.net (SG) with ESMTP id dubbvhhLQWqoAXRgStKBLQ Thu, 11 Aug 2016 14:36:29.039 +0000 (UTC) Date: Thu, 11 Aug 2016 14:36:29 +0000 From: s.wanabe@gmail.com To: ruby-core@ruby-lang.org Message-ID: References: Mime-Version: 1.0 X-Redmine-MailingListIntegration-Message-Ids: 51612 X-Redmine-Project: ruby-trunk X-Redmine-Issue-Id: 11846 X-Redmine-Issue-Author: kou X-Redmine-Sender: wanabe X-Mailer: Redmine X-Redmine-Host: bugs.ruby-lang.org X-Redmine-Site: Ruby Issue Tracking System X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-SG-EID: ync6xU2WACa70kv/Ymy4QrNMhiuLXJG8OTL2vJD1yS723h/bJ30O2ys0pmjcuz36/ncoYf3JB1xNWQ 4gmFfdVMNJGxzDRYf/JaeNandkfOH3Bh0c5WPQ+Jc1opanjhadX7SnWkO2cAsNv9V4GLf/KnnhhTBu QYy4dnXJzlJxuCr2bbjRAiA7hNilhYu7jc3nnBDtw/TK1aP9EjyFZSpRnQ== X-ML-Name: ruby-core X-Mail-Count: 76838 Subject: [ruby-core:76838] [Ruby trunk Bug#11846] Block passed by &block is GC-ed X-BeenThere: ruby-core@ruby-lang.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Ruby developers List-Id: Ruby developers List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" Issue #11846 has been updated by _ wanabe. I guess this is a same problem with #11750 suggested by `git bisect`. If so, it is since r51243 and fixed at r53144. According to git informatin of Github, r51243 == https://github.com/ruby/ruby/commit/a82ce7c55626086ad264a0d26de63b7603956de9 is in v2_3_0_preview1 and later, r53144 == https://github.com/ruby/ruby/commit/5dc676a5cf6b7201f78e4622c0aad4982f4e3db0 is in v2_3_0 and later. ---------------------------------------- Bug #11846: Block passed by &block is GC-ed https://bugs.ruby-lang.org/issues/11846#change-60062 * Author: Kouhei Sutou * Status: Open * Priority: Normal * Assignee: * ruby -v: ruby 2.3.0preview2 (2015-12-11 trunk 53028) [x86_64-linux] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- The following script is crashed with ruby 2.3.0preview2: ```ruby GC.start def a lambda do yield end end def b(&block) a(&block) end def proc_sources sources = [] ObjectSpace.each_object(Proc) do |proc| sources << proc.source_location.join(":") end sources end c = b {p 1} old_proc_sources = proc_sources GC.start new_proc_sources = proc_sources p(old_proc_sources - new_proc_sources) c.call ``` Because passed block (`{p 1}`) at the following line is GC-ed: ```ruby c = b {p 1} ``` ```text % /tmp/local/bin/ruby -v /tmp/a.rb ruby 2.3.0preview2 (2015-12-11 trunk 53028) [x86_64-linux] ["/tmp/a.rb:21"] /tmp/a.rb:21: [BUG] Segmentation fault at 0x00000000000020 ruby 2.3.0preview2 (2015-12-11 trunk 53028) [x86_64-linux] -- Control frame information ----------------------------------------------- c:0004 p:0009 s:0013 e:000010 LAMBDA /tmp/a.rb:21 c:0003 p:0006 s:0009 e:000008 LAMBDA /tmp/a.rb:5 [FINISH] c:0002 p:0108 s:0007 E:000098 EVAL /tmp/a.rb:28 [FINISH] c:0001 p:0000 s:0002 E:002490 (none) [FINISH] -- Ruby level backtrace information ---------------------------------------- /tmp/a.rb:28:in `
' /tmp/a.rb:5:in `block in a' /tmp/a.rb:21:in `block in
' -- Machine register context ------------------------------------------------ RIP: 0x000055c7ce5b0390 RBP: 0x00007ffc593be9b0 RSP: 0x00007ffc593be998 RAX: 0x0000000000000020 RBX: 0x0000000000000001 RCX: 0x0000000000003b21 RDX: 0x00007ffc593be9d0 RDI: 0x0000000000000020 RSI: 0x0000000000003b21 R8: 0x000055c7cf429c31 R9: 0x0000000000000000 R10: 0x00000000000000a1 R11: 0x0000000000000002 R12: 0x000055c7ce4bf730 R13: 0x00007ffc593c1310 R14: 0x000055c7cf6d97b8 R15: 0x00007f82e0ed4f10 EFL: 0x0000000000010212 -- C level backtrace information ------------------------------------------- /tmp/local/bin/ruby(rb_print_backtrace+0x19) [0x55c7ce6198d7] vm_dump.c:688 /tmp/local/bin/ruby(rb_vm_bugreport+0xa9) [0x55c7ce619d4a] vm_dump.c:997 /tmp/local/bin/ruby(rb_bug_context+0x114) [0x55c7ce6758fe] error.c:423 /tmp/local/bin/ruby(sigsegv+0x5e) [0x55c7ce580b9c] signal.c:890 /lib/x86_64-linux-gnu/libpthread.so.0 [0x7f82e0ae2670] /tmp/local/bin/ruby(rb_id_table_lookup+0x18) [0x55c7ce5b0390] id_table.c:1516 /tmp/local/bin/ruby(lookup_method_table+0x33) [0x55c7ce60907d] vm_method.c:189 /tmp/local/bin/ruby(search_method+0x31) [0x55c7ce60a247] vm_method.c:679 /tmp/local/bin/ruby(method_entry_get_without_cache+0x2b) [0x55c7ce60a2d4] vm_method.c:704 /tmp/local/bin/ruby(method_entry_get+0xb8) [0x55c7ce60a46f] vm_method.c:764 /tmp/local/bin/ruby(rb_callable_method_entry+0x27) [0x55c7ce60a592] vm_method.c:809 /tmp/local/bin/ruby(vm_search_method+0x78) [0x55c7ce5faf91] vm_insnhelper.c:1132 /tmp/local/bin/ruby(vm_exec_core+0x253c) [0x55c7ce603918] insns.def:994 /tmp/local/bin/ruby(vm_exec+0xe4) [0x55c7ce614e25] vm.c:1637 /tmp/local/bin/ruby(invoke_block+0xd2) [0x55c7ce612dda] vm.c:911 /tmp/local/bin/ruby(invoke_block_from_c_0+0x208) [0x55c7ce613196] vm.c:961 /tmp/local/bin/ruby(invoke_block_from_c_unsplattable+0x49) [0x55c7ce613282] vm.c:986 /tmp/local/bin/ruby(vm_invoke_proc+0x147) [0x55c7ce613527] vm.c:1034 /tmp/local/bin/ruby(rb_vm_invoke_proc+0x7e) [0x55c7ce613658] vm.c:1062 /tmp/local/bin/ruby(vm_call_opt_call+0x15c) [0x55c7ce5ff656] vm_insnhelper.c:1935 /tmp/local/bin/ruby(vm_call_method_each_type+0x375) [0x55c7ce5fff5f] vm_insnhelper.c:2128 /tmp/local/bin/ruby(vm_call_method+0x77) [0x55c7ce600333] vm_insnhelper.c:2215 /tmp/local/bin/ruby(vm_call_general+0x3b) [0x55c7ce600509] vm_insnhelper.c:2258 /tmp/local/bin/ruby(vm_exec_core+0x256e) [0x55c7ce60394a] insns.def:995 /tmp/local/bin/ruby(vm_exec+0xe4) [0x55c7ce614e25] vm.c:1637 /tmp/local/bin/ruby(rb_iseq_eval_main+0x36) [0x55c7ce615a70] vm.c:1880 /tmp/local/bin/ruby(ruby_exec_internal+0x135) [0x55c7ce4c1d4b] eval.c:244 /tmp/local/bin/ruby(ruby_exec_node+0x24) [0x55c7ce4c1e74] eval.c:309 /tmp/local/bin/ruby(ruby_run_node+0x3e) [0x55c7ce4c1e47] eval.c:301 /tmp/local/bin/ruby(main+0x5d) [0x55c7ce4bf8bd] main.c:36 -- Other runtime information ----------------------------------------------- * Loaded script: /tmp/a.rb * Loaded features: 0 enumerator.so 1 thread.rb 2 rational.so 3 complex.so 4 /tmp/local/lib/ruby/2.3.0/x86_64-linux/enc/encdb.so 5 /tmp/local/lib/ruby/2.3.0/x86_64-linux/enc/trans/transdb.so 6 /tmp/local/lib/ruby/2.3.0/unicode_normalize.rb 7 /tmp/local/lib/ruby/2.3.0/x86_64-linux/rbconfig.rb 8 /tmp/local/lib/ruby/2.3.0/rubygems/compatibility.rb 9 /tmp/local/lib/ruby/2.3.0/rubygems/defaults.rb 10 /tmp/local/lib/ruby/2.3.0/rubygems/deprecate.rb 11 /tmp/local/lib/ruby/2.3.0/rubygems/errors.rb 12 /tmp/local/lib/ruby/2.3.0/rubygems/version.rb 13 /tmp/local/lib/ruby/2.3.0/rubygems/requirement.rb 14 /tmp/local/lib/ruby/2.3.0/rubygems/platform.rb 15 /tmp/local/lib/ruby/2.3.0/rubygems/basic_specification.rb 16 /tmp/local/lib/ruby/2.3.0/rubygems/stub_specification.rb 17 /tmp/local/lib/ruby/2.3.0/rubygems/util/list.rb 18 /tmp/local/lib/ruby/2.3.0/x86_64-linux/stringio.so 19 /tmp/local/lib/ruby/2.3.0/rubygems/specification.rb 20 /tmp/local/lib/ruby/2.3.0/rubygems/exceptions.rb 21 /tmp/local/lib/ruby/2.3.0/rubygems/core_ext/kernel_gem.rb 22 /tmp/local/lib/ruby/2.3.0/monitor.rb 23 /tmp/local/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb 24 /tmp/local/lib/ruby/2.3.0/rubygems.rb 25 /tmp/local/lib/ruby/2.3.0/rubygems/path_support.rb 26 /tmp/local/lib/ruby/2.3.0/rubygems/dependency.rb 27 /tmp/local/lib/ruby/gems/2.3.0/gems/did_you_mean-1.0.0.rc1/lib/did_you_mean/version.rb 28 /tmp/local/lib/ruby/gems/2.3.0/gems/did_you_mean-1.0.0.rc1/lib/did_you_mean/core_ext/name_error.rb 29 /tmp/local/lib/ruby/gems/2.3.0/gems/did_you_mean-1.0.0.rc1/lib/did_you_mean/levenshtein.rb 30 /tmp/local/lib/ruby/gems/2.3.0/gems/did_you_mean-1.0.0.rc1/lib/did_you_mean/jaro_winkler.rb 31 /tmp/local/lib/ruby/gems/2.3.0/gems/did_you_mean-1.0.0.rc1/lib/did_you_mean/spell_checkable.rb 32 /tmp/local/lib/ruby/2.3.0/delegate.rb 33 /tmp/local/lib/ruby/gems/2.3.0/gems/did_you_mean-1.0.0.rc1/lib/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb 34 /tmp/local/lib/ruby/gems/2.3.0/gems/did_you_mean-1.0.0.rc1/lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb 35 /tmp/local/lib/ruby/gems/2.3.0/gems/did_you_mean-1.0.0.rc1/lib/did_you_mean/spell_checkers/name_error_checkers.rb 36 /tmp/local/lib/ruby/gems/2.3.0/gems/did_you_mean-1.0.0.rc1/lib/did_you_mean/spell_checkers/method_name_checker.rb 37 /tmp/local/lib/ruby/gems/2.3.0/gems/did_you_mean-1.0.0.rc1/lib/did_you_mean/spell_checkers/null_checker.rb 38 /tmp/local/lib/ruby/gems/2.3.0/gems/did_you_mean-1.0.0.rc1/lib/did_you_mean/formatter.rb 39 /tmp/local/lib/ruby/gems/2.3.0/gems/did_you_mean-1.0.0.rc1/lib/did_you_mean.rb * Process memory map: 55c7ce49d000-55c7ce76c000 r-xp 00000000 08:01 7870884 /tmp/local/bin/ruby 55c7ce96c000-55c7ce972000 rw-p 002cf000 08:01 7870884 /tmp/local/bin/ruby 55c7ce972000-55c7ce984000 rw-p 00000000 00:00 0 55c7cf2b8000-55c7cf6ea000 rw-p 00000000 00:00 0 [heap] 7f82deb7a000-7f82ded1c000 r--s 00000000 08:01 3670782 /lib/x86_64-linux-gnu/libc-2.21.so 7f82ded1c000-7f82df2d1000 r--s 00000000 08:01 7870884 /tmp/local/bin/ruby 7f82df2d1000-7f82df2e7000 r-xp 00000000 08:01 3670262 /lib/x86_64-linux-gnu/libgcc_s.so.1 7f82df2e7000-7f82df4e6000 ---p 00016000 08:01 3670262 /lib/x86_64-linux-gnu/libgcc_s.so.1 7f82df4e6000-7f82df4e7000 rw-p 00015000 08:01 3670262 /lib/x86_64-linux-gnu/libgcc_s.so.1 7f82df4e7000-7f82df4ef000 r-xp 00000000 08:01 8396063 /tmp/local/lib/ruby/2.3.0/x86_64-linux/stringio.so 7f82df4ef000-7f82df6ee000 ---p 00008000 08:01 8396063 /tmp/local/lib/ruby/2.3.0/x86_64-linux/stringio.so 7f82df6ee000-7f82df6ef000 rw-p 00007000 08:01 8396063 /tmp/local/lib/ruby/2.3.0/x86_64-linux/stringio.so 7f82df6ef000-7f82df6f1000 r-xp 00000000 08:01 9577347 /tmp/local/lib/ruby/2.3.0/x86_64-linux/enc/trans/transdb.so 7f82df6f1000-7f82df8f1000 ---p 00002000 08:01 9577347 /tmp/local/lib/ruby/2.3.0/x86_64-linux/enc/trans/transdb.so 7f82df8f1000-7f82df8f2000 rw-p 00002000 08:01 9577347 /tmp/local/lib/ruby/2.3.0/x86_64-linux/enc/trans/transdb.so 7f82df8f2000-7f82df8f4000 r-xp 00000000 08:01 9577366 /tmp/local/lib/ruby/2.3.0/x86_64-linux/enc/encdb.so 7f82df8f4000-7f82dfaf3000 ---p 00002000 08:01 9577366 /tmp/local/lib/ruby/2.3.0/x86_64-linux/enc/encdb.so 7f82dfaf3000-7f82dfaf4000 rw-p 00001000 08:01 9577366 /tmp/local/lib/ruby/2.3.0/x86_64-linux/enc/encdb.so 7f82dfaf4000-7f82dfd6b000 r--p 00000000 08:01 13107345 /usr/lib/locale/locale-archive 7f82dfd6b000-7f82dff05000 r-xp 00000000 08:01 3670782 /lib/x86_64-linux-gnu/libc-2.21.so 7f82dff05000-7f82e0105000 ---p 0019a000 08:01 3670782 /lib/x86_64-linux-gnu/libc-2.21.so 7f82e0105000-7f82e0109000 r--p 0019a000 08:01 3670782 /lib/x86_64-linux-gnu/libc-2.21.so 7f82e0109000-7f82e010b000 rw-p 0019e000 08:01 3670782 /lib/x86_64-linux-gnu/libc-2.21.so 7f82e010b000-7f82e010f000 rw-p 00000000 00:00 0 7f82e010f000-7f82e0212000 r-xp 00000000 08:01 3672049 /lib/x86_64-linux-gnu/libm-2.21.so 7f82e0212000-7f82e0412000 ---p 00103000 08:01 3672049 /lib/x86_64-linux-gnu/libm-2.21.so 7f82e0412000-7f82e0413000 r--p 00103000 08:01 3672049 /lib/x86_64-linux-gnu/libm-2.21.so 7f82e0413000-7f82e0414000 rw-p 00104000 08:01 3672049 /lib/x86_64-linux-gnu/libm-2.21.so 7f82e0414000-7f82e041c000 r-xp 00000000 08:01 3670802 /lib/x86_64-linux-gnu/libcrypt-2.21.so 7f82e041c000-7f82e061b000 ---p 00008000 08:01 3670802 /lib/x86_64-linux-gnu/libcrypt-2.21.so 7f82e061b000-7f82e061c000 r--p 00007000 08:01 3670802 /lib/x86_64-linux-gnu/libcrypt-2.21.so 7f82e061c000-7f82e061d000 rw-p 00008000 08:01 3670802 /lib/x86_64-linux-gnu/libcrypt-2.21.so 7f82e061d000-7f82e064b000 rw-p 00000000 00:00 0 7f82e064b000-7f82e064d000 r-xp 00000000 08:01 3670804 /lib/x86_64-linux-gnu/libdl-2.21.so 7f82e064d000-7f82e084d000 ---p 00002000 08:01 3670804 /lib/x86_64-linux-gnu/libdl-2.21.so 7f82e084d000-7f82e084e000 r--p 00002000 08:01 3670804 /lib/x86_64-linux-gnu/libdl-2.21.so 7f82e084e000-7f82e084f000 rw-p 00003000 08:01 3670804 /lib/x86_64-linux-gnu/libdl-2.21.so 7f82e084f000-7f82e08d1000 r-xp 00000000 08:01 13107704 /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.0 7f82e08d1000-7f82e0ad0000 ---p 00082000 08:01 13107704 /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.0 7f82e0ad0000-7f82e0ad1000 r--p 00081000 08:01 13107704 /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.0 7f82e0ad1000-7f82e0ad2000 rw-p 00082000 08:01 13107704 /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.0 7f82e0ad2000-7f82e0aea000 r-xp 00000000 08:01 3670245 /lib/x86_64-linux-gnu/libpthread-2.21.so 7f82e0aea000-7f82e0ce9000 ---p 00018000 08:01 3670245 /lib/x86_64-linux-gnu/libpthread-2.21.so 7f82e0ce9000-7f82e0cea000 r--p 00017000 08:01 3670245 /lib/x86_64-linux-gnu/libpthread-2.21.so 7f82e0cea000-7f82e0ceb000 rw-p 00018000 08:01 3670245 /lib/x86_64-linux-gnu/libpthread-2.21.so 7f82e0ceb000-7f82e0cef000 rw-p 00000000 00:00 0 7f82e0cef000-7f82e0d11000 r-xp 00000000 08:01 3670248 /lib/x86_64-linux-gnu/ld-2.21.so 7f82e0dd5000-7f82e0edb000 rw-p 00000000 00:00 0 7f82e0ee0000-7f82e0ee1000 rw-p 00000000 00:00 0 7f82e0ee1000-7f82e0f02000 r--s 00000000 08:01 3670245 /lib/x86_64-linux-gnu/libpthread-2.21.so 7f82e0f02000-7f82e0f09000 r--s 00000000 08:01 13147175 /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache 7f82e0f09000-7f82e0f0a000 rw-p 00000000 00:00 0 7f82e0f0a000-7f82e0f0b000 ---p 00000000 00:00 0 7f82e0f0b000-7f82e0f10000 rw-p 00000000 00:00 0 [stack:23579] 7f82e0f10000-7f82e0f11000 r--p 00021000 08:01 3670248 /lib/x86_64-linux-gnu/ld-2.21.so 7f82e0f11000-7f82e0f12000 rw-p 00022000 08:01 3670248 /lib/x86_64-linux-gnu/ld-2.21.so 7f82e0f12000-7f82e0f13000 rw-p 00000000 00:00 0 7ffc58bc4000-7ffc593c3000 rw-p 00000000 00:00 0 7ffc593ca000-7ffc593cc000 r--p 00000000 00:00 0 [vvar] 7ffc593cc000-7ffc593ce000 r-xp 00000000 00:00 0 [vdso] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] [NOTE] You may have encountered a bug in the Ruby interpreter or extension libraries. Bug reports are welcome. For details: http://www.ruby-lang.org/bugreport.html ``` -- https://bugs.ruby-lang.org/