ruby-dev (Japanese) list archive (unofficial mirror)
 help / color / mirror / Atom feed
* [ruby-dev:52153] [Ruby master Bug#21165] 引数なしで起動するとSegmentatino Fault
@ 2025-03-01 16:07 taca (Takahiro Kambe) via ruby-dev
  2025-03-02  3:49 ` [ruby-dev:52154] " alanwu (Alan Wu) via ruby-dev
  0 siblings, 1 reply; 2+ messages in thread
From: taca (Takahiro Kambe) via ruby-dev @ 2025-03-01 16:07 UTC (permalink / raw)
  To: ruby-dev; +Cc: taca (Takahiro Kambe)

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/
_______________________________________________
ruby-dev mailing list -- ruby-dev@ml.ruby-lang.org
To unsubscribe send an email to ruby-dev-leave@ml.ruby-lang.org

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [ruby-dev:52154] [Ruby master Bug#21165] 引数なしで起動するとSegmentatino Fault
  2025-03-01 16:07 [ruby-dev:52153] [Ruby master Bug#21165] 引数なしで起動するとSegmentatino Fault taca (Takahiro Kambe) via ruby-dev
@ 2025-03-02  3:49 ` alanwu (Alan Wu) via ruby-dev
  0 siblings, 0 replies; 2+ messages in thread
From: alanwu (Alan Wu) via ruby-dev @ 2025-03-02  3:49 UTC (permalink / raw)
  To: ruby-dev; +Cc: alanwu (Alan Wu)

Issue #21165 has been updated by alanwu (Alan Wu).

Assignee set to prism

----------------------------------------
Bug #21165: 引数なしで起動するとSegmentatino Fault
https://bugs.ruby-lang.org/issues/21165#change-112156

* Author: taca (Takahiro Kambe)
* Status: Open
* Assignee: prism
* 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/
_______________________________________________
ruby-dev mailing list -- ruby-dev@ml.ruby-lang.org
To unsubscribe send an email to ruby-dev-leave@ml.ruby-lang.org

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2025-03-02  3:49 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-03-01 16:07 [ruby-dev:52153] [Ruby master Bug#21165] 引数なしで起動するとSegmentatino Fault taca (Takahiro Kambe) via ruby-dev
2025-03-02  3:49 ` [ruby-dev:52154] " alanwu (Alan Wu) via ruby-dev

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).