texlive[56230] Build/source/texk/web2c: fix \expanded memory leak of
commits+karl at tug.org
commits+karl at tug.org
Tue Sep 1 00:30:33 CEST 2020
Revision: 56230
http://tug.org/svn/texlive?view=revision&revision=56230
Author: karl
Date: 2020-09-01 00:30:33 +0200 (Tue, 01 Sep 2020)
Log Message:
-----------
fix \expanded memory leak of def_ref
Modified Paths:
--------------
trunk/Build/source/texk/web2c/ChangeLog
trunk/Build/source/texk/web2c/pdftexdir/ChangeLog
trunk/Build/source/texk/web2c/pdftexdir/pdftex.web
trunk/Build/source/texk/web2c/xetexdir/ChangeLog
trunk/Build/source/texk/web2c/xetexdir/xetex.web
Added Paths:
-----------
trunk/Build/source/texk/web2c/tests/expanded-overflow.tex
Modified: trunk/Build/source/texk/web2c/ChangeLog
===================================================================
--- trunk/Build/source/texk/web2c/ChangeLog 2020-08-31 22:05:09 UTC (rev 56229)
+++ trunk/Build/source/texk/web2c/ChangeLog 2020-08-31 22:30:33 UTC (rev 56230)
@@ -1,3 +1,8 @@
+2020-08-31 Karl Berry <karl at freefriends.org>
+
+ * tests/expanded-overflow.tex: new (unused) informational file
+ for \expanded overflow.
+
2020-08-01 Andreas Scherer <https://ascherer.github.io>
* dvicopy.ch,
Modified: trunk/Build/source/texk/web2c/pdftexdir/ChangeLog
===================================================================
--- trunk/Build/source/texk/web2c/pdftexdir/ChangeLog 2020-08-31 22:05:09 UTC (rev 56229)
+++ trunk/Build/source/texk/web2c/pdftexdir/ChangeLog 2020-08-31 22:30:33 UTC (rev 56230)
@@ -1,3 +1,8 @@
+2020-08-31 Marcel Fabian Krueger <tex at 2krueger.de>
+
+ * pdftex.web (Scan the argument for command |c|) <expanded_code>:
+ free_avail(def_ref) to avoid memory exhaustion with many \expanded.
+
2020-08-04 Andreas Scherer <https://ascherer.github.io>
* pdftex.web: Pick a few obvious nits.
@@ -7,6 +12,7 @@
* pdftex.ch: Move pdfTeX variants of MLTeX code next to originals.
2020-07-22 Akira Kakuto <kakuto at w32tex.org>
+
* pdftex.web, writeimg.c: Show unfound file names in
fatal error messages.
https://tug.org/pipermail/pdftex/2020-July/009203.html
Modified: trunk/Build/source/texk/web2c/pdftexdir/pdftex.web
===================================================================
--- trunk/Build/source/texk/web2c/pdftexdir/pdftex.web 2020-08-31 22:05:09 UTC (rev 56229)
+++ trunk/Build/source/texk/web2c/pdftexdir/pdftex.web 2020-08-31 22:30:33 UTC (rev 56230)
@@ -10955,6 +10955,7 @@
warning_index := save_warning_index;
scanner_status := save_scanner_status;
ins_list(link(def_ref));
+ free_avail(def_ref);
def_ref := save_def_ref;
restore_cur_string;
return;
Added: trunk/Build/source/texk/web2c/tests/expanded-overflow.tex
===================================================================
--- trunk/Build/source/texk/web2c/tests/expanded-overflow.tex (rev 0)
+++ trunk/Build/source/texk/web2c/tests/expanded-overflow.tex 2020-08-31 22:30:33 UTC (rev 56230)
@@ -0,0 +1,43 @@
+% $Id$
+% Public domain.
+\catcode`\{=1 \catcode`\}=2 \catcode`\#=6
+\def\zz#1{#1#1#1#1#1#1#1#1#1#1}% 10 times
+\def\zzz#1{\zz{\zz{\zz{\zz{\zz{\zz{\zz{#1}}}}}}}}% 10 million times
+\def\empty{}
+\zzz{\expanded{\empty}}
+\end
+
+% Date: Mon, 31 Aug 2020 01:01:17 +0200
+% From: Marcel Fabian Krueger <tex at 2krueger.de>
+% Subject: Re: [PATCH] \expanded main memory bug
+%
+% [...]
+% You might have heard that Jonathan Spratte got a bug in pdfTeX and
+% XeTeX: Using \expanded more than 5*10^6 times triggered a main memory
+% exhaustion. [that is:
+% ! TeX capacity exceeded, sorry [main memory size=8000000].
+% ]
+%
+% This was caused by \expanded only passing link(def_ref) to the input
+% stack, leaking the reference counter pointed to by def_ref. A patch for
+% both engines is attached.
+%
+% --- pdftexdir/pdftex.web
+% +++ pdftexdir/pdftex.web
+% @@ -10955,6 +10955,7 @@ expanded_code:
+% ins_list(link(def_ref));
+% + free_avail(def_ref);
+% def_ref := save_def_ref;
+%
+% --- xetexdir/xetex.web
+% +++ xetexdir/xetex.web
+% @@ -11094,6 +11094,7 @@ expanded_code:
+% ins_list(link(def_ref));
+% + free_avail(def_ref);
+% def_ref := save_def_ref;
+
+
+
+% [Applied in r56230. Then the test document from Marcel above runs to
+% completion. We don't actually try to use this during make check or
+% anything else, just recording the information. --karl]
Property changes on: trunk/Build/source/texk/web2c/tests/expanded-overflow.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Build/source/texk/web2c/xetexdir/ChangeLog
===================================================================
--- trunk/Build/source/texk/web2c/xetexdir/ChangeLog 2020-08-31 22:05:09 UTC (rev 56229)
+++ trunk/Build/source/texk/web2c/xetexdir/ChangeLog 2020-08-31 22:30:33 UTC (rev 56230)
@@ -1,3 +1,8 @@
+2020-08-31 Marcel Fabian Krueger <tex at 2krueger.de>
+
+ * xetex.web (Scan the argument for command |c|) <expanded_code>:
+ free_avail(def_ref) to avoid memory exhaustion with many \expanded.
+
2020-08-19 Andreas Scherer <https://ascherer.github.io>
* xetex.web: Fix math operator in Pascal comment.
Modified: trunk/Build/source/texk/web2c/xetexdir/xetex.web
===================================================================
--- trunk/Build/source/texk/web2c/xetexdir/xetex.web 2020-08-31 22:05:09 UTC (rev 56229)
+++ trunk/Build/source/texk/web2c/xetexdir/xetex.web 2020-08-31 22:30:33 UTC (rev 56230)
@@ -11094,6 +11094,7 @@
warning_index := save_warning_index;
scanner_status := save_scanner_status;
ins_list(link(def_ref));
+ free_avail(def_ref);
def_ref := save_def_ref;
restore_cur_string;
return;
More information about the tex-live-commits
mailing list.