FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

tecsgen の Exerb版, Jruby 版の障害(続き)

調査したところ、問題箇所が絞れてきました。
どうやら、問題は parser.rb にあるようで、cygwin版, ActiveScriptRuby 版, mswin32 版で問題が起きないのは cparse.so が使用されているためのようです。

以下の手順で調査を行いました。

1.jruby 版では GC の変更で解決したとの情報から exerb を疑ってみる

・exerb 4.9 でトライ(以前は4.8を使用)⇒ うまく動いてしまった
・exerb のビルドオプションをチェック⇒ 変わったとこはなさそう
・exerb 版コアが VC6 でビルドされているので、同じ VC6 でビルドされている mswin32 版でトライ
 ⇒ うまく動いてしまった
  なお dependency walker で mswin32 版が VC6 で作られていることをチェック
  (完全には分からなかったが、リンカーバージョンから、恐らくそう)

 手詰まり.この調査方針はあきらめる

2.parser.rb を調査する、正攻法に切替える

・exerb 版を ctrl-C で止めた時のスタックトレースで出てくる付近のソースを眺めてみる
 ⇒容易に理解できそうもない
・まずは正常パスを調査することに
 parser.rb を手元に持ってきてprint 文を入れてみる
 ⇒出てこない???
・cparse が require されている
 ⇒ そういえばそうだった!  (tecsgen 開発始めの頃に見たきりで、忘れてました)
・cygwin 版を parser.rb で動作させてみる
 ⇒ 現象再現
・parser.rb で @yydebug = true にしてみる
 ⇒うまく動作しないときは、エラー発生してもエラーリカバリー処理がなされないで 、$end と最後の構文要素の shift, reduce を繰返している

とりあえず、ここまで。以後の調査方針は、別途検討します。
# bnf.y.rb の問題の可能性もなくはない
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

hiro22022

Author:hiro22022
TECS 開発ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2カウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。