[Dev-luatex] Assertion while typesetting: vlink(alink(r))==r
Jonathan Sauer
Jonathan.Sauer at silverstroke.com
Thu Dec 6 09:18:20 CET 2007
Hello,
while typesetting a document of mine (just to check if my documents
still work with the new LuaTeX beta), I got the following result
(I used Arthur's build for OS X):
-----------------------------------------------------------------
This is LuaTeX, Version snapshot-0.20.0-2007120515 (Web2C 7.5.6)
(Schwarzfahren.tex
(/Dokumente/Writing/trunk/Writing/DerProzess/TeX/tex/prozess.kprj
[more included files]
(Schwarzfahren.aux../../../../src/texk/web2c/luatexdir/tex/linebreak.c:215: failed assertion `vlink(alink(r))==r'
))Abort trap
-----------------------------------------------------------------
I was unable to determine what exactly caused the assertion.
Unfortunately, the document uses neither LaTeX nor Context nor
PlainTeX, so I am also unable to post it here (unless I would post
the macros as well). The raw text (without umlauts and headings)
can be typeset correctly using PlainTeX.
A more detailed log (with TeX's tracing turned on):
-----------------------------------------------------------------
\BT:centerLine #1->\:noindent \BT:strut \:hfill #1\:hfill \BT:strut \:par
#1<-Schwarzfahren
{\noindent}
\BT:strut ->\:relax \:ifmmode \:copy \:strutbox \:else \:unhcopy \:strutbox \:f
i
{horizontal mode: \relax}
{\ifmmode}
{false}
{\unhcopy}
{\fi}
{\hfill}
{the letter S}
{\hfill}
\BT:strut ->\:relax \:ifmmode \:copy \:strutbox \:else \:unhcopy \:strutbox \:f
i
{\relax}
{\ifmmode}
{false}
{\unhcopy}
{\fi}
{\par}
@firstpass
[]| \FS:O at font@t1/lmss/r/r/n/n/10 at font Schwarz-fah-ren
@ via @@0 b=0 p=0 d=100
@@1: line 1.2 t=100 -> @@0
|
@\par via @@0 b=0 p=-10000 d=100
@\par via @@1 b=0 p=-10000 d=100
@@2: line 1.2- t=100 -> @@0
../../../../src/texk/web2c/luatexdir/tex/linebreak.c:215: failed assertion `vlink(alink(r))==r'
Abort trap
-----------------------------------------------------------------
Also a little bit above this trace, while creating the current
strut box, there are some weird "reassigning" messages:
-----------------------------------------------------------------
{\setbox}
{entering hbox group (level 2) at line 33}
{reassigning [unknown integer parameter!]=0}
{reassigning [unknown integer parameter!]=0}
{reassigning [unknown integer parameter!]=0}
{changing [level_local_dir]=1}
{into [level_local_dir]=3}
{restricted horizontal mode: \vrule}
-----------------------------------------------------------------
If I disable font switches, a little bit more text is typeset before
LuaTeX aborts with the same assertion. The text fragment typeset is
(the \section results in "Einziges Kapitel: Berufswahl..." as seen
below):
-----------------------------------------------------------------
\chapter{Schwarzfahren}<
preamble= {Februar `12},
label= {12.Schwarzfahren},
>
\section{Berufswahl per Ausschlußverfahren}<
preamble= {Worin ein ungestörtes Plätzchen (noch) eine
Straßenbahnreise entfernt ist; ein Generalverdacht
wird bedenkenlos akzeptiert; ein Glücksspieler
verliert das Spiel; und eine Frage wird lieber nicht
gestellt.},
datewritten={????/??/??, 2007/11/26},
>
-----------------------------------------------------------------
And the trace (also note how TeX's primitives are traced with
their original name and not the name they have in the macros):
-----------------------------------------------------------------
[now the \chapter's title is typeset]
\BT:centerLine #1->\:noindent \BT:strut \:hfill #1\:hfill \BT:strut \:par
#1<-Schwarzfahren
{\noindent}
\BT:strut ->\:relax \:ifmmode \:copy \:strutbox \:else \:unhcopy \:strutbox \:f
i
{horizontal mode: \relax}
{\ifmmode}
{false}
{\unhcopy}
{\fi}
{\hfill}
{the letter S}
{\hfill}
\BT:strut ->\:relax \:ifmmode \:copy \:strutbox \:else \:unhcopy \:strutbox \:f
i
{\relax}
{\ifmmode}
{false}
{\unhcopy}
{\fi}
{\par}
@firstpass
[] Schwarz-fah-ren
@\par via @@0 b=0 p=-10000 d=100
@@1: line 1.2- t=100 -> @@0
%% goal height=431.24408, max depth=4.0
% t=0.0 g=431.24408 b=10000 p=0 c=100000#
\BT:suppressNextParIndent ->\:begingroup \:edef \:Mi {\:the \:everypar }\:expan
dafter \:endgroup \:ifx \:Mi \:empty \:global \:everypar {\:global \:everypar {
}{\:setbox \:z \:lastbox }}\:else \:global \:everypar \:expandafter {\:expandaf
ter \:global \:expandafter \:everypar \:expandafter {\:the \:everypar }{\:setbo
x \:z \:lastbox }\:the \:everypar }\:fi
[about 10000 lines of trace inbetween, mostly key-value processing]
[now the \section's title immediately after the \chapter is typeset]
\CF:first:b #1->#1
#1<-: Berufswahl per Ausschlußverfahren
{blank space }
{the letter B}
{blank space }
{the letter p}
{blank space }
{the letter A}
ß->\EX:protect \OE:ssharp
\EX:protect ->
\OE:ssharp ->\:char 255
{\par}
@firstpass
[]Ein-zi-ges
@ via @@0 b=0 p=0 d=100
@@1: line 1.2 t=100 -> @@0
Ka-pi-tel:
@ via @@0 b=0 p=0 d=100
@ via @@1 b=0 p=0 d=100
@@2: line 1.2 t=100 -> @@0
Be-rufs-wahl
@ via @@0 b=0 p=0 d=100
@ via @@1 b=0 p=0 d=100
@ via @@2 b=0 p=0 d=100
@@3: line 1.2 t=100 -> @@0
per
@ via @@0 b=0 p=0 d=100
@ via @@1 b=0 p=0 d=100
@ via @@2 b=0 p=0 d=100
@ via @@3 b=0 p=0 d=100
@@4: line 1.2 t=100 -> @@0
Aus-schluÿ-ver-fah-ren
@\par via @@0 b=0 p=-10000 d=100
@\par via @@1 b=0 p=-10000 d=100
@\par via @@2 b=0 p=-10000 d=100
@\par via @@3 b=0 p=-10000 d=100
@\par via @@4 b=0 p=-10000 d=100
@@5: line 1.2- t=100 -> @@0
../../../../src/texk/web2c/luatexdir/tex/linebreak.c:215: failed assertion `vlink(alink(r))==r'
Abort trap
-----------------------------------------------------------------
(LuaTeX beta 0.11.2 worked correctly)
@Taco: What do you need to narrow this down? I can try to create a
PlainTeX document exhibiting the same behaviour. Or maybe you could
include some more tracing of the line breaking algorithm (just
temporarily, in the trunk), and I send you the log file of the run.
The document uses the "process_input_buffer" callback to convert
vom MacRoman to UTF-8. It uses Latin Modern, T1 encoding. It uses a
simple OTR with a single column as well as a simple header and footer.
It does not use any specials, but the pdfTeX color stack. It uses
Context's UTF-8 hyphenation patterns for traditional german, slightly
modified to include "y diaresis" as a synonym for "s sharp".
Jonathan
More information about the dev-luatex
mailing list