北川です.
pTeX の動作チェック用のコードを書いていたのですが,添付したソースを
ptex -ini a.tex
などとして実行させると,pTeX がセグメンテーション違反を起こし,強制終了されてしまうことを見つけました.
tetex-3.0 + pTeX-3.1.11(←但し debug用の print 文を大量に挿入しています),
ptetex3-20091009 + e-pTeX-100131 + upTeX-0.29,
ptexlive-20091009 + e-pTeX-100131 + upTeX-0.29
で試しましたが,どれでも
ptex, eptex: NG, uptex, euptex: OK
となっているようです.
僕の環境のみの症状ならばいいのですが,皆様の環境では発生するでしょうか?
(ちなみに,こちらの環境は
Gentoo Linux (amd64, unstable)
gcc-4.4.3, glibc-2.11
です.)
ほんとですね。Macのptexliveで実験:
$ ptex -ini a.tex
This is pTeXk, Version 3.1415926-p3.1.11 (utf8.euc) (TeX Live 2009) (INITEX)
restricted \write18 enabled.
(./a.tex
(/Volumes/HDCN1/local/texlive/p2009/texmf/ptex/plain/base/ptex.tex
(/Volumes/HDCN1/local/texlive/p2009/texmf-dist/tex/plain/base/plain.tex
Preloading the plain format: codes, registers, parameters, fonts, more fonts,
macros, math definitions, output routines, hyphenation
(/Volumes/HDCN1/local/texlive/p2009/texmf/tex/generic/hyphen/hyphen.tex))
(/Volumes/HDCN1/local/texlive/p2009/texmf/ptex/plain/base/kinsoku.tex))
! Insertions can only be added to a same direction vbox.
l.22 \insert3{\yoko ふ}
Segmentation fault
$ ptex -ini a.tex
This is pTeXk, Version 3.1415926-p3.1.11 (utf8.euc) (TeX Live 2009) (INITEX)
restricted \write18 enabled.
(./a.tex
(/Volumes/HDCN1/local/texlive/p2009/texmf/ptex/plain/base/ptex.tex
(/Volumes/HDCN1/local/texlive/p2009/texmf-dist/tex/plain/base/plain.tex
Preloading the plain format: codes, registers, parameters, fonts, more fonts,
macros, math definitions, output routines, hyphenation
(/Volumes/HDCN1/local/texlive/p2009/texmf/tex/generic/hyphen/hyphen.tex))
(/Volumes/HDCN1/local/texlive/p2009/texmf/ptex/plain/base/kinsoku.tex))
! Insertions can only be added to a same direction vbox.
l.22 \insert3{\yoko ふ}
Segmentation fault
「Cygwin で日本語 TeX」のコンパイル済みバイナリ (ptetex3 の vers. 20090610) で実験しても同様ですね.
$ ptex -kanji=utf8 -ini a.tex
This is pTeX, Version 3.141592-p3.1.10 (utf8.sjis) (Web2C 7.5.4) (INITEX)
(./a.tex
(/usr/local/teTeX/share/texmf/ptex/plain/base/ptex.tex
(/usr/local/teTeX/share/texmf-dist/tex/plain/base/plain.tex
Preloading the plain format: codes, registers, parameters, fonts, more fonts,
macros, math definitions, output routines, hyphenation
(/usr/local/teTeX/share/texmf-dist/tex/generic/hyphen/hyphen.tex))
(/usr/local/teTeX/share/texmf/ptex/plain/base/kinsoku.tex))
! Insertions can only be added to a same direction vbox.
l.22 \insert3{\yoko ふ}
16523 [main] ptex 3620 _cygtls::handle_exceptions: Error while dumping state (probably corrupted stack)
Segmentation fault (core dumped)
$ ptex -kanji=utf8 -ini a.tex
This is pTeX, Version 3.141592-p3.1.10 (utf8.sjis) (Web2C 7.5.4) (INITEX)
(./a.tex
(/usr/local/teTeX/share/texmf/ptex/plain/base/ptex.tex
(/usr/local/teTeX/share/texmf-dist/tex/plain/base/plain.tex
Preloading the plain format: codes, registers, parameters, fonts, more fonts,
macros, math definitions, output routines, hyphenation
(/usr/local/teTeX/share/texmf-dist/tex/generic/hyphen/hyphen.tex))
(/usr/local/teTeX/share/texmf/ptex/plain/base/kinsoku.tex))
! Insertions can only be added to a same direction vbox.
l.22 \insert3{\yoko ふ}
16523 [main] ptex 3620 _cygtls::handle_exceptions: Error while dumping state (probably corrupted stack)
Segmentation fault (core dumped)
外のコンピュータでも調べてみました.
(漢字コードは適宜 EUC や Shift-JIS に変換してます)
pTeX 2.1.8 でも発生しているのが気になります.どこまで遡れるか,家に戻ったら調べてみます.
--- 1. Solaris 7 ? ---
$ ptex -ini a.tex
This is pTeX, Version p2.1.8, based on TeX, Version 3.14159 (EUC) (Web2C 7.2) (INITEX)
(a.tex
(/usr/local/share/texmf/tex/ptex/ptex.tex
(/usr/local/share/texmf/tex/plain/base/plain.tex
Preloading the plain format: codes, registers, parameters, fonts, more fonts,
macros, math definitions, output routines, hyphenation
(/usr/local/share/texmf/tex/generic/hyphen/hyphen.tex))
(/usr/local/share/texmf/tex/ptex/kinsoku.tex))
! Insertions can only be added to a same direction vbox.
l.22 \insert3{\yoko }
Segmentation fault
↑この投稿を書いている PC(UTF-8)から ssh で入って実行したので,日本語がここでは表示されていません^^;
--- 2. W32TeX on WinXP ---
> ptex -ini a.tex
This is pTeX, Version 3.141592-p3.1.10 (sjis) (Web2C 7.5.5) (INITEX)
(./a.tex
(c:/usr/local/share/texmf/ptex/plain/base/ptex.tex
(c:/usr/local/share/texmf/tex/plain/base/plain.tex
Preloading the plain format: codes, registers, parameters, fonts, more fonts,
macros, math definitions, output routines, hyphenation
(c:/usr/local/share/texmf/tex/generic/hyphen/hyphen.tex))
(c:/usr/local/share/texmf/ptex/plain/base/kinsoku.tex))
! Insertions can only be added to a same direction vbox.
l.22 \insert3{\yoko ふ}
(数秒後,強制終了のダイアログが出現)
↑いつの W32TeX バイナリかはよくわかりませんが,ptex.dll の更新日が 2006/11/14 のようです.
(漢字コードは適宜 EUC や Shift-JIS に変換してます)
pTeX 2.1.8 でも発生しているのが気になります.どこまで遡れるか,家に戻ったら調べてみます.
--- 1. Solaris 7 ? ---
$ ptex -ini a.tex
This is pTeX, Version p2.1.8, based on TeX, Version 3.14159 (EUC) (Web2C 7.2) (INITEX)
(a.tex
(/usr/local/share/texmf/tex/ptex/ptex.tex
(/usr/local/share/texmf/tex/plain/base/plain.tex
Preloading the plain format: codes, registers, parameters, fonts, more fonts,
macros, math definitions, output routines, hyphenation
(/usr/local/share/texmf/tex/generic/hyphen/hyphen.tex))
(/usr/local/share/texmf/tex/ptex/kinsoku.tex))
! Insertions can only be added to a same direction vbox.
l.22 \insert3{\yoko }
Segmentation fault
↑この投稿を書いている PC(UTF-8)から ssh で入って実行したので,日本語がここでは表示されていません^^;
--- 2. W32TeX on WinXP ---
> ptex -ini a.tex
This is pTeX, Version 3.141592-p3.1.10 (sjis) (Web2C 7.5.5) (INITEX)
(./a.tex
(c:/usr/local/share/texmf/ptex/plain/base/ptex.tex
(c:/usr/local/share/texmf/tex/plain/base/plain.tex
Preloading the plain format: codes, registers, parameters, fonts, more fonts,
macros, math definitions, output routines, hyphenation
(c:/usr/local/share/texmf/tex/generic/hyphen/hyphen.tex))
(c:/usr/local/share/texmf/ptex/plain/base/kinsoku.tex))
! Insertions can only be added to a same direction vbox.
l.22 \insert3{\yoko ふ}
(数秒後,強制終了のダイアログが出現)
↑いつの W32TeX バイナリかはよくわかりませんが,ptex.dll の更新日が 2006/11/14 のようです.
Vine 2.6r4 です。同じようにクラッシュします。
% ptex -ini a.tex
This is pTeX, Version p3.0.1, based on TeX, Version 3.14159 (EUC) (Web2C 7.3.1) (INITEX)
(a.tex
(/usr/share/texmf/ptex/plain/base/ptex.tex
(/usr/share/texmf/tex/plain/base/plain.tex Preloading the plain format: codes,
registers, parameters, fonts, more fonts, macros, math definitions,
output routines, hyphenation (/usr/share/texmf/tex/generic/hyphen/hyphen.tex))
(/usr/share/texmf/ptex/plain/base/kinsoku.tex))
! Insertions can only be added to a same direction vbox.
l.22 \insert3{\yoko ふ}
セグメントエラー (coreを出力しました)
> ptex, eptex: NG, uptex, euptex: OK
北川さんには釈迦に説法ですが、ちょっと解説を。
セグメントエラーはいやらしいことに、プログラムが不正でも、エラーが出るとは限らないので、上の結果だけをもって uptex, euptex のプログラムが正しいと証明されたことにはなりません。正しい可能性ももちろんありますが、潜在的に ptex 同様の間違いを持っている可能性もあります。
ここ何年もこのエラーで困った人はいないのだから、気にしなくてよいのでは、と思われる向きもあるでしょう。しかしながら、バグの具合によっては、セキュリティーホールになりえます。特に Web サービスとして TeX のコンパイルを提供しているところの攻撃材料になる可能性があります。ですから、開発に近い人ほど、バグの原因を確かめておきたいという気持ちになることでしょう。
% ptex -ini a.tex
This is pTeX, Version p3.0.1, based on TeX, Version 3.14159 (EUC) (Web2C 7.3.1) (INITEX)
(a.tex
(/usr/share/texmf/ptex/plain/base/ptex.tex
(/usr/share/texmf/tex/plain/base/plain.tex Preloading the plain format: codes,
registers, parameters, fonts, more fonts, macros, math definitions,
output routines, hyphenation (/usr/share/texmf/tex/generic/hyphen/hyphen.tex))
(/usr/share/texmf/ptex/plain/base/kinsoku.tex))
! Insertions can only be added to a same direction vbox.
l.22 \insert3{\yoko ふ}
セグメントエラー (coreを出力しました)
> ptex, eptex: NG, uptex, euptex: OK
北川さんには釈迦に説法ですが、ちょっと解説を。
セグメントエラーはいやらしいことに、プログラムが不正でも、エラーが出るとは限らないので、上の結果だけをもって uptex, euptex のプログラムが正しいと証明されたことにはなりません。正しい可能性ももちろんありますが、潜在的に ptex 同様の間違いを持っている可能性もあります。
ここ何年もこのエラーで困った人はいないのだから、気にしなくてよいのでは、と思われる向きもあるでしょう。しかしながら、バグの具合によっては、セキュリティーホールになりえます。特に Web サービスとして TeX のコンパイルを提供しているところの攻撃材料になる可能性があります。ですから、開発に近い人ほど、バグの原因を確かめておきたいという気持ちになることでしょう。
動作検証しました。直ったようです。
インデント直しておきます。(else の前のスペース2個消すだけですね。)
% ptex -ini a.tex
This is pTeXk, Version 3.1415926-p3.1.11 (utf8.euc) (TeX Live 2009) (INITEX)
restricted \write18 enabled.
(./a.tex
(/tmp/ptexlive/2009/texmf/ptex/plain/base/ptex.tex
(/tmp/ptexlive/2009/texmf-dist/tex/plain/base/plain.tex
Preloading the plain format: codes, registers, parameters, fonts, more fonts,
macros, math definitions, output routines, hyphenation
(/tmp/ptexlive/2009/texmf/tex/generic/hyphen/hyphen.tex))
(/tmp/ptexlive/2009/texmf/ptex/plain/base/kinsoku.tex))
! Insertions can only be added to a same direction vbox.
l.22 \insert3{\yoko ふ}
Underfull \vbox (badness 10000) has occurred while \output is active
Completed box being shipped out [1]
Memory usage before: 420&4935; after: 324&4934; still untouched: 2994039
! Insertions can only be added to a same direction vbox.
<to be read again>
\end
l.24 \end
Completed box being shipped out [2]
Memory usage before: 364&4933; after: 242&4931; still untouched: 2994039
)
(see the transcript file for additional information)
Output written on a.dvi (2 pages, 296 bytes).
Transcript written on a.log.
インデント直しておきます。(else の前のスペース2個消すだけですね。)
% ptex -ini a.tex
This is pTeXk, Version 3.1415926-p3.1.11 (utf8.euc) (TeX Live 2009) (INITEX)
restricted \write18 enabled.
(./a.tex
(/tmp/ptexlive/2009/texmf/ptex/plain/base/ptex.tex
(/tmp/ptexlive/2009/texmf-dist/tex/plain/base/plain.tex
Preloading the plain format: codes, registers, parameters, fonts, more fonts,
macros, math definitions, output routines, hyphenation
(/tmp/ptexlive/2009/texmf/tex/generic/hyphen/hyphen.tex))
(/tmp/ptexlive/2009/texmf/ptex/plain/base/kinsoku.tex))
! Insertions can only be added to a same direction vbox.
l.22 \insert3{\yoko ふ}
Underfull \vbox (badness 10000) has occurred while \output is active
Completed box being shipped out [1]
Memory usage before: 420&4935; after: 324&4934; still untouched: 2994039
! Insertions can only be added to a same direction vbox.
<to be read again>
\end
l.24 \end
Completed box being shipped out [2]
Memory usage before: 364&4933; after: 242&4931; still untouched: 2994039
)
(see the transcript file for additional information)
Output written on a.dvi (2 pages, 296 bytes).
Transcript written on a.log.
オプション -kanji=utf8 を追加して,追試してみました。(前のは削除しました。)
最新版の W32TeX (のはず)です。
前のツリーで報告された現象は修正済みのものです。
以下は,ログファイルです。
This is pTeX, Version 3.1415926-p3.1.11 (utf8.sjis) (Web2C 2010/dev) (INITEX) 5 MAR 2010 18:03
restricted \write18 enabled.
%&-line parsing enabled.
**a.tex
(./a.tex (c:/usr/local/share/texmf/tex/plain/ptex/ptex.tex
(c:/usr/local/share/texmf/tex/plain/base/plain.tex
Preloading the plain format: codes, registers,
\maxdimen=\dimen10
\hideskip=\skip10
\centering=\skip11
\p@=\dimen11
\z@=\dimen12
\z@skip=\skip12
\voidb@x=\box10
parameters,
\smallskipamount=\skip13
\medskipamount=\skip14
\bigskipamount=\skip15
\normalbaselineskip=\skip16
\normallineskip=\skip17
\normallineskiplimit=\dimen13
\jot=\dimen14
\interdisplaylinepenalty=\count23
\interfootnotelinepenalty=\count24
fonts, more fonts,
\itfam=\fam4
\slfam=\fam5
\bffam=\fam6
\ttfam=\fam7
macros,
\strutbox=\box11
\mscount=\count25
\tabs=\box12
\tabsyet=\box13
\tabsdone=\box14
math definitions,
\rootbox=\box15
\p@renwd=\dimen15
output routines,
\headline=\toks10
\footline=\toks11
\footins=\insert254
\topins=\insert253
hyphenation
(c:/usr/local/share/texmf/tex/generic/hyphen/hyphen.tex))
\minfam=\fam8
\gtfam=\fam9
\tminfam=\fam10
\tgtfam=\fam11
(c:/usr/local/share/texmf/tex/plain/ptex/kinsoku.tex))
! Emergency stop.
l.7
access violation
No pages of output.
最新版の W32TeX (のはず)です。
前のツリーで報告された現象は修正済みのものです。
以下は,ログファイルです。
This is pTeX, Version 3.1415926-p3.1.11 (utf8.sjis) (Web2C 2010/dev) (INITEX) 5 MAR 2010 18:03
restricted \write18 enabled.
%&-line parsing enabled.
**a.tex
(./a.tex (c:/usr/local/share/texmf/tex/plain/ptex/ptex.tex
(c:/usr/local/share/texmf/tex/plain/base/plain.tex
Preloading the plain format: codes, registers,
\maxdimen=\dimen10
\hideskip=\skip10
\centering=\skip11
\p@=\dimen11
\z@=\dimen12
\z@skip=\skip12
\voidb@x=\box10
parameters,
\smallskipamount=\skip13
\medskipamount=\skip14
\bigskipamount=\skip15
\normalbaselineskip=\skip16
\normallineskip=\skip17
\normallineskiplimit=\dimen13
\jot=\dimen14
\interdisplaylinepenalty=\count23
\interfootnotelinepenalty=\count24
fonts, more fonts,
\itfam=\fam4
\slfam=\fam5
\bffam=\fam6
\ttfam=\fam7
macros,
\strutbox=\box11
\mscount=\count25
\tabs=\box12
\tabsyet=\box13
\tabsdone=\box14
math definitions,
\rootbox=\box15
\p@renwd=\dimen15
output routines,
\headline=\toks10
\footline=\toks11
\footins=\insert254
\topins=\insert253
hyphenation
(c:/usr/local/share/texmf/tex/generic/hyphen/hyphen.tex))
\minfam=\fam8
\gtfam=\fam9
\tminfam=\fam10
\tgtfam=\fam11
(c:/usr/local/share/texmf/tex/plain/ptex/kinsoku.tex))
! Emergency stop.
l.7
access violation
No pages of output.