Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

appveyor ビルドで build-sln.bat がたまに失敗する #584

Closed
m-tmatma opened this issue Oct 26, 2018 · 18 comments
Closed

appveyor ビルドで build-sln.bat がたまに失敗する #584

m-tmatma opened this issue Oct 26, 2018 · 18 comments
Labels
CI appveyor など CI 関連 【ChangeLog除外】

Comments

@m-tmatma
Copy link
Member

appveyor ビルドで build-sln.bat がたまに失敗する

以下の構成でビルドに失敗した。
https://ci.appveyor.com/project/sakuraeditor/sakura/builds/19835079/job/p0qcd1hnp4mkdh1s

以下ログだが、ビルドでエラーが出ているようなログはなく、突然 build-sln.bat がエラーになっている。
log(2).txt

[00:03:25] c:\projects\sakura\sakura_core\io\cstream.h(97): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data (compiling source file ..\sakura_core\macro\CWSHManager.cpp) [C:\projects\sakura\sakura\sakura.vcxproj]
[00:03:26] c:\projects\sakura\sakura_core\mem\cnativea.cpp(36): warning C4267: 'argument': conversion from 'size_t' to 'int', possible loss of data [C:\projects\sakura\sakura\sakura.vcxproj]
[00:03:26] c:\projects\sakura\sakura_core\mem\cnativea.cpp(55): warning C4267: 'argument': conversion from 'size_t' to 'int', possible loss of data [C:\projects\sakura\sakura\sakura.vcxproj]
[00:03:27] c:\projects\sakura\sakura_core\mem\cnativea.cpp(127): warning C4267: 'argument': conversion from 'size_t' to 'int', possible loss of data [C:\projects\sakura\sakura\sakura.vcxproj]
[00:03:27] c:\projects\sakura\sakura_core\mem\cnativea.cpp(164): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data [C:\projects\sakura\sakura\sakura.vcxproj]
[00:03:28] c:\projects\sakura\sakura_core\mem\cnativea.cpp(165): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data [C:\projects\sakura\sakura\sakura.vcxproj]
[00:03:28] c:\projects\sakura\sakura_core\mem\cnativea.cpp(193): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data [C:\projects\sakura\sakura\sakura.vcxproj]
[00:03:28] c:\projects\sakura\sakura_core\mem\cnativea.cpp(194): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data [C:\projects\sakura\sakura\sakura.vcxproj]
[00:03:29] c:\projects\sakura\sakura_core\mem\cnativea.cpp(730): warning C4267: 'argument': conversion from 'size_t' to 'int', possible loss of data [C:\projects\sakura\sakura\sakura.vcxproj]
[00:03:29]   CNativeW.cpp
[00:03:29] c:\projects\sakura\sakura_core\mem\cnativew.cpp(39): warning C4267: 'argument': conversion from 'size_t' to 'int', possible loss of data [C:\projects\sakura\sakura\sakura.vcxproj]
[00:03:30] c:\projects\sakura\sakura_core\mem\cnativew.cpp(56): warning C4267: 'argument': conversion from 'size_t' to 'int', possible loss of data [C:\projects\sakura\sakura\sakura.vcxproj]
[00:03:30]   CRecycledBuffer.cpp
[00:03:30] c:\projects\sakura\sakura_core\mem\cnativew.cpp(79): warning C4267: 'argument': conversion from 'size_t' to 'int', possible loss of data [C:\projects\sakura\sakura\sakura.vcxproj]
[00:03:34] c:\projects\sakura\sakura_core\mem\cnativew.cpp(129): warning C4267: 'argument': conversion from 'size_t' to 'int', possible loss of data [C:\projects\sakura\sakura\sakura.vcxproj]
[00:03:39] c:\projects\sakura\sakura_core\mem\cnativew.cpp(143): warning C4267: 'argument': conversion from 'size_t' to 'int', possible loss of data [C:\projects\sakura\sakura\sakura.vcxproj]
[00:04:21] error 
[00:04:21] error build-sln.bat       
[00:04:42] Command exited with code 1
@m-tmatma
Copy link
Member Author

exit /b 1 しているから原因がわからない。
→ エラーコードがわかるようにする

sakura/build-sln.bat

Lines 42 to 44 in 6d40ca3

@echo "%CMD_MSBUILD%" %SLN_FILE% /p:Platform=%platform% /p:Configuration=%configuration% /t:"Build" %EXTRA_CMD% %LOG_OPTION%
"%CMD_MSBUILD%" %SLN_FILE% /p:Platform=%platform% /p:Configuration=%configuration% /t:"Build" %EXTRA_CMD% %LOG_OPTION%
if %errorlevel% neq 0 (echo error && exit /b 1)

@berryzplus
Copy link
Contributor

berryzplus commented Oct 27, 2018

良いように思います。

if %errorlevel% neq 0 (echo error && exit /b 1)

 ↓書き換え

if %errorlevel% neq 0 (echo error && exit /b %errorlevel%)

このビルドのエラー要因は Disk Full だと思っています。MsBuildがそれと分かるエラーコードを返すかどうかは別にして、戻り値をリテラルに書き換えるのがマズい気もしています。バッチ設計の観点からみると「0か1を返す」の仕様は正しいと思っていますが。

@m-tmatma
Copy link
Member Author

それだと echo error%errorlevel% を書き換えてしまうので駄目な可能性があると思います。

