tDiary.org - 日記コミュニケーションを加速する


ruby 1.8.3でのSegmentation fault回避策

tDiaryをruby 1.8.3上で動作させると、Segmentation faultが発生するという問題がいくつか報告されています。rubyコマンドのビルド方法に起因する問題らしいので、ご自分でrubyをビルドされた方は以下の方法で回避できそうです。技術的な詳細は[ruby-core:6083](英文)とその周辺を参照してください。

parse.cだけを「-DYYSTACK_USE_ALLOCA=1」付きででコンパイルしなおす

改めてmake

make install

具体的な手順です。

% cd ruby-1.8.3 % gcc -DYYSTACK_USE_ALLOCA=1 -g -O2 -I. -I. -c parse.c % make % sudo make install

この事象はtDiary 2.0.2にて主に報告されていますが、他のバージョンでは発生しないかどうかは不明です。自前でruby 1.8.3をビルドしている場合には、この対処をしておいた方がいいでしょう。

なお、この手法はおそらく対症療法なので、続報が入り次第、ここでお知らせします。

追記(2005-10-01)

技術的な背景に関して、なかださんのわかりやすい解説とパッチが出ているので、追記しておきます。これによると上記の文章は間違っていますが、訂正せずに下記を提示することにします。