From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on starla X-Spam-Level: X-Spam-Status: No, score=-1.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 Received: from nue.mailmanlists.eu (nue.mailmanlists.eu [94.130.110.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id A0F981F4CC for ; Sun, 15 Dec 2024 07:16:32 +0000 (UTC) Authentication-Results: dcvr.yhbt.net; dkim=pass (1024-bit key; unprotected) header.d=ml.ruby-lang.org header.i=@ml.ruby-lang.org header.a=rsa-sha256 header.s=mail header.b=KhT4LEjE; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ruby-lang.org header.i=@ruby-lang.org header.a=rsa-sha256 header.s=s1 header.b=h4E/Mb53; dkim-atps=neutral DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ml.ruby-lang.org; s=mail; t=1734246960; bh=2qzmGvRtHXtBXKdt0a7/UgcqMCwjszikumvDKmo1OXg=; h=Date:References:To:Reply-To:Subject:List-Id:List-Archive: List-Help:List-Owner:List-Post:List-Subscribe:List-Unsubscribe: From:Cc:From; b=KhT4LEjELadwSjdZFRCneQhcZUcEAWR2gS/kWnZ1yW5TfcGYXwNNAqBpl63nbiyd1 iYuKInK6DTYMCuZmGiR6CN9x42Y4aAqUX1900DnCD+tdxrcRKMFGjnrHZ3DphVUqhD rmhYI+Ax3ycUNF02hAcrDA+UM+Qb30lQEYJwIaFQ= Received: from nue.mailmanlists.eu (localhost [IPv6:::1]) by nue.mailmanlists.eu (Postfix) with ESMTP id 724C445F9E for ; Sun, 15 Dec 2024 07:16:00 +0000 (UTC) Authentication-Results: nue.mailmanlists.eu; dkim=pass (2048-bit key; unprotected) header.d=ruby-lang.org header.i=@ruby-lang.org header.a=rsa-sha256 header.s=s1 header.b=h4E/Mb53; dkim-atps=neutral Received: from s.wrqvwxzv.outbound-mail.sendgrid.net (s.wrqvwxzv.outbound-mail.sendgrid.net [149.72.154.232]) by nue.mailmanlists.eu (Postfix) with ESMTPS id 2D82044EE5 for ; Sun, 15 Dec 2024 07:14:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ruby-lang.org; h=from:references:subject:mime-version:content-type: content-transfer-encoding:list-id:to:cc:content-type:from:subject:to; s=s1; bh=cbwACLzJJ7xv8fN2iyRXqxcT6DXRLOQXAfWzwWBt5VU=; b=h4E/Mb53sBGe2M33N8UNDhHoFbbgNmaDpQtOheAFoa8AbUUCLZLpLitgwk9luDvtzCc1 zdbS5FUsirNe6twGtnExMg/GLJvwUnhC9RoH/4h+ievzcr4DkgKkQksKoZFGHpUFQqLGmp Dy8vJGB9f+3aNTLRNil2AlIl4Bg1XDcdErz7UdYtUhwDuC7eN9cbBocGkaWv3n74e8fJwj lUqXYAStTy1C38kmPH+LSBfg3SUK41TqTMKI5mBjFO5BrcKc6oiv1cDvenfQlMyUxJ/jLw doHcyy9c0n4e/gzPqw4MQ6GdVHDjPuXNfuIbkk0j/GhcSkuZc2hCW5Krzn028gzw== Received: by recvd-5c8ccdbd88-kdnxn with SMTP id recvd-5c8ccdbd88-kdnxn-1-675E81EE-7 2024-12-15 07:14:54.275331404 +0000 UTC m=+2627580.390313298 Received: from herokuapp.com (unknown) by geopod-ismtpd-4 (SG) with ESMTP id eincKZcIQwKi8utFyQjmGg for ; Sun, 15 Dec 2024 07:14:54.253 +0000 (UTC) Date: Sun, 15 Dec 2024 07:14:54 +0000 (UTC) Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Bug X-Redmine-Issue-Id: 20915 X-Redmine-Issue-Author: viralpraxis X-Redmine-Issue-Priority: Normal X-Redmine-Sender: nagachika 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-Redmine-MailingListIntegration-Message-Ids: 96922 X-SG-EID: =?us-ascii?Q?u001=2E44VQVH0G4ktThU9FFZyDXb=2FoLGKi0xg3KhKXpO+IAEE5wRGZS=2FaUmrCxU?= =?us-ascii?Q?vRSr0kI+o91vm0PKZJNpskxVPGLEUY0z2=2FFYkjb?= =?us-ascii?Q?KjL91GsNRUCp9eTyANC0Y2uXDMbOKYUOjL9ILiW?= =?us-ascii?Q?kt9AunKkJrOu=2FYQV235suVq2Mqb7oiajyYTByJp?= =?us-ascii?Q?QRbagSqLI2jeXsIFJ2bmuud+M9IUNKUZ4leTKwx?= =?us-ascii?Q?6NKYlZAiGuwtvpt0aLxazUzJeDNsjKxRL4s+m4I?= =?us-ascii?Q?DeGrHruOTcX42MaKE+OWUEq9CQ=3D=3D?= To: ruby-core@ml.ruby-lang.org X-Entity-ID: u001.I8uzylDtAfgbeCOeLBYDww== Message-ID-Hash: 6VOHXU2NNPENZ2MLWSYOL7SMIZL6NSBO X-Message-ID-Hash: 6VOHXU2NNPENZ2MLWSYOL7SMIZL6NSBO X-MailFrom: bounces+313651-b711-ruby-core=ml.ruby-lang.org@em5188.ruby-lang.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.9 Precedence: list Reply-To: Ruby developers Subject: [ruby-core:120245] [Ruby master Bug#20915] Segfault with `TracePoint#parameters` and aliased C method List-Id: Ruby developers Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: "nagachika (Tomoyuki Chikanaga) via ruby-core" Cc: "nagachika (Tomoyuki Chikanaga)" Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Issue #20915 has been updated by nagachika (Tomoyuki Chikanaga). Backport changed from 3.1: WONTFIX, 3.2: REQUIRED, 3.3: REQUIRED to 3.1: WONTFIX, 3.2: DONE, 3.3: REQUIRED ruby_3_2 commit:303a83d35c485db626c57415b344fdd4a8d0d5e5 merged revision(s) commit:660b995365f719fa59ed6f2809bb1527e6470d14. ---------------------------------------- Bug #20915: Segfault with `TracePoint#parameters` and aliased C method https://bugs.ruby-lang.org/issues/20915#change-111013 * Author: viralpraxis (Iaroslav Kurbatov) * Status: Closed * ruby -v: 3.3.6 * Backport: 3.1: WONTFIX, 3.2: DONE, 3.3: REQUIRED ---------------------------------------- I'm getting a segfault in the following example ```ruby C = Class.new do alias_method :new_to_s, :to_s end TracePoint.new(:c_call, &:parameters).enable { C.new.new_to_s } ``` Proposed fix: https://github.com/ruby/ruby/pull/12186 Ruby: `MRI 3.3.6`, also `ruby 3.4.0dev (2024-11-27T19:36:50Z master 7dd2afbe3a) +PRISM [x86_64-linux]` The root cause of the issue lies in the `rb_tracearg_parameters` function within the `RUBY_EVENT_C_RETURN` branch. Specifically, when the invoked method is an alias for a C function, `rb_method_entry_without_refinements(..., trace_arg->called_id, ...)` may return NULL. In that case we can fallback to `trace_arg->id`. Some additional context: before https://github.com/ruby/ruby/commit/837ef8911c638c3e2bdb6af710de7c1fac7b5f90 this code path used single `trace_arg->id` lookup, and the commit changed it to `trace_arg->called_id`. So we have to make both lookups to handle all edge cases. Output: ``` [BUG] Segmentation fault at 0x0000000000000010 ruby 3.4.0dev (2024-11-27T19:36:50Z master 7dd2afbe3a) +PRISM [x86_64-linux] -- Control frame information ----------------------------------------------- c:0005 p:0003 s:0022 e:000021 METHOD :333 [FINISH] c:0004 p:0006 s:0018 e:000016 BLOCK test.rb:5 [FINISH] c:0003 p:0003 s:0014 e:000013 METHOD :265 c:0002 p:0021 s:0006 e:000005 EVAL test.rb:5 [FINISH] c:0001 p:0000 s:0003 E:001470 DUMMY [FINISH] -- Ruby level backtrace information ---------------------------------------- test.rb:5:in '
' :265:in 'enable' test.rb:5:in 'block in
' :333:in 'parameters' -- Threading information --------------------------------------------------- Total ractor count: 1 Ruby thread count for this ractor: 1 -- Machine register context ------------------------------------------------ RIP: 0x0000609a79ce6f16 RBP: 0x00007ffd98dc9030 RSP: 0x00007ffd98dc9020 RAX: 0x0000000000000000 RBX: 0x0000609a7b40bdf0 RCX: 0x000000000000b6d1 RDX: 0x0000000000000000 RDI: 0x0000000000000000 RSI: 0x0000000000000b6d R8: 0x0000000000000000 R9: 0x000076e90ee24aa0 R10: 0x0000000000000001 R11: 0x0000000000000010 R12: 0x0000000000000002 R13: 0x0000000000000000 R14: 0x0000609a7b40be08 R15: 0x000076e90effeef8 EFL: 0x0000000000010202 -- C level backtrace information ------------------------------------------- ./ruby(0x609a79e219f7) [0x609a79e219f7] ./ruby(0x609a79e2214b) [0x609a79e2214b] ./ruby(0x609a7a02e998) [0x609a7a02e998] ./ruby(0x609a79d61811) [0x609a79d61811] /lib/x86_64-linux-gnu/libc.so.6(0x76e90f845320) [0x76e90f845320] ./ruby(0x609a79ce6f16) [0x609a79ce6f16] ./ruby(rb_tracearg_parameters+0x1a1) [0x609a79e25db2] /home/viralpraxis/Documents/open_source/ruby/vm_trace.c:943 ./ruby(tracepoint_attr_parameters+0x21) [0x609a79e26252] /home/viralpraxis/Documents/open_source/ruby/vm_trace.c:1121 ./ruby(0x609a79df8f0b) [0x609a79df8f0b] ./ruby(0x609a79df9904) [0x609a79df9904] ./ruby(0x609a79df9983) [0x609a79df9983] ./ruby(0x609a79e0147e) [0x609a79e0147e] ./ruby(0x609a79e15d9c) [0x609a79e15d9c] ./ruby(0x609a79e09991) [0x609a79e09991] ./ruby(0x609a79e091bd) [0x609a79e091bd] ./ruby(0x609a79e0ad1f) [0x609a79e0ad1f] ./ruby(0x609a79e0ba2b) [0x609a79e0ba2b] ./ruby(rb_funcall_with_block_kw) [0x609a79e0c7ef] ./ruby(0x609a79d8d877) [0x609a79d8d877] ./ruby(0x609a79df3832) [0x609a79df3832] ./ruby(0x609a79e13238) [0x609a79e13238] ./ruby(0x609a79e13888) [0x609a79e13888] ./ruby(rb_proc_call_with_block_kw) [0x609a79ce3b6a] ./ruby(rb_proc_call_with_block) [0x609a79ce3bcf] ./ruby(tp_call_trace+0x8d) [0x609a79e2641c] /home/viralpraxis/Documents/open_source/ruby/vm_trace.c:1188 ./ruby(exec_hooks_body+0x114) [0x609a79e245d7] /home/viralpraxis/Documents/open_source/ruby/vm_trace.c:354 ./ruby(exec_hooks_protected+0x166) [0x609a79e24838] /home/viralpraxis/Documents/open_source/ruby/vm_trace.c:401 ./ruby(rb_exec_event_hooks+0x12d) [0x609a79e249e2] /home/viralpraxis/Documents/open_source/ruby/vm_trace.c:446 ./ruby(0x609a79ddbefe) [0x609a79ddbefe] ./ruby(0x609a79deef34) [0x609a79deef34] ./ruby(0x609a79def260) [0x609a79def260] ./ruby(0x609a79def38d) [0x609a79def38d] ./ruby(0x609a79def7d4) [0x609a79def7d4] ./ruby(0x609a79df243b) [0x609a79df243b] ./ruby(0x609a79df0646) [0x609a79df0646] ./ruby(0x609a79df2c0d) [0x609a79df2c0d] ./ruby(0x609a79df2ee7) [0x609a79df2ee7] ./ruby(0x609a79df30e9) [0x609a79df30e9] ./ruby(0x609a79df580a) [0x609a79df580a] ./ruby(0x609a79dfd8dd) [0x609a79dfd8dd] ./ruby(0x609a79e15d9c) [0x609a79e15d9c] ./ruby(0x609a79e12a8c) [0x609a79e12a8c] ./ruby(0x609a79e12c48) [0x609a79e12c48] ./ruby(0x609a79e12c86) [0x609a79e12c86] ./ruby(0x609a79e0cc8c) [0x609a79e0cc8c] ./ruby(rb_yield) [0x609a79e0cce0] ./ruby(rb_ensure) [0x609a79c20ea4] ./ruby(tracepoint_enable_m+0x1a5) [0x609a79e26c05] /home/viralpraxis/Documents/open_source/ruby/vm_trace.c:1414 ./ruby(0x609a79df8fd7) [0x609a79df8fd7] ./ruby(0x609a79df9904) [0x609a79df9904] ./ruby(0x609a79df99d1) [0x609a79df99d1] ./ruby(0x609a79e01583) [0x609a79e01583] ./ruby(0x609a79e15d9c) [0x609a79e15d9c] ./ruby(rb_iseq_eval_main) [0x609a79e16bcb] ./ruby(0x609a79c1f112) [0x609a79c1f112] ./ruby(ruby_run_node) [0x609a79c1f283] ./ruby(0x609a79c1aae4) [0x609a79c1aae4] ./ruby(0x609a79c1ab45) [0x609a79c1ab45] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_call_main+0x7a) [0x76e90f82a1ca] ../sysdeps/nptl/libc_start_call_main.h:58 /lib/x86_64-linux-gnu/libc.so.6(call_init+0x0) [0x76e90f82a28b] ../csu/libc-start.c:360 /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main_impl) ../csu/libc-start.c:347 /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main) (null):0 [0x609a79c1a9c5] -- Other runtime information ----------------------------------------------- * Loaded script: test.rb * Loaded features: 0 enumerator.so 1 thread.rb 2 fiber.so 3 rational.so 4 complex.so 5 ruby2_keywords.rb ``` -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/