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


ruby 1.8.3でのSegmentation fault回避策

Last Update: 2005-10-01 12:59:31

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

  1. parse.cだけを「-DYYSTACK_USE_ALLOCA=1」付きででコンパイルしなおす
  2. 改めてmake
  3. 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)

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

コメント(1) [コメントを投稿する]
NT (2005-10-01 03:30)

2.1.2.20050917 と 1.8.3 の組み合わせで update.rb にアクセスすると<br> /usr/local/lib/ruby/1.8/date/format.rb:598: [BUG] unknown node type 0<br> ruby 1.8.3 (2005-09-21) [i686-linux]<br>と Apache のログに出てました。その時点で、2.1.2.20050926 にしたらエラーは出なくなりました。


«開発版2.1.3リリース 最新 17個の新作テーマ» 編集
Fork me on GitHub