どこかで共有メモリの大きさが足りなかったって読んだんだけど、普通のメモリの大きさの問題だったのかな?テーブルを作るときに壊れたと書いてあるけれど読んでメモリに展開するときに上書きしたと読める部分もある。おっさんにはよくわからないのじゃ…
@zundan gihyoの画像を見るかぎり、単純にmallocした領域外に書いちゃった、と読み取りました。環境構築時の処理とありますし、壊れたファイルを作って使っただけ、じゃないでしょうか。
@nya2510
> 障害の直接的な原因となった不具合を含んだロードファイル生成プログラムは、単体テストの段階では正常に動いているように見えていました。これは生成プログラムが「一時的に確保した領域」を超えて、本来ロードファイルを展開してはいけない領域(別のプログラムが利用する領域)にインデックステーブルを書き込んでしまっても、そのテストでは別のプログラムを動かしていないので上書きされることもなく、https://gihyo.jp/article/2023/12/zengin-nttdata
とあって「テストでは別のプログラムを動かしていない」ので壊れなかったと理解すると、本番では別のプログラムを動かしていたので壊れたと読めてしまいます。ここで、ロードファイル生成プログラムを本番で全体を起動するたびに走らせてるとは僕には想像しづらいんですよねー。
あ、あと複数のプロセスが動いたから壊れたのなら、やっぱり壊れたのは共有メモリの内容じゃないといけない気もしてきました。もうナンモワカランw
@zundan > 本番稼働時のロードファイル展開において作業領域が不足し、作業領域からあふれたインデックステーブルが本来ほかのプログラムが使用する領域に展開され
ともあるので、確かに壊れたのは実行時とも読めますね。🤔 ナンモワカラン仲間入りします!!
Experimental private instance. Running on FreeBSD!
@nya2510
> 障害の直接的な原因となった不具合を含んだロードファイル生成プログラムは、単体テストの段階では正常に動いているように見えていました。これは生成プログラムが「一時的に確保した領域」を超えて、本来ロードファイルを展開してはいけない領域(別のプログラムが利用する領域)にインデックステーブルを書き込んでしまっても、そのテストでは別のプログラムを動かしていないので上書きされることもなく、
https://gihyo.jp/article/2023/12/zengin-nttdata
とあって「テストでは別のプログラムを動かしていない」ので壊れなかったと理解すると、本番では別のプログラムを動かしていたので壊れたと読めてしまいます。ここで、ロードファイル生成プログラムを本番で全体を起動するたびに走らせてるとは僕には想像しづらいんですよねー。
あ、あと複数のプロセスが動いたから壊れたのなら、やっぱり壊れたのは共有メモリの内容じゃないといけない気もしてきました。もうナンモワカランw