TeXworks (win32) で LuaTeX が Process crashed?

TeXworks (win32) で LuaTeX が Process crashed?

- aminophen の投稿
返信数: 7
W32TeX でインストールした LuaTeX beta-0.95.0 を TeXworks から呼び出して走らせると、
LuaTeX のプロセスがクラッシュするという現象に見舞われています。
TeXworks 0.6.0 (travis-ci) [r.e6d213b, 2016/04/03 18:34]
Win7 64bit (Professional)
です。同様の現象が再現する方はいらっしゃるでしょうか?

以下、詳細です:

A\bye

とだけ書いた test.tex を TeXworks から

luatex.exe
$synctexoption
$fullname

で呼び出すと、ログの表示が

This is LuaTeX, Version beta-0.95.0 (TeX Live 2016/W32TeX)
restricted system commands enabled.
(./test.tex
Process crashed

となります。これだと何も情報がないので、test.tex を

\tracingall A\bye

にしてみると

This is LuaTeX, Version beta-0.95.0 (TeX Live 2016/W32TeX)
restricted system commands enabled.
(./test.tex
{vertical mode: \tracingstats}
{\tracingpages}
{\tracingoutput}
{\tracinglostchars}
{\tracingmacros}
{\tracingparagraphs}
{\tracingrestores}
{\showboxbreadth}
{\showboxdepth}
{\errorstopmode}

{\tracinggroups}
{\tracingifs}
{\tracingscantokens}
{\tracingnesting}
{\tracingassigns}
{the letter A}
{horizontal mode: the letter A}

\bye ->\par \vfill \supereject \end
{\par}
@firstpass
[]\tenrm A
@\par via @0 b=0 p=-10000 d=100
@@1: line 1.2- t=100 -> @0

%% goal height=643.20255, max depth=4.0
{vertical mode: \vfill}

\supereject ->\par \penalty -\@MM
{\par}
% t=10.0 g=643.20255 b=10000 p=0 c=100000#
{\penalty}
% t=10.0 plus 1.0fill g=643.20255 b=0 p=-20000 c=-20000#
{globally changing \outputpenalty=0}
{into \outputpenalty=-20000}
\output->{\plainoutput }
{entering output group (level 1) at line 1}

\plainoutput ->\shipout \vbox {\makeheadline \pagebody \makefootline }\advancep
ageno \ifnum \outputpenalty >-\@MM \else \dosupereject \fi
{internal vertical mode: \shipout}
{entering vbox group (level 2) at line 1}
{reassigning \bodydir TLT}
{reassigning \pardir TLT}
{reassigning \textdir TLT}

\makeheadline ->\vbox to\z@ {\vskip -22.5\p@ \line {\vbox to8.5\p@ {}\the \head
line }\vss }\nointerlineskip
{\vbox}
{entering vbox group (level 3) at line 1}
{reassigning \bodydir TLT}
{reassigning \pardir TLT}
{reassigning \textdir TLT}
{\vskip}

\line ->\hbox to\hsize
{\hbox}
{entering adjusted hbox group (level 4) at line 1}
{reassigning \bodydir TLT}
{reassigning \pardir TLT}
{reassigning \textdir TLT}
{restricted horizontal mode: \vbox}
{entering vbox group (level 5) at line 1}
{reassigning \bodydir TLT}
{reassigning \pardir TLT}
{reassigning \textdir TLT}
{internal vertical mode: end-group character }}
{leaving vbox group (level 5) entered at line 1}
{restricted horizontal mode: \the}
{\hfil}
{end-group character }}
{leaving adjusted hbox group (level 4) entered at line 1}
{internal vertical mode: \vss}
{end-group character }}
{leaving vbox group (level 3) entered at line 1}

\nointerlineskip ->\prevdepth -1000\p@
{\prevdepth}

\pagebody ->\vbox to\vsize {\boxmaxdepth \maxdepth \pagecontents }
{\vbox}
{entering vbox group (level 3) at line 1}
{reassigning \bodydir TLT}
{reassigning \pardir TLT}
{reassigning \textdir TLT}
{\boxmaxdepth}
{changing \boxmaxdepth=16383.99998pt}
{into \boxmaxdepth=4.0pt}

\pagecontents ->\ifvoid \topins \else \unvbox \topins \fi \dimen@ =\dp \@cclv \
unvbox \@cclv \ifvoid \footins \else \vskip \skip \footins \footnoterule \unvbo
x \footins \fi \ifr@ggedbottom \kern -\dimen@ \vfil \fi
{\ifvoid: (level 1) entered on line 1}
{true}
{\else: \ifvoid (level 1) entered on line 1}
{\fi: \ifvoid (level 1) entered on line 1}
{\dimen0}
{reassigning \dimen0=0.0pt}
{\unvbox}
{\ifvoid: (level 1) entered on line 1}
{true}
{\else: \ifvoid (level 1) entered on line 1}
{\fi: \ifvoid (level 1) entered on line 1}
{\iffalse: (level 1) entered on line 1}
{false}
{\fi: \iffalse (level 1) entered on line 1}
{end-group character }}
{restoring \boxmaxdepth=16383.99998pt}
{leaving vbox group (level 3) entered at line 1}

