pTeX の不審な挙動(その2)

pTeX の不審な挙動(その2)

- 北川 弘典 の投稿
返信数: 5
またも以下の2ソースで,pTeX が不審な挙動を示すことを確認しました.
(解決策をまだ考えられていないのが残念ですが)

実行方法は,例によって ptex -ini です.
環境は,Gentoo (amd64) 上で,tetex-src-3.0 + pTeX-3.1.11 です.
(前スレの角藤さんのパッチは当ててあります.それ以外はそのまま)


--- b.tex ここから ---
\input ptex.tex

\tracingall
% このときだけ結果がおかしい.「葉」「あ」が消える
\setbox0=\hbox{\ybaselineshift=1pt
p\kern 2pt \unkern 葉\kern3pt\unkern あ
\discretionary{a}{x}{b}\kern5pt\unkern l gg}\box0

\setbox0=\hbox{\ybaselineshift=0pt
p\kern 2pt \unkern 葉\kern3pt\unkern あ
\discretionary{a}{x}{b}\kern5pt\unkern l gg}\box0

\setbox0=\hbox{\ybaselineshift=1pt
p\kern 2pt \unkern 葉\kern3pt\unkern あ
\kern5pt\unkern l gg}\box0

\setbox0=\hbox{\ybaselineshift=0pt
p\kern 2pt \unkern 葉\kern3pt\unkern あ
\kern5pt\unkern l gg}\box0

\end
--- b.tex ここまで ---

ソース中のコメントに書きましたが,(segfaultしないとしても)
最初の段落だけ,日本語の「葉」「あ」が書けてしまいます.
ptex-base.ch [47.1105] delete_last 中の,disc_node まわりの処理が
おかしくなっているような気がします.

また,このソースは
> https://okumuralab.org/tex/mod/forum/discuss.php?d=402#p2150
に載せたものと実質的には同じものです.


--- c.tex ここから ---
\input ptex.tex

\tracingall
\chardef\er=`ぴ
\hbox{\tate\accent`いえ\accent`い x\accent`れ\er}
\end
--- c.tex ここまで ---
こちらは segfault します.3つ一組が揃ってエラーが起きるようです.

北川 弘典 への返信

Re: pTeX の不審な挙動(その2)

- Akira Kakuto の投稿
旧 a.tex と c.tex に対するパッチです。
b.tex と新 a.tex はわかりません。
新 a.tex は p=-null (minus null ? 無意味?) のときアクセス違反
となっているように見えます。

Akira Kakuto への返信

Re: pTeX の不審な挙動(その2)

- Akira Kakuto の投稿
旧 a.tex, b.tex, c.texに対するパッチです。
c.tex はアクセス違反が無くなるだけで、解決では
ないかもしれません。
新 a.tex は p=max_halfword になってアクセス違反に
なっているようです。他のところに原因があるのでしょうけど。

Akira Kakuto への返信

Re: pTeX の不審な挙動(その2)

- 北川 弘典 の投稿
パッチありがとうございます.b.texで動作を確認しました.c.texでは,アクセス違反はなくなっているようですが,dviは不正なもののような気がします.

しかし,
> { @<Append |disp_node| at begin of displace area@>; }
の副作用なのか,今度は次のソースで無限ループが発生しているようです:
(3/7付けのパッチでは大丈夫でした)

--- b2.tex ここから ---
\input ptex.tex
\setbox0=\hbox{\ybaselineshift=1pt

p\kern 2pt \unkern 葉\kern3pt\unkern あ
% 下のようにすると無限ループ
\discretionary{a}{x}{b}\kern5pt\unkern}

\showboxdepth=\maxdimen\showboxbreadth=\maxdimen\showbox0\box0\end
--- ここまで ---
北川 弘典 への返信

Re: pTeX の不審な挙動(その2)

- 北川 弘典 の投稿
b2.tex については,
ptex-base.ch.0308.diff + ptex-base.ch.0308-b.diff
で無限ループは収まるようです.

しかし,今度は(b2.tex 処理時)「葉」「あ」の間に
\displace 1.0 が挟まってしまいます.