[tex-k] fmtutil bogus infinite loop

Norbert Preining preining at logic.at
Mon Dec 21 10:09:08 CET 2009


Dear all,

I found that with current fmtutil if you duplicate a format definition
in fmtutil.cnf, fmtutil breaks down with
	Infinite loop detected
The problem is quite simple: We try to detect recursive calls to fmtutil
by adding
	$format/$engine
to an exported variable, and check that this format/engine combination
hasn't been built already.

(Easy to reproduce, edit your fmtutil.cnf, duplicate the first format
definition you find, run fmtutil-sys --all)

But we do not reset that variable when a new format is generated.

I was thinking a bit how to fix it, but the structure of the script
does not lend itself easy to fixing that at the read of the lines.

I decided for a much simpler approach: the infinite recursion only
happens when $engine is calling mktexfmt for creating a format.
And there is already a variable mktexfmtMode that is set specifically
for that.

So I reset the loop check variable if we are NOT in mktexfmtMode. That
should make sure that infinite recursions are still deteced.

Here is the patch:

--- fmtutil.orig	2009-12-21 18:02:24.000000000 +0900
+++ fmtutil	2009-12-21 18:02:03.000000000 +0900
@@ -714,6 +714,9 @@
   rm -f $fmtfile
 
   # Check for infinite recursion before running the iniTeX:
+  # We do this check only if we are running in mktexfmt mode
+  # otherwise double format definitions will create an infinite loop, too
+  $mktexfmtMode || mktexfmt_loop="" 
   case :$mktexfmt_loop: in
   *:"$format/$engine":*)
     abort "Infinite recursion detected, giving up!" ;;


If anyone has a different idea please let me know. And if nobody objects
I will commit that to the texlive repository.

Best wishes

Norbert

----------------------------------------------------------------------------
Norbert Preining                preining@{jaist.ac.jp, logic.at, debian.org}
JAIST, Japan               TU Wien, Austria            Debian TeX Task Force
gpg DSA: 0x09C5B094   fp: 14DF 2E6C 0307 BE6D AD76  A9C0 D2BF 4AA3 09C5 B094
----------------------------------------------------------------------------
RIPON (vb.)
(Of literary critics.) To include all the best jokes from the book in
the review to make it look as if the critic thought of them.
			--- Douglas Adams, The Meaning of Liff


More information about the tex-k mailing list