テクノロジー

RubyのPathnameライブラリが本体組み込みになったらGC周りのテスト失敗がおきた - STORES Product Blog

1: iga_k 2025/07/17 10:57

仮説立つのすごい “この「コード量」や「無関係な変数定義」に挙動が左右されるという状況から、一つの仮説を(略)「インタプリタ全体のシンボルの数が特定の閾値を超えた場合に何かが起きるのでは」というもの”

2: onk 2025/07/17 10:59

面白かった〜

3: YassLab 2025/07/17 11:04

“pathnameの組み込みは、あくまで全体のシンボル数を押し上げるトリガーに過ぎず、根本原因はObjectSpace.count_objectsの挙動にありました。 今回は決定論的に再現可能な問題であったため解析は比較的容易でした”

4: Watson 2025/07/17 11:07

地味に嬉しいかも。 “require "pathname"なしで利用可能になる予定です”

5: versatile 2025/07/17 11:27

観測すると結果が変わるのは現実では信じられないが、ITの世界では普通によくある。つまり、現実でも同じようなことが起きて結果が変わっているのかもしれないね

6: koyancya 2025/07/17 11:30

むちゃ面白い……

7: tagomoris 2025/07/17 11:34

これ自分もnamespace開発中に踏んだことあるな、なんか知らないうちに再現しなくなって放置したやつだ

8: tmtms 2025/07/17 11:44

再現手段が確立できなかったら迷宮入りするやつだ

9: kenzy_n 2025/07/17 11:51

観測者が観測結果に影響を及ぼすという事例を生で見た。

10: rna 2025/07/17 12:05

こんなん突き止められる自信ないな…

11: Pasta-K 2025/07/17 12:11

面白い

12: gfx 2025/07/17 14:44

面白かった。非決定的っぽさがある。

13: tacamula 2025/07/17 14:54

“オブジェクト数を数えるという観測行為そのものが、観測対象である配列の数を変えてしまうという、稀な副作用”

14: sugyan 2025/07/17 14:59

「オブジェクト数を数えるという観測行為そのものが、観測対象である配列の数を変えてしまう」

15: atsushieno 2025/07/17 16:29

ネイティブコードだと暗黙的なメモリ確保で変更されたアドレスへのdangling pointerが問題を起こすみたいなのはそれなりの頻度でありそうな気がするので、あんまし意外性は無かった(確認難易度は別論)

16: yorkfield 2025/07/17 16:45

結論を見るとなるほどと思うけど、途中経過は本当に意味不明の現象だな……。

17: snowcrush 2025/07/17 17:03

面白い

18: suginoy 2025/07/17 17:26

ハイゼンバグじゃん https://ja.wikipedia.org/wiki/特異なバグ

19: yamadadadada2 2025/07/17 18:00

すごい。AIが絶対たどり着けなそうな問題だ