设置:Windows 11、所有更新、texlive 2021、所有更新、来自 CTAN 的 win64。
之前使用 LuaLaTeX 编译的文件现在停止编译了(我无法检查具体时间,因为我已经有一段时间没有使用 LuaLaTeX 了)。由于我无法将 LuaLaTeX 更改为任何其他引擎(我有类似的东西卢阿特沙),我开始试验,发现即使是下面这种形式的文档:
\documentclass{article}
\begin{document}
aa
\end{document}
导致 LuaLaTeX 冻结(可能在某个循环中),并且永远无法完成。当我终止它时,日志如下所示:
This is LuaHBTeX, Version 1.13.2 (TeX Live 2021/W32TeX) (format=lualatex 2022.1.28) 5 FEB 2022 14:03
restricted system commands enabled.
**2022-02-test.tex
(./2022-02-test.tex
LaTeX2e <2021-11-15> patch level 1
Lua module: luaotfload 2021-05-21 3.18 Lua based OpenType font support
Lua module: lualibs 2021-05-20 2.74 ConTeXt Lua standard libraries.
Lua module: lualibs-extended 2021-05-20 2.74 ConTeXt Lua libraries -- extended c
ollection.
luaotfload | conf : Root cache directory is "C:/texlive/2021/texmf-var/luatex-ca
che/generic/names".
luaotfload | init : Loading fontloader "fontloader-2021-05-20.lua" from kpse-res
olved path "c:/texlive/2021/texmf-dist/tex/luatex/luaotfload/fontloader-2021-05-
20.lua".
Lua-only attribute luaotfload@noligature = 1
Lua-only attribute luaotfload@syllabe = 2
luaotfload | init : Context OpenType loader version 3.116
Inserting `luaotfload.node_processor' at position 1 in `pre_linebreak_filter'.
Inserting `luaotfload.node_processor' at position 1 in `hpack_filter'.
Inserting `luaotfload.glyph_stream' at position 1 in `glyph_stream_provider'.
Inserting `luaotfload.define_font' at position 1 in `define_font'.
Lua-only attribute luaotfload_color_attribute = 3
luaotfload | conf : Root cache directory is "C:/texlive/2021/texmf-var/luatex-ca
che/generic/names".
Inserting `luaotfload.harf.strip_prefix' at position 1 in `find_opentype_file'.
Inserting `luaotfload.harf.strip_prefix' at position 1 in `find_truetype_file'.
Inserting `luaotfload.harf.finalize_vlist' at position 1 in `post_linebreak_filt
er'.
Inserting `luaotfload.harf.finalize_hlist' at position 2 in `hpack_filter'.
Inserting `luaotfload.cleanup_files' at position 1 in `wrapup_run'.
Inserting `luaotfload.harf.finalize_unicode' at position 1 in `finish_pdffile'.
Inserting `luaotfload.glyphinfo' at position 1 in `glyph_info'.
Lua-only attribute luaotfload.letterspace_done = 4
Inserting `luaotfload.aux.set_sscale_dimens' at position 1 in `luaotfload.patch_
font'.
Inserting `luaotfload.aux.set_font_index' at position 2 in `luaotfload.patch_fon
t'.
Inserting `luaotfload.aux.patch_cambria_domh' at position 3 in `luaotfload.patch
_font'.
Inserting `luaotfload.aux.fixup_fontdata' at position 1 in `luaotfload.patch_fon
t_unsafe'.
Inserting `luaotfload.aux.set_capheight' at position 4 in `luaotfload.patch_font
'.
Inserting `luaotfload.aux.set_xheight' at position 5 in `luaotfload.patch_font'.
Inserting `luaotfload.rewrite_fontname' at position 6 in `luaotfload.patch_font'
. L3 programming layer <2022-01-21>c:/texlive/2021/texmf-dist/tex/latex/l3kernel
/expl3.lua:244: bad bytecode register
stack traceback:
[C]: in function 'lua.getbytecode'
c:/texlive/2021/texmf-dist/tex/latex/l3kernel/expl3.lua:244: in main chunk
[C]: in function 'require'
[\directlua]:1: in main chunk.
\lua_now:e #1->\__lua_now:n {#1}
l.1
\documentclass{article}
The lua interpreter ran into a problem, so the
remainder of this lua chunk will be ignored.
Inserting `tracingstacklevels' at position 1 in `input_level_string'.
! Missing \endcsname inserted.
<to be read again>
\exp_stop_f:
l.2
The control sequence marked <to be read again> should
not appear between \csname and \endcsname.
! Missing \endcsname inserted.
<to be read again>
\exp_stop_f:
l.2
The control sequence marked <to be read again> should
not appear between \csname and \endcsname.
! Missing \endcsname inserted.
<to be read again>
\exp_stop_f:
l.2
The control sequence marked <to be read again> should
not appear between \csname and \endcsname.
! Missing \endcsname inserted.
<to be read again>
\exp_stop_f:
l.2
The control sequence marked <to be read again> should
not appear between \csname and \endcsname.
! LaTeX Error: Missing \begin{document}.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.2
You're in trouble here. Try typing <return> to proceed.
If that doesn't work, type X <return> to quit.
! Extra \endcsname.
\@ifl@ter ...@ifl@t@r \csname ver@#2.#1\endcsname
l.2
I'm ignoring this, since I wasn't doing a \csname.
! Missing \endcsname inserted.
<to be read again>
\exp_stop_f:
l.2
The control sequence marked <to be read again> should
not appear between \csname and \endcsname.
LaTeX Warning: You have requested, on input line 2, version
`' of document class 97\exp_stop_f: 11\exp_stop_f: 114\exp_stop_
f: 11\exp_stop_f: 116\exp_stop_f: 11\exp_stop_f: 105\exp_stop_f: 11\exp_stop_f:
99\exp_stop_f: 11\exp_stop_f: 108\exp_stop_f: 11\exp_stop_f: 101\exp_stop_f: 1
1\exp_stop_f: ,
but only version
`\ver@97 \exp_stop_f: 11\exp_stop_f: 114\exp_stop_f: 11\exp_stop
_f: 116\exp_stop_f: 11\exp_stop_f: 105\exp_stop_f: 11\exp_stop_f: 99\exp_stop_f
: 11\exp_stop_f: 108\exp_stop_f: 11\exp_stop_f: 101\exp_stop_f: 11\exp_stop_f:
.cls\endcsname '
is available.
Overfull \hbox (20.0pt too wide) in paragraph at lines 2--2
[]1
[]
! Missing number, treated as zero.
<to be read again>
{
l.3 \begin{document}
A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)
! Argument of \prg_map_break:Nn has an extra }.
<inserted text>
\par
l.3 \begin{document}
I've run across a `}' that doesn't seem to match anything.
For example, `\def\a#1{...}' and `\a}' would produce
this error. If you simply proceed now, the `\par' that
I've just inserted will cause me to report a runaway
argument that might be the root of the problem. But if
your `}' was spurious, just type `2' and it will go away.
Runaway argument?
! Paragraph ended before \prg_map_break:Nn was complete.
<to be read again>
\par
l.3 \begin{document}
I suspect you've forgotten a `}', causing me to apply this
control sequence to too much text. How can we recover?
My plan is to forget the whole thing and hope for the best.
! Argument of \__hook_apply_label_pair:nnn has an extra }.
<inserted text>
\par
l.3 \begin{document}
I've run across a `}' that doesn't seem to match anything.
For example, `\def\a#1{...}' and `\a}' would produce
this error. If you simply proceed now, the `\par' that
I've just inserted will cause me to report a runaway
argument that might be the root of the problem. But if
your `}' was spurious, just type `2' and it will go away.
Runaway argument?
! Paragraph ended before \__hook_apply_label_pair:nnn was complete.
<to be read again>
\par
l.3 \begin{document}
I suspect you've forgotten a `}', causing me to apply this
control sequence to too much text. How can we recover?
My plan is to forget the whole thing and hope for the best.
! Argument of \__hook_apply_label_pair:nnn has an extra }.
<inserted text>
\par
l.3 \begin{document}
I've run across a `}' that doesn't seem to match anything.
For example, `\def\a#1{...}' and `\a}' would produce
this error. If you simply proceed now, the `\par' that
I've just inserted will cause me to report a runaway
argument that might be the root of the problem. But if
your `}' was spurious, just type `2' and it will go away.
Runaway argument?
! Paragraph ended before \__hook_apply_label_pair:nnn was complete.
<to be read again>
\par
l.3 \begin{document}
I suspect you've forgotten a `}', causing me to apply this
control sequence to too much text. How can we recover?
My plan is to forget the whole thing and hope for the best.
! LaTeX Error: Missing \begin{document}.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.3 \begin{document}
You're in trouble here. Try typing <return> to proceed.
If that doesn't work, type X <return> to quit.
! Missing number, treated as zero.
<to be read again>
{
l.3 \begin{document}
A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)
! Argument of \prg_map_break:Nn has an extra }.
<inserted text>
\par
l.3 \begin{document}
I've run across a `}' that doesn't seem to match anything.
For example, `\def\a#1{...}' and `\a}' would produce
this error. If you simply proceed now, the `\par' that
I've just inserted will cause me to report a runaway
argument that might be the root of the problem. But if
your `}' was spurious, just type `2' and it will go away.
Runaway argument?
! Paragraph ended before \prg_map_break:Nn was complete.
<to be read again>
\par
l.3 \begin{document}
I suspect you've forgotten a `}', causing me to apply this
control sequence to too much text. How can we recover?
My plan is to forget the whole thing and hope for the best.
Overfull \hbox (20.0pt too wide) in paragraph at lines 3--3
[]enddocument/info
[]
! Argument of \__hook_apply_label_pair:nnn has an extra }.
<inserted text>
\par
l.3 \begin{document}
I've run across a `}' that doesn't seem to match anything.
For example, `\def\a#1{...}' and `\a}' would produce
this error. If you simply proceed now, the `\par' that
I've just inserted will cause me to report a runaway
argument that might be the root of the problem. But if
your `}' was spurious, just type `2' and it will go away.
Runaway argument?
! Paragraph ended before \__hook_apply_label_pair:nnn was complete.
<to be read again>
\par
l.3 \begin{document}
I suspect you've forgotten a `}', causing me to apply this
control sequence to too much text. How can we recover?
My plan is to forget the whole thing and hope for the best.
! Argument of \__hook_apply_label_pair:nnn has an extra }.
<inserted text>
\par
l.3 \begin{document}
I've run across a `}' that doesn't seem to match anything.
For example, `\def\a#1{...}' and `\a}' would produce
this error. If you simply proceed now, the `\par' that
I've just inserted will cause me to report a runaway
argument that might be the root of the problem. But if
your `}' was spurious, just type `2' and it will go away.
Runaway argument?
! Paragraph ended before \__hook_apply_label_pair:nnn was complete.
<to be read again>
\par
l.3 \begin{document}
I suspect you've forgotten a `}', causing me to apply this
control sequence to too much text. How can we recover?
My plan is to forget the whole thing and hope for the best.
! LaTeX Error: Missing \begin{document}.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.3 \begin{document}
You're in trouble here. Try typing <return> to proceed.
If that doesn't work, type X <return> to quit.
! Missing number, treated as zero.
<to be read again>
{
l.3 \begin{document}
A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)
! Argument of \prg_map_break:Nn has an extra }.
<inserted text>
\par
l.3 \begin{document}
I've run across a `}' that doesn't seem to match anything.
For example, `\def\a#1{...}' and `\a}' would produce
this error. If you simply proceed now, the `\par' that
I've just inserted will cause me to report a runaway
argument that might be the root of the problem. But if
your `}' was spurious, just type `2' and it will go away.
Runaway argument?
! Paragraph ended before \prg_map_break:Nn was complete.
<to be read again>
\par
l.3 \begin{document}
I suspect you've forgotten a `}', causing me to apply this
control sequence to too much text. How can we recover?
My plan is to forget the whole thing and hope for the best.
Overfull \hbox (20.0pt too wide) in paragraph at lines 3--3
[]enddocument/info
[]
! Argument of \__hook_apply_label_pair:nnn has an extra }.
<inserted text>
\par
l.3 \begin{document}
I've run across a `}' that doesn't seem to match anything.
For example, `\def\a#1{...}' and `\a}' would produce
this error. If you simply proceed now, the `\par' that
I've just inserted will cause me to report a runaway
argument that might be the root of the problem. But if
your `}' was spurious, just type `2' and it will go away.
Runaway argument?
! Paragraph ended before \__hook_apply_label_pair:nnn was complete.
<to be read again>
\par
l.3 \begin{document}
I suspect you've forgotten a `}', causing me to apply this
control sequence to too much text. How can we recover?
My plan is to forget the whole thing and hope for the best.
! Argument of \__hook_apply_label_pair:nnn has an extra }.
<inserted text>
\par
l.3 \begin{document}
I've run across a `}' that doesn't seem to match anything.
For example, `\def\a#1{...}' and `\a}' would produce
this error. If you simply proceed now, the `\par' that
I've just inserted will cause me to report a runaway
argument that might be the root of the problem. But if
your `}' was spurious, just type `2' and it will go away.
Runaway argument?
! Paragraph ended before \__hook_apply_label_pair:nnn was complete.
<to be read again>
\par
l.3 \begin{document}
I suspect you've forgotten a `}', causing me to apply this
control sequence to too much text. How can we recover?
My plan is to forget the whole thing and hope for the best.
! LaTeX Error: Missing \begin{document}.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.3 \begin{document}
You're in trouble here. Try typing <return> to proceed.
If that doesn't work, type X <return> to quit.
! Missing number, treated as zero.
<to be read again>
{
l.3 \begin{document}
A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)
! Argument of \prg_map_break:Nn has an extra }.
<inserted text>
\par
l.3 \begin{document}
I've run across a `}' that doesn't seem to match anything.
For example, `\def\a#1{...}' and `\a}' would produce
this error. If you simply proceed now, the `\par' that
I've just inserted will cause me to report a runaway
argument that might be the root of the problem. But if
your `}' was spurious, just type `2' and it will go away.
Runaway argument?
! Paragraph ended before \prg_map_break:Nn was complete.
<to be read again>
\par
l.3 \begin{document}
I suspect you've forgotten a `}', causing me to apply this
control sequence to too much text. How can we recover?
My plan is to forget the whole thing and hope for the best.
Overfull \hbox (20.0pt too wide) in paragraph at lines 3--3
[]enddocument/info
[]
! Argument of \__hook_apply_label_pair:nnn has an extra }.
<inserted text>
\par
l.3 \begin{document}
I've run across a `}' that doesn't seem to match anything.
For example, `\def\a#1{...}' and `\a}' would produce
this error. If you simply proceed now, the `\par' that
I've just inserted will cause me to report a runaway
argument that might be the root of the problem. But if
your `}' was spurious, just type `2' and it will go away.
Runaway argument?
! Paragraph ended before \__hook_apply_label_pair:nnn was complete.
<to be read again>
\par
l.3 \begin{document}
I suspect you've forgotten a `}', causing me to apply this
control sequence to too much text. How can we recover?
My plan is to forget the whole thing and hope for the best.
! Argument of \__hook_apply_label_pair:nnn has an extra }.
<inserted text>
\par
l.3 \begin{document}
I've run across a `}' that doesn't seem to match anything.
For example, `\def\a#1{...}' and `\a}' would produce
this error. If you simply p
进一步的实验使我得到以下结果:
- PdfLaTeX 可以正常运行。
- XeLaTeX 可以正常运行。
- 文件夹 \texlive\2021\bin\win32 中的 lualatex.exe 工作正常,并生成以下日志:
This is LuaHBTeX, Version 1.13.2 (TeX Live 2021/W32TeX) (format=lualatex 2022.1.28) 5 FEB 2022 14:12
restricted system commands enabled.
**2022-02-test.tex
(./2022-02-test.tex
LaTeX2e <2021-11-15> patch level 1
Lua module: luaotfload 2021-05-21 3.18 Lua based OpenType font support
Lua module: lualibs 2021-05-20 2.74 ConTeXt Lua standard libraries.
Lua module: lualibs-extended 2021-05-20 2.74 ConTeXt Lua libraries -- extended c
ollection.
luaotfload | conf : Root cache directory is "C:/texlive/2021/texmf-var/luatex-ca
che/generic/names".
luaotfload | init : Loading fontloader "fontloader-2021-05-20.lua" from kpse-res
olved path "c:/texlive/2021/texmf-dist/tex/luatex/luaotfload/fontloader-2021-05-
20.lua".
Lua-only attribute luaotfload@noligature = 1
Lua-only attribute luaotfload@syllabe = 2
luaotfload | init : Context OpenType loader version 3.116
Inserting `luaotfload.node_processor' at position 1 in `pre_linebreak_filter'.
Inserting `luaotfload.node_processor' at position 1 in `hpack_filter'.
Inserting `luaotfload.glyph_stream' at position 1 in `glyph_stream_provider'.
Inserting `luaotfload.define_font' at position 1 in `define_font'.
Lua-only attribute luaotfload_color_attribute = 3
luaotfload | conf : Root cache directory is "C:/texlive/2021/texmf-var/luatex-ca
che/generic/names".
Inserting `luaotfload.harf.strip_prefix' at position 1 in `find_opentype_file'.
Inserting `luaotfload.harf.strip_prefix' at position 1 in `find_truetype_file'.
Inserting `luaotfload.harf.finalize_vlist' at position 1 in `post_linebreak_filt
er'.
Inserting `luaotfload.harf.finalize_hlist' at position 2 in `hpack_filter'.
Inserting `luaotfload.cleanup_files' at position 1 in `wrapup_run'.
Inserting `luaotfload.harf.finalize_unicode' at position 1 in `finish_pdffile'.
Inserting `luaotfload.glyphinfo' at position 1 in `glyph_info'.
Lua-only attribute luaotfload.letterspace_done = 4
Inserting `luaotfload.aux.set_sscale_dimens' at position 1 in `luaotfload.patch_
font'.
Inserting `luaotfload.aux.set_font_index' at position 2 in `luaotfload.patch_fon
t'.
Inserting `luaotfload.aux.patch_cambria_domh' at position 3 in `luaotfload.patch
_font'.
Inserting `luaotfload.aux.fixup_fontdata' at position 1 in `luaotfload.patch_fon
t_unsafe'.
Inserting `luaotfload.aux.set_capheight' at position 4 in `luaotfload.patch_font
'.
Inserting `luaotfload.aux.set_xheight' at position 5 in `luaotfload.patch_font'.
Inserting `luaotfload.rewrite_fontname' at position 6 in `luaotfload.patch_font'
. L3 programming layer <2022-01-21>
Inserting `tracingstacklevels' at position 1 in `input_level_string'.
(c:/texlive/2021/texmf-dist/tex/latex/base/article.cls
Document Class: article 2021/10/04 v1.4n Standard LaTeX document class
(c:/texlive/2021/texmf-dist/tex/latex/base/size10.clo
File: size10.clo 2021/10/04 v1.4n Standard LaTeX file (size option)
luaotfload | db : Font names database loaded from C:/texlive/2021/texmf-var/luat
ex-cache/generic/names/luaotfload-names.lua.gz)
\c@part=\count183
\c@section=\count184
\c@subsection=\count185
\c@subsubsection=\count186
\c@paragraph=\count187
\c@subparagraph=\count188
\c@figure=\count189
\c@table=\count190
\abovecaptionskip=\skip47
\belowcaptionskip=\skip48
\bibindent=\dimen137
)
(c:/texlive/2021/texmf-dist/tex/latex/l3backend/l3backend-luatex.def
File: l3backend-luatex.def 2022-01-12 L3 backend support: PDF output (LuaTeX)
\l__color_backend_stack_int=\count191
\l__pdf_internal_box=\box50
)
(./2022-02-test.aux)
\openout1 = 2022-02-test.aux
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 3.
LaTeX Font Info: ... okay on input line 3.
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 3.
LaTeX Font Info: ... okay on input line 3.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 3.
LaTeX Font Info: ... okay on input line 3.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 3.
LaTeX Font Info: ... okay on input line 3.
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 3.
LaTeX Font Info: Trying to load font information for TS1+cmr on input line 3
.
(c:/texlive/2021/texmf-dist/tex/latex/base/ts1cmr.fd
File: ts1cmr.fd 2019/12/16 v2.5j Standard LaTeX font definitions
)
LaTeX Font Info: ... okay on input line 3.
LaTeX Font Info: Checking defaults for TU/lmr/m/n on input line 3.
LaTeX Font Info: ... okay on input line 3.
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 3.
LaTeX Font Info: ... okay on input line 3.
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 3.
LaTeX Font Info: ... okay on input line 3.
[1
{c:/texlive/2021/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
(./2022-02-test.aux))
Here is how much of LuaTeX's memory you used:
452 strings out of 477811
100000,383344 words of node,token memory allocated
406 words of node memory still in use:
3 hlist, 1 vlist, 1 rule, 2 glue, 3 kern, 1 glyph, 4 attribute, 48 glue_spec,
4 attribute_list, 1 write nodes
avail lists: 2:23,3:4,4:2,5:22,6:2,7:32,9:18
21219 multiletter control sequences out of 65536+600000
15 fonts using 510647 bytes
33i,5n,37p,132b,123s stack positions out of 5000i,500n,10000p,200000b,80000s
<c:/texlive/2021/texmf-dist/fonts/opentype/public/lm/lmroman10-regular.otf>
Output written on 2022-02-test.pdf (1 page, 2619 bytes).
PDF statistics: 15 PDF objects out of 1000 (max. 8388607)
8 compressed objects within 1 object stream
0 named destinations out of 1000 (max. 131072)
1 words of extra memory for PDF output out of 10000 (max. 100000000)
- 我默认使用的文件夹 \texlive\2021\bin\win64 中的 lualatex.exe 不起作用并产生上述日志。
我手动清除了 \win64 文件夹并将其替换为https://ctan.org/tex-archive/systems/win32/w32tex/TLW64/。这并没有改变什么:XeLaTeX 可以正常工作,无论是 win32 还是 win64,只有 LuaLaTeX 只能在 win32 上运行。至于 win64 中的 pdfLaTeX 版本,它甚至无法启动。综上所述,我认为 win64 版本的可执行文件出现了一些问题。我现在可以继续使用 win32 版本一段时间(就像我一直使用 pdfLaTeX 一样),但仍然希望有一个可以正常工作的 LuaLaTeX,因为我经常用 LuaLaTeX 处理非常大的文件,而 32 位版本无法处理这些文件。
答案1
我想到了一个解决方法,那就是将环境变量 TEXMFSYSVAR_lualatex 定义为“不同”机器上的本地目录,然后运行fmtutil-sys --byfmt lualatex
以更新它。这样,所有可共享的 fmt 都可以保持共享,而不是拥有所有内容的单独副本。尽管在某些情况下拥有单独的副本可能更方便。
顺便说一句,正如我们在 github 问题中讨论的那样,它不是字节码,而是“仅”整数/表格式。如果您选择解决它,这似乎是可以解决的 :)。