ml.ruby-lang.org
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

ruby-dev

Thread Start a new thread
Download
Threads by month
  • ----- 2025 -----
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
ruby-dev@ml.ruby-lang.org

March 2025

  • 1 participants
  • 1 discussions
[ruby-dev:52153] [Ruby master Bug#21165] 引数なしで起動するとSegmentatino Fault
by taca (Takahiro Kambe) 02 Mar '25

02 Mar '25
Issue #21165 has been reported by taca (Takahiro Kambe). ---------------------------------------- Bug #21165: 引数なしで起動するとSegmentatino Fault https://bugs.ruby-lang.org/issues/21165 * Author: taca (Takahiro Kambe) * Status: Open * ruby -v: ruby 3.4.2 (2025-02-15 revision d2930f8e7a) +PRISM [x86_64-netbsd] * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN ---------------------------------------- 引数なしでrubyを起動すると、Segmentation Faultで落ちます。(そういう使い方をすることは稀だったため、気づいていませんでした。) https://mail-index.netbsd.org/pkgsrc-changes/2025/02/09/msg317142.html https://mail-index.netbsd.org/pkgsrc-users/2025/02/28/msg041167.html * Prismを使用していると発生します。 * pkgsrcの外でビルドした場合でも再現します。 原因は prism.c の`pm_parse_stream_read()`の第3引数の関数ポインターの名前が`fgets`と なっていて、`pm_parse_stream_read()`では、これを使って関数呼び出しをしています。 ところが、何故か標準ライブラリのfgets(3)を呼び出してしまって落ちていたというのが真相 でした。 引数で渡された関数ポインターを使って呼び出すのが本来の動作とは思いますが、敢えて標準 ライブラリと同じ名前を使用するのは、このような意図しない挙動を引き起こす可能性がある ので、避けるべきではないかと思います。 添付のパッチで問題は解消しました。 ``` % uname -rsmp NetBSD 10.1_STABLE amd64 x86_64 % sh configure --enable-pthread --without-git ... % make ... % gdb ruby ... (gdb) run Starting program: /var/tmp/ruby-3.4.2/ruby [New LWP 1009 of process 2755] `RubyGems' were not loaded. `error_highlight' was not loaded. `did_you_mean' was not loaded. `syntax_suggest' was not loaded. Thread 1 "" received signal SIGSEGV, Segmentation fault. rb_econv_close (ec=0x4) at transcode.c:1735 1735 if (ec->replacement_allocated) { (gdb) where #0 rb_econv_close (ec=0x4) at transcode.c:1735 #1 0x00000001dc969c5c in clear_readconv (fptr=0x7dfcda961040) at io.c:5636 #2 clear_codeconv (fptr=0x7dfcda961040) at io.c:5655 #3 io_encoding_set (fptr=fptr@entry=0x7dfcda961040, v1=v1@entry=4, v2=v2@entry=4, opt=opt@entry=4) at io.c:11759 #4 0x00000001dc96c0ec in rb_io_set_encoding (argc=<optimized out>, argc@entry=1, argv=argv@entry=0x7f7ffff88a30, io=138524952599320) at io.c:13519 #5 0x00000001dc97b0d6 in rb_stdio_set_default_encoding () at io.c:13540 #6 0x00000001dca70987 in process_options (argc=0, argc@entry=1, argv=<optimized out>, opt=opt@entry=0x7f7ffff89380) at ruby.c:2561 #7 0x00000001dca71f60 in ruby_process_options (argc=argc@entry=1, argv=argv@entry=0x7f7ffff895a8) at ruby.c:228 #8 0x00000001dc923a61 in ruby_options (argc=argc@entry=1, argv=argv@entry=0x7f7ffff895a8) at eval.c:117 #9 0x00000001dcbded22 in rb_main (argv=0x7f7ffff895a8, argc=1) at ./main.c:43 #10 main (argc=<optimized out>, argv=<optimized out>) at ./main.c:68 ``` ---Files-------------------------------- patch-prism_prism.c (2.7 KB) -- https://bugs.ruby-lang.org/
2 1
0 0

HyperKitty Powered by HyperKitty version 1.3.12.