📌

[Bug #20592] ruby:3.4.0-preview1 と alpine 3.20 の組み合わせで segv するバグ報告

2024/06/22に公開

[Bug #20592] Interrupting Addrinfo causes Segmentation fault on alpine

  • ruby:3.4.0-preview1 と alpine 3.20 の組み合わせで以下のコードが segv するというバグ報告
# test.rb

require 'socket'
require 'timeout'

begin
  Addrinfo.ip("1234.example.com")
rescue StandardError => e
  puts e
end

sleep 10 # wait getaddrinfo to resolve and fail
/app # ruby test.rb
execution expired
[BUG] Segmentation fault at 0x0000000000000028
ruby 3.4.0preview1 (2024-05-16 master 9d69619623) [x86_64-linux-musl]

-- Machine register context ------------------------------------------------
 RIP: 0x00007fefe4cd4886 RBP: 0x0000000000000001 RSP: 0x00007fefc95d3a10
 RAX: 0x0000000000000001 RBX: 0x00007fefc94212e0 RCX: 0x00007fefc95d0b70
 RDX: 0x0000000000000010 RDI: 0x0000000000000000 RSI: 0x00007fefc95d08f0
  R8: 0x0000000000000000  R9: 0x0000000000000000 R10: 0x0000000000000000
 R11: 0x0000000000000217 R12: 0x00007fefc9421340 R13: 0x00007fff5a0ec750
 R14: 0x00007fefe4649b10 R15: 0x00007fefc95d3b38 EFL: 0x0000000000010202

-- Other runtime information -----------------------------------------------
  • 内部の実装として Addrinfo を解放するときに freeaddrinfo 関数を使っているんですが alpine だとその関数に NULL を渡すとエラーになるらしい
  • 対応PR自体はでてますね
GitHubで編集を提案

Discussion