mendexのコンソール出力が変になる2

mendexのコンソール出力が変になる2

- Yamamoto Munehiro "munepi" の投稿
返信数: 4
mendexのコンソール出力が変になる https://okumuralab.org/tex/mod/forum/discuss.php?d=2165 と似たような不具合を報告いたします。

■各種情報
* OS:universal-darwin, x86_64-darwinが動くMac OS X
    * こちらで試したMac OS X:10.6.8, 10.11.6
* TeX Live環境:TeX Live 2016最新版もしくは次期TeX Live 2017 svn 20170401時点の自己ビルドの mendex, upmendex

■不具合の再現
mendbug2.tar.gz を展開して、
$ mendex -r -c -s mendbug2.ist ooo-bug-ebook.idx
もしくは
$ upmendex -r -c -s mendbug2.ist ooo-bug-ebook.idx
を実行しますと、期待するログファイル名ooo-bug-ebook.ilgでないファイル名となる場合があります。

これを 100 回実行する ./run2.sh を数回ほど実行して、
必要な部分だけgrepで抽出したログを以下に貼り付けます。
以下のように、期待するログファイル名ooo-bug-ebook.ilgでないファイル名となる場合があることが分かります。

$ ./run2.sh 2>&1 | tee run2.log | grep "0 warnings, written in" | grep -v "ebook.ilg.$"
0 warnings, written in ooo-bug-ebook.ilPTEX_IN_FILTER.mendex.
0 warnings, written in ooo-bug-ebook.ilしせんすう.
0 warnings, written in ooo-bug-ebook.ilしせんすう.
0 warnings, written in ooo-bug-ebook.ilしせんすう.
$ ./run2.sh 2>&1 | tee run2.log | grep "0 warnings, written in" | grep -v "ebook.ilg.$"
0 warnings, written in ooo-bug-ebook.ilアカサタナハマヤラワ.
0 warnings, written in ooo-bug-ebook.ilアカサタナハマヤラワ.
$ ./run2.sh 2>&1 | tee run2.log | grep "0 warnings, written in" | grep -v "ebook.ilg.$"
0 warnings, written in ooo-bug-ebook.il.
0 warnings, written in ooo-bug-ebook.il.
$ ./run2.sh 2>&1 | tee run2.log | grep "0 warnings, written in" | grep -v "ebook.ilg.$"
0 warnings, written in ooo-bug-ebook.il.
0 warnings, written in ooo-bug-ebook.ilアカサタナハマヤラワ.
0 warnings, written in ooo-bug-ebook.il.
0 warnings, written in ooo-bug-ebook.ilp?星?.
$ ./run2.sh 2>&1 | tee run2.log | grep "0 warnings, written in" | grep -v "ebook.ilg.$"
0 warnings, written in ooo-bug-ebook.ilしせんすう.
0 warnings, written in ooo-bug-ebook.ilPTEX_IN_FILTER.mendex.
0 warnings, written in ooo-bug-ebook.ilしせんすう.
0 warnings, written in ooo-bug-ebook.ilアカサタナハマヤラワ.
$ ./run2.sh 2>&1 | tee run2.log | grep "0 warnings, written in" | grep -v "ebook.ilg.$"
0 warnings, written in ooo-bug-ebook.ilしせんすう.
0 warnings, written in ooo-bug-ebook.il.
0 warnings, written in ooo-bug-ebook.il.
0 warnings, written in ooo-bug-ebook.ilしせんすう.
0 warnings, written in ooo-bug-ebook.ilしせんすう.
0 warnings, written in ooo-bug-ebook.ilしせんすう.
$ ./run2.sh 2>&1 | tee run2.log | grep "0 warnings, written in" | grep -v "ebook.ilg.$"
0 warnings, written in ooo-bug-ebook.ilしせんすう.
0 warnings, written in ooo-bug-ebook.ilアカサタナハマヤラワ.
0 warnings, written in ooo-bug-ebook.ilアカサタナハマヤラワ.
0 warnings, written in ooo-bug-ebook.ilp?@?.
0 warnings, written in ooo-bug-ebook.ilアカサタナハマヤラワ.
$ ./run2.sh 2>&1 | tee run2.log | grep "0 warnings, written in" | grep -v "ebook.ilg.$"
0 warnings, written in ooo-bug-ebook.ilしせんすう.
$ ./run2.sh 2>&1 | tee run2.log | grep "0 warnings, written in" | grep -v "ebook.ilg.$"
0 warnings, written in ooo-bug-ebook.ilしせんすう.
0 warnings, written in ooo-bug-ebook.il自然数.
0 warnings, written in ooo-bug-ebook.ilしせんすう.
0 warnings, written in ooo-bug-ebook.il.
0 warnings, written in ooo-bug-ebook.il.
0 warnings, written in ooo-bug-ebook.ilアカサタナハマヤラワ.
$ ./run2.sh 2>&1 | tee run2.log | grep "0 warnings, written in" | grep -v "ebook.ilg.$"
0 warnings, written in ooo-bug-ebook.il??.
0 warnings, written in ooo-bug-ebook.il.
0 warnings, written in ooo-bug-ebook.il??.
0 warnings, written in ooo-bug-ebook.ilしせんすう.
0 warnings, written in ooo-bug-ebook.il??.
0 warnings, written in ooo-bug-ebook.ilしせんすう.
$ ./run2.sh 2>&1 | tee run2.log | grep "0 warnings, written in" | grep -v "ebook.ilg.$"
0 warnings, written in ooo-bug-ebook.ilしせんすう.
0 warnings, written in ooo-bug-ebook.il.
0 warnings, written in ooo-bug-ebook.ilアカサタナハマヤラワ.
0 warnings, written in ooo-bug-ebook.ilしせんすう.
$ ./run2.sh 2>&1 | tee run2.log | grep "0 warnings, written in" | grep -v "ebook.ilg.$"
0 warnings, written in ooo-bug-ebook.ilしせんすう.
0 warnings, written in ooo-bug-ebook.il.
0 warnings, written in ooo-bug-ebook.ilしせんすう.
$ ./run2.sh 2>&1 | tee run2.log | grep "0 warnings, written in" | grep -v "ebook.ilg.$"
0 warnings, written in ooo-bug-ebook.il??.
0 warnings, written in ooo-bug-ebook.il.
0 warnings, written in ooo-bug-ebook.il.
0 warnings, written in ooo-bug-ebook.ilしせんすう.
0 warnings, written in ooo-bug-ebook.il.
$ ./run2.sh 2>&1 | tee run2.log | grep "0 warnings, written in" | grep -v "ebook.ilg.$"
0 warnings, written in ooo-bug-ebook.il?.
0 warnings, written in ooo-bug-ebook.il.
0 warnings, written in ooo-bug-ebook.ilしせんすう.
0 warnings, written in ooo-bug-ebook.il?@.
0 warnings, written in ooo-bug-ebook.il.
0 warnings, written in ooo-bug-ebook.ilアカサタナハマヤラワ.
$ ./run2.sh 2>&1 | tee run2.log | grep "0 warnings, written in" | grep -v "ebook.ilg.$"
0 warnings, written in ooo-bug-ebook.il??.
0 warnings, written in ooo-bug-ebook.il??.
0 warnings, written in ooo-bug-ebook.il.
0 warnings, written in ooo-bug-ebook.il?FP.
0 warnings, written in ooo-bug-ebook.il.
0 warnings, written in ooo-bug-ebook.ilしせんすう.
0 warnings, written in ooo-bug-ebook.il自然数.
0 warnings, written in ooo-bug-ebook.il.
0 warnings, written in ooo-bug-ebook.ilアカサタナハマヤラワ.
0 warnings, written in ooo-bug-ebook.ilしせんすう.
0 warnings, written in ooo-bug-ebook.ilアカサタナハマヤラワ.
$ ./run2.sh 2>&1 | tee run2.log | grep "0 warnings, written in" | grep -v "ebook.ilg.$"
0 warnings, written in ooo-bug-ebook.il??.
0 warnings, written in ooo-bug-ebook.ilアカサタナハマヤラワ.
0 warnings, written in ooo-bug-ebook.il??.
0 warnings, written in ooo-bug-ebook.ilしせんすう.
$ ./run2.sh 2>&1 | tee run2.log | grep "0 warnings, written in" | grep -v "ebook.ilg.$"
0 warnings, written in ooo-bug-ebook.il??.
0 warnings, written in ooo-bug-ebook.ilアカサタナハマヤラワ.
0 warnings, written in ooo-bug-ebook.ilアカサタナハマヤラワ.


