NYAOS ビルド不能! Lua × MinGW gcc 4.6 の罠

Luaインタプリタを内蔵したコマンドラインシェルNYAOSの新版をリリースしようと、Luaをリビルドしたところ、Luaが不正終了するようになってしまいました。 これは症状発生から解決に至る顛末です。
0
ζ @zetamatta

Lua で文法エラーがあると落ちる現象が、Lua 5.1.5(NYAOS 3.2)で発生するんだけれども、Lua 5.2.0(NYAOS 3.3) では発生しない(原因は不明)。安定版と開発版の安定度が逆転している。普段使ってるのが開発版だからな。安定版廃止するか?

2012-06-03 10:12:39
ζ @zetamatta

なに、Lua 5.1.5 だと落ちるのに、Lua 5.1.4 だと落ちないだと…

2012-06-03 10:58:25
ζ @zetamatta

Lua を「再コンパイル」してみたら、5.2.0 でも 5.1.5 でも症状が発生するようになった。MinGW の現行バージョンが悪いのかな…

2012-06-03 11:55:55
ζ @zetamatta

幸い、機能公開した NYAOS 3.3.3_0 では、Luaコードが文法エラーの時、落ちるという現象は起きないようだ。だが、Lua コードをリビルドしてしまうと再現してしまう。難儀なことだ。

2012-06-03 11:59:15
ζ @zetamatta

正しく動作する NYAOS をビルドできなくなってしまった。かなり絶望…

2012-06-03 15:36:32
ζ @zetamatta

あー、dynamic-link すると、ちゃんと動作するな…。自前で Lua をビルドして、static-link すると、「lua_e "hoge" 」だけで(エラーにならず)落ちてしまう。

2012-06-03 15:41:33
ζ @zetamatta

Lua のソースは差し替えていない。ただ、Lua をビルドし直したら、落ちるようになった。心当りは、マシンが不安定になった1月頃に工場出荷状態にマシンを戻してから、MinGW を入れ直したこと。ただ、入れ替えた後、Lua のコードはバックアップから戻したままでリビルドしてなかった

2012-06-03 15:43:44
ⓝⓞⓒⓓ❺ @nocd5

@zetamatta うちの環境だと、mingw 4.6.1でビルドしたliblua.aをリンクするとダメ。4.5.1ビルドのliblua.aならnyaos本体はどっちのリビジョンでビルドでも大丈夫でした。

2012-06-03 16:03:06
ζ @zetamatta

@nocd5 ありがとうございます。今、gcc --version してみたら、4.6.1 でした。4.5.1 をインストールしてみます!

2012-06-03 16:05:30
ζ @zetamatta

コンパイラを疑うのは、プログラマーとして、最後の最後としたいところではあった。

2012-06-03 16:11:19
ζ @zetamatta

gcc 4.6.1-2 を消して、4.5.1 を入れようとしたけど、4.6.2-1 が出ているのを確認したので、試しにそっちを入れてみよう。

2012-06-03 16:12:54
ζ @zetamatta

ビルド環境は、ちゃんとコンパイラバージョンまで記録しとかんといかんなー

2012-06-03 16:15:02
ζ @zetamatta

だめだ、gcc 4.6.2-1 もだめだ。やはり、4.5.1 でいくべきか

2012-06-03 16:17:31
ⓝⓞⓒⓓ❺ @nocd5

@zetamatta 僕はTDM版Mingwなので状況違うかもしれませんが

2012-06-03 16:17:34
ζ @zetamatta

.@nocd5 MinGW の gcc を 4.5.2 に戻してみたところ、ちゃんと動作するようになりました。本当にありがとうございます!

2012-06-03 16:32:06
ⓝⓞⓒⓓ❺ @nocd5

@zetamatta 良かったです、Lua単体でも4.6.1はダメですね

2012-06-03 16:40:59
ζ @zetamatta

@nocd5 とりあえず、ほっとしました。しかし、gcc(or MinGW?)、意外と安定していないのは結構ショックです

2012-06-03 16:43:11
ⓝⓞⓒⓓ❺ @nocd5

@zetamatta たしかに…でもgccのバージョンは メジャー<マイナー<パッチ の関係にならないと安定しないって話もありましたよね…

2012-06-03 16:47:32
ζ @zetamatta

@nocd5 なんという、なつかしい法則(gcc 1.x の頃聞いたことがあります)。まさか、今でも通用するとは!

2012-06-03 16:48:18
ⓝⓞⓒⓓ❺ @nocd5

Lua 5.2.0をgcc4.6.1でビルドするとエラー吐く件。最適化オプション-O2付けるとダメだなぁ。-O3や-Osだと大丈夫っぽい。なんか気になる…何もできないけど~w

2012-06-03 16:50:30
sava @lpproj

@zetamatta なんか"lua mingw gcc 4.6" あたりでぐぐるといくつか出てくるのですが、関係あるのでしょうか… http://t.co/hJVRROgd

2012-06-03 17:25:12
ζ @zetamatta

.@lpproj 引用部にある症状は、ほぼワタクシのところで出たものと同じですねぇ。とすると、回避策として提示されている -fno-omit-frame-pointor も試したいところですね

2012-06-03 17:29:58
ζ @zetamatta

にっき書いた ≫ "MHI 4.0 - $ 非常事態 NYAOS ビルド不能" http://t.co/uuYXZqJk

2012-06-03 17:48:26
ⓝⓞⓒⓓ❺ @nocd5

--fno-omit-frame-pointer付けると回避できた RT: @nocd5: Lua 5.2.0をgcc4.6.1でビルドするとエラー吐く件。最適化オプション-O2付けるとダメだなぁ。-O3や-Osだと大丈夫っぽい。なんか気になる…何もできないけど~w

2012-06-03 18:43:03