Date: Sat, 1 Jun 2013 18:35:06 +0200 From: Dimitry Andric <dim@FreeBSD.org> To: tcltk@FreeBSD.org Subject: patch: increase tcl86 regular expression depth limit to help dejagnu Message-ID: <DF38771A-FFC5-4E92-B95A-24F13AB331B1@FreeBSD.org>
next in thread | raw e-mail | index | archive | help
--Apple-Mail=_8ED3CD7C-CD2A-46A6-9388-0F4BFF18EB3B
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
charset=us-ascii
Hi,
When running the libffi test suite using dejagnu, I ran into the
following tcl86 error:
...
Running target unix
Using /usr/local/share/dejagnu/baseboards/unix.exp as board description =
file for target.
Using /usr/local/share/dejagnu/config/unix.exp as generic interface file =
for target.
Using ../../testsuite/config/default.exp as tool-and-target-specific =
interface file.
Running ../../testsuite/libffi.call/call.exp ...
ERROR: tcl error sourcing ../../testsuite/libffi.call/call.exp.
ERROR: couldn't compile regular expression pattern: out of memory
while executing
"regexp $texttmp ${output}"
(procedure "saved-dg-test" line 247)
invoked from within
"saved-dg-test ../../testsuite/libffi.call/huge_struct.c {-O0 -W -Wall} =
{}"
("eval" body line 1)
invoked from within
"eval saved-dg-test $args "
(procedure "dg-test" line 6)
invoked from within
"dg-test $testcase $flags ${default-extra-flags}"
(procedure "dg-runtest" line 10)
invoked from within
"dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-O0 -W =
-Wall" """
(file "../../testsuite/libffi.call/call.exp" line 24)
invoked from within
"source ../../testsuite/libffi.call/call.exp"
("uplevel" body line 1)
invoked from within
"uplevel #0 source ../../testsuite/libffi.call/call.exp"
invoked from within
"catch "uplevel #0 source $test_file_name""
Running ../../testsuite/libffi.special/special.exp ...
After some searching, I found this similar bug on Tcl's tracker:
=
<http://sourceforge.net/tracker/?func=3Ddetail&aid=3D3603557&group_id=3D10=
894&atid=3D110894>
The change that introduced the limit is here:
<http://core.tcl.tk/tcl/info/1ab85d8c7d>
To make tcl86 work for the libffi tests, I simply doubled the limit from
500 to 1000, as in the attached diff. Can you please consider adding
this to the tcl86 port?
-Dimitry
--Apple-Mail=_8ED3CD7C-CD2A-46A6-9388-0F4BFF18EB3B
Content-Disposition: attachment;
filename=lang__tcl86-double-regex-depth-limit-1.diff
Content-Type: application/octet-stream;
name="lang__tcl86-double-regex-depth-limit-1.diff"
Content-Transfer-Encoding: 7bit
Fix tcl out of memory failure when running dejagnu tests, similar to:
Running target unix
Using /usr/local/share/dejagnu/baseboards/unix.exp as board description file for target.
Using /usr/local/share/dejagnu/config/unix.exp as generic interface file for target.
Using ../../testsuite/config/default.exp as tool-and-target-specific interface file.
Running ../../testsuite/libffi.call/call.exp ...
ERROR: tcl error sourcing ../../testsuite/libffi.call/call.exp.
ERROR: couldn't compile regular expression pattern: out of memory
while executing
"regexp $texttmp ${output}"
(procedure "saved-dg-test" line 247)
invoked from within
"saved-dg-test ../../testsuite/libffi.call/huge_struct.c {-O0 -W -Wall} {}"
("eval" body line 1)
invoked from within
"eval saved-dg-test $args "
(procedure "dg-test" line 6)
invoked from within
"dg-test $testcase $flags ${default-extra-flags}"
(procedure "dg-runtest" line 10)
invoked from within
"dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-O0 -W -Wall" """
(file "../../testsuite/libffi.call/call.exp" line 24)
invoked from within
"source ../../testsuite/libffi.call/call.exp"
("uplevel" body line 1)
invoked from within
"uplevel #0 source ../../testsuite/libffi.call/call.exp"
invoked from within
"catch "uplevel #0 source $test_file_name""
Running ../../testsuite/libffi.special/special.exp ...
See also:
<http://sourceforge.net/tracker/index.php?func=detail&aid=3603557&group_id=10894&atid=110894>
Index: lang/tcl86/files/patch-generic-regc_nfa.c
===================================================================
--- lang/tcl86/files/patch-generic-regc_nfa.c (revision 0)
+++ lang/tcl86/files/patch-generic-regc_nfa.c (working copy)
@@ -0,0 +1,11 @@
+--- ../generic/regc_nfa.c.orig 2011-04-26 17:14:02.000000000 +0200
++++ ../generic/regc_nfa.c 2013-06-01 18:08:49.000000000 +0200
+@@ -759,7 +759,7 @@ duptraverse(
+ * Arbitrary depth limit. Needs tuning, but this value is sufficient to
+ * make all normal tests (not reg-33.14) pass.
+ */
+-#define DUPTRAVERSE_MAX_DEPTH 500
++#define DUPTRAVERSE_MAX_DEPTH 1000
+
+ if (depth++ > DUPTRAVERSE_MAX_DEPTH) {
+ NERR(REG_ESPACE);
--Apple-Mail=_8ED3CD7C-CD2A-46A6-9388-0F4BFF18EB3B--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?DF38771A-FFC5-4E92-B95A-24F13AB331B1>