以下のようなものを考えています。

set ERROR_RESULT=%errorlevel%
if %ERROR_RESULT% neq 0 (echo error && exit /b %ERROR_RESULT%)

@m-tmatma
Copy link
Member Author

このビルドのエラー要因は Disk Full だと思っています。

これではないと考えています。
制限は artifacts に対するものなので、この失敗のビルドの時点ではまだ
artifacts の収集前のフェーズなので影響を受けないはずだし

この失敗のビルドの
https://ci.appveyor.com/project/sakuraeditor/sakura/builds/19835079/job/p0qcd1hnp4mkdh1s
の時点では

appveyor/ci#2708 (comment)
のサイズ拡張は入っていていたからです。

@berryzplus
Copy link
Contributor

echo messageはerrorlevelを書き換えないようです。

テストスクリプト(悪影響はないのでコピペで試してみてください。)

dir > NUL
echo %errorlevel%
del NUL
echo %errorlevel%
echo error
echo %errorlevel%

windowsシェルの NUL は UNIXシェルの /dev/null を意味します。
引数を指定しない dir は成功するので errorlevel は 0 になります。
NUL デバイスを削除することはできないので del NUL は必ず失敗します。
うちの環境では echo %errorlevel%123 が表示されました。
echo errorerror を出力します。
コマンドは間違いなく成功しているんですが、
次行の echo %errorlevel%123 を表示しました。
echoコマンドは errorlevel を書き換えないようです。

この挙動についてマニュアルには一言も記載されていないので、環境依存の可能性もあります。
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/echo

こないだのPRのやり取りは見てましたが、個人的は一旦変数に入れるのは冗長だと思います。
この挙動が「環境依存」である可能性は否定できないので、
そうした対応を否定するわけではありませんが。

@berryzplus
Copy link
Contributor

このビルドのエラー要因は Disk Full だと思っています。

これではないと考えています。

理屈は分かりました。その状況なら Disk Full でなさそうに思います。
しかし、Disk Fullでないとすると「その他環境要因」が原因になるのでかなり厄介です。

たとえば、設定してない環境変数が変動していて、その影響を受けている、とか(怖えぇw

@m-tmatma
Copy link
Member Author

m-tmatma commented Nov 1, 2018

#590 を作成しました。

@m-tmatma
Copy link
Member Author

m-tmatma commented Nov 8, 2018

#590 をマージしたので再発したらなにかわかるかも

@m-tmatma
Copy link
Member Author

m-tmatma commented Nov 9, 2018

#578 をリビルドしたところ、発生した。(訂正: 同じエラーではなかった。別のエラーだった。発生している箇所が違う)
https://ci.appveyor.com/project/sakuraeditor/sakura/builds/20175047/job/rti3s4rb55tr3v5e

error sakura.hhp errorlevel -1073741819
となっている。

STATUS_ACCESS_VIOLATION (0xC0000005) みたい。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10140152430

@berryzplus
Copy link
Contributor

access violationは、unix系 segment-fault と実質的に同義なはず。
hhc.exe自体のバグということも考えられなくはありませんが「ソースコードになんかある」のが原因と考えたほうがより現実的な対処をとれる気がします。

タイミング的には plugin.chm の生成中にエラー発生しているようですが・・・。
これは確か、誰もメンテしてないファイルなはず。
ソースコードがSJISなのがまずい?が一番分かりやすい原因な気がしました。

@m-tmatma
Copy link
Member Author

https://ci.appveyor.com/project/sakuraeditor/sakura/builds/20196232
で再々ビルドしたら通った。

@m-tmatma
Copy link
Member Author

#620 のビルドでも何回もビルドに失敗している。
https://ci.appveyor.com/project/sakuraeditor/sakura/builds/20374100/job/n1qt7sn291ra576l

Created c:\projects\sakura\help\macro\macro.chm, 160,925 bytes
Compression decreased file by 478,594 bytes.
Microsoft HTML Help Compiler 4.74.8702
Compiling c:\projects\sakura\help\plugin\plugin.chm
Compile time: 0 minutes, 0 seconds
34	Topics
136	Local links
5	Internet links
3	Graphics
Created c:\projects\sakura\help\plugin\plugin.chm, 54,423 bytes
Compression decreased file by 26,076 bytes.
error sakura.hhp errorlevel -1073741819
error build-chm.bat       
Command exited with code 1

@m-tmatma
Copy link
Member Author

m-tmatma commented Nov 18, 2018

#622 をマージ後にこの PR のリビルドをかけました。

@beru beru added the CI appveyor など CI 関連 【ChangeLog除外】 label Nov 27, 2018
@m-tmatma
Copy link
Member Author

@m-tmatma
Copy link
Member Author

↑ long path name が原因とあるが、

以下の失敗は関係なさそう。
#807 (comment)

@m-tmatma
Copy link
Member Author

m-tmatma commented Jul 26, 2019

#971 がマージされたら解消するはず

#584 (comment) は解消するが
説明欄のエラーは別かも

@m-tmatma
Copy link
Member Author

↑ 訂正

@berryzplus
Copy link
Contributor

berryzplus commented Sep 11, 2020

build-sln.bat がエラーになる現象は最近は発生してないと思うので、閉じてしまいます。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CI appveyor など CI 関連 【ChangeLog除外】
Projects
None yet
Development

No branches or pull requests

3 participants