■その他
* idxのファイル名の長さかファイル名の文字列に依り、本不具合が起こる場合がありました。
* idxファイルの内容を変えると、別の文字列がログファイルの拡張子部分に現れます。
* Mac OS XのTeX Live 2012から2015までのmendex, upmendexでは、本不具合が発生しませんでした。Mac OS Xのバージョンに依らずに本件が発生しそうです。
* LinuxのTeX Live 2012から2016まで, 2017dev(svn 20170401時点の自己ビルド)のmendex, upmendex では、本不具合が発生しませんでした。Windowsでは本件を未調査です。


以上、まずは報告のみです。
Yamamoto Munehiro "munepi" への返信

Re: mendexのコンソール出力が変になる2

- 和田 勇 の投稿
ご報告の件に関しては、 FreeBSD に限らず全ての OS で発生しうることです。
メモリアロケーション管理は実装依存だったと思いますので、利用環境により異なります。

報告にあるように「ゴミ」として表示されるものが内容の一部だったり .ilg などになっているのは、その領域がいろいろなところでなんども利用されているからです。

原因は、今までのやりとりで理解いただけるかと思いますが、二箇所のファイル名保存する際の必要容量不足により、不整合が生じてしまったためです。

今の所、表示されるメッセージが乱れる以外は、出力されるファイル名やそのほかの処理には影響がないと思われますが、バグ対応版がリリースするまでは 「-t ログファイル名」とオプションをつけていただくことで回避できますのでご検討をお願いします。

Yamamoto Munehiro "munepi" への返信

Re: mendexのコンソール出力が変になる2

- t tk の投稿
ご報告ありがとうございます。

* Mac OS XのTeX Live 2012から2015までのmendex, upmendexでは、本不具合が発生しませんでした。Mac OS Xのバージョンに依らずに本件が発生しそうです。
* LinuxのTeX Live 2012から2016まで, 2017dev(svn 20170401時点の自己ビルド)のmendex, upmendex では、本不具合が発生しませんでした。Windowsでは本件を未調査です。
↑これがよく分かりません。
結局、問題が発生しているソースはいつのものになりますか?

texk/mendexk/main.c で logfile, indfile のバッファー長の不足がありました。
r42491 でバグが入り、r43700 で解消したという風に認識しています。
それと同じ問題でしょうか?

t tk への返信

Re: mendexのコンソール出力が変になる2

- Yamamoto Munehiro "munepi" の投稿
ttkさん、
> r42491 でバグが入り、r43700 で解消したという風に認識しています。
「svn 20170401時点」のsvn revを確認してみたところ、r43667でした。

> それと同じ問題でしょうか?
はい、和田さんがすでにご検証くださったとおりと思います。
こちらでも r43700 以降でビルドしまして確認してみます。