[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