\makefootline ->\baselineskip 24\p@ \lineskiplimit \z@ \line {\the \footline }
{\baselineskip}
{changing \baselineskip=12.0pt}
{into \baselineskip=24.0pt}
{\lineskiplimit}
{reassigning \lineskiplimit=0.0pt}

\line ->\hbox to\hsize
{\hbox}
{entering adjusted hbox group (level 3) at line 1}
{reassigning \bodydir TLT}
{reassigning \pardir TLT}
{reassigning \textdir TLT}
{restricted horizontal mode: \the}
{\hss}
{select font cmr10}
{reassigning current font=\tenrm}

\folio ->\ifnum \pageno <\z@ \romannumeral -\pageno \else \number \pageno \fi
{\ifnum: (level 1) entered on line 1}
{false}
{\else: \ifnum (level 1) entered on line 1}
{\number}
{the character 1}
{\fi: \ifnum (level 1) entered on line 1}
{\hss}
{end-group character }}
{leaving adjusted hbox group (level 3) entered at line 1}
{internal vertical mode: end-group character }}
{restoring \baselineskip=12.0pt}
{leaving vbox group (level 2) entered at line 1}

Completed box being shipped out [1]
Process crashed

というところで落ちます。

・コマンドプロンプトからは正常に test.pdf が出る
・pdftex や xetex は正常
・luatex-w32.tar.xz の beta-0.80.0 は正常、luatex-dev-w32.tar.xz の beta-0.95.0 だけ落ちる

ので不思議です。
aminophen への返信

LuaTeX の synctex で Process crashed?

- aminophen の投稿
ごめんなさい、TeXworks は関係なかったようです。

luatex -synctex=1 test

で luatex.exe が落ちるようです。
synctex まわりで何か問題がありそうです。
aminophen への返信

Re: TeXworks (win32) で LuaTeX が Process crashed?

- Akira Kakuto の投稿
コマンドプロンプトでも
% luatex -synctex=1 test.tex
This is a test.
\bye

はだめです。(pdf も log ファイルもサイズ 0)。
問い合わせて見ます。
Akira Kakuto への返信

Re: TeXworks (win32) で LuaTeX が Process crashed?

- Akira Kakuto の投稿
一般的なやつは OK ですが,簡単な
% luatex -synctex=1 test.tex
A
\bye

がだめのようです。LuaTeX にバグがあると思います。なお,
% luatex -synctex=1 test.tex
\input ""
A
\bye

は OK です。
Akira Kakuto への返信

Re: TeXworks (win32) で LuaTeX が Process crashed?

- 前田 一貴 の投稿
Linux でも floating point exception で落ちたので,gdb にかけてみました.

(gdb) r -synctex=1 test
Starting program: /usr/local/texlive/2016/bin/x86_64-linux/luatex -synctex=1 test
This is LuaTeX, Version beta-0.95.0 (TeX Live 2016)
restricted system commands enabled.
(./test.tex
Program received signal SIGFPE, Arithmetic exception.
0x00000000005719b6 in synctex_record_glue (p=355) at ../../../source/texk/web2c/synctexdir/synctex.c:1680
1680     len = SYNCTEX_fprintf(SYNCTEX_FILE, "g%i,%i:%i,%i\n",
(gdb) l
1675 {
1676     int len = 0;
1677 #  if SYNCTEX_DEBUG > 999
1678     printf("\nSynchronize DEBUG: synctex_glue_recorder\n");
1679 #  endif
1680     len = SYNCTEX_fprintf(SYNCTEX_FILE, "g%i,%i:%i,%i\n",
1681                           SYNCTEX_TAG_MODEL(p,glue),
1682                           SYNCTEX_LINE_MODEL(p,glue),
1683                           synctex_ctxt.curh UNIT, synctex_ctxt.curv UNIT);
1684     if (len > 0) {
(gdb) p synctex_ctxt.curh UNIT
Division by zero
(gdb) p synctex_ctxt.unit
$1 = 0

なぜかゼロ割りが起こっているようです.
(#  define UNIT / synctex_ctxt.unit)
ちなみに,trunk だと落ちるのですが,experimental の方だと落ちないような気がします.
前田 一貴 への返信

Re: TeXworks (win32) で LuaTeX が Process crashed?

- Akira Kakuto の投稿
ありがとうございます。
glue? に関しての変更がされているので,synctex file が
作成される場合にも,synctex は働かないようです。
つまり,現在の 0.95.0 では synctex は働かない?
間違っているかもしれません。
Akira Kakuto への返信

Re: TeXworks (win32) で LuaTeX が Process crashed?

- Akira Kakuto の投稿
TeX Live r40592 で fix されました。
Akira Kakuto への返信

Re: TeXworks (win32) で LuaTeX が Process crashed?

- aminophen の投稿
> TeX Live r40592 で fix されました。

MinGW で rebuild して確認しました。
synctex を使っても落ちなくなりましたし、ジャンプも
正常になりました。ありがとうございました。