👏

[Bug #20668] shareable_constant_value: 関連でクラッシュするバグ報告

2024/08/06に公開

[Bug #20668] [3.3] shareable_constant_value: literal crash

  • 以下のようなコードを実行すると shareable_constant_value 関連で Ruby がクラッシュするというバグ報告
# shareable_constant_value: literal

FORM_STRATEGIES = {
  'product' => Object,
  'storefront_password' => String,
  'contact' => Class,
}
/tmp/vQ8KjQT/16: [BUG] Segmentation fault at 0x0000000f00000006
ruby 3.3.3 (2024-06-12 revision f1c7b6f435) [x86_64-linux]

-- Control frame information -----------------------------------------------
c:0001 p:0000 s:0003 E:0002c0 DUMMY  [FINISH]


-- Threading information ---------------------------------------------------
Total ractor count: 1
Ruby thread count for this ractor: 1

-- Machine register context ------------------------------------------------
 RIP: 0x0000768f705bb61f RBP: 0x000055c2bc4a9a38 RSP: 0x00007ffeb6846b90
 RAX: 0x0000768f54773d78 RBX: 0x000055c2bc4a59f0 RCX: 0x0000000000000000
 RDX: 0x0000000f00000006 RDI: 0x000055c2bc26c540 RSI: 0x000055c2bc26d300
  R8: 0x0000768f54773d78  R9: 0x000055c2bc4a9998 R10: 0x000055c2bc4a98e0
 R11: 0x000055c2bc4a98b8 R12: 0x000055c2bc320190 R13: 0x000055c2bc4a98c0
 R14: 0x00007ffeb6846c58 R15: 0x0000768f54773d78 EFL: 0x0000000000010206
...
  • Ruby 3.2 や開発版の Ruby 3.4 では再現せずに Ruby 3 系でのみ再現するみたいでね
  • 上記のコードだと FORM_STRATEGIES のいずれかの値を削除したりクラスオブジェクトじゃない場合はクラッシュしないのでエッジケースではあるのかなー
GitHubで編集を提案

Discussion