[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
AS_IF stress failure [was: interrupt causes parse error in configure scr
From: |
Eric Blake |
Subject: |
AS_IF stress failure [was: interrupt causes parse error in configure script] |
Date: |
Mon, 18 Aug 2008 22:22:40 -0600 |
User-agent: |
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.16) Gecko/20080708 Thunderbird/2.0.0.16 Mnenhy/0.7.5.666 |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
According to Ralf Wildenhues on 8/18/2008 5:09 PM:
>> I know that when testing my m4_transform_pair patch, I was able to trip an
>> arbitrary limit in bash - it refuses to parse more than 2500 nested elif
>> keywords inside an if/else/fi. I wonder if we are tripping some other shell
>> limits with my test enhancements last week, even though I scaled back the
>> limit
>> to 1000 instead of 2500. Maybe it was a mistake to add torture tests to the
>> already existing AS_IF test, instead of creating a new test?
>
> Ahh, thanks for this hint. It is indeed weird that I can trip the
> failure of test 50 with './testsuite 59-60' or './testsuite 60' but not
> with './testsuite 59-61'. So I guess this messes up some internal shell
> data.
>
> Maybe we should relax that test?
Sure. This scales AS_IF back by a factor of 10, then stresses
m4_transform separately.
- --
Don't work too hard, make some time for fun as well!
Eric Blake address@hidden
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iEYEARECAAYFAkiqSpAACgkQ84KuGfSFAYDCqQCgpa7Lv/3riaadwA8mOauaUnZi
CvQAn1SkE7Wo53fz8DSFy7VVbR23Llul
=ZZDI
-----END PGP SIGNATURE-----
>From f49bad90e7cf2d48e6bd9c9b003fe8d417f0ab39 Mon Sep 17 00:00:00 2001
From: Eric Blake <address@hidden>
Date: Mon, 18 Aug 2008 22:20:37 -0600
Subject: [PATCH] Test m4_transform without tickling shell bugs.
* tests/m4sh.at (AS@&address@hidden and AS@&address@hidden): Relax test to
something more manageable.
* tests/m4sugar.at (recursion): Move stress test of
m4_transform_pair here.
Reported by Ralf Wildenhues.
Signed-off-by: Eric Blake <address@hidden>
---
ChangeLog | 7 +++++++
tests/m4sh.at | 23 +++++++++++++----------
tests/m4sugar.at | 9 ++++++++-
3 files changed, 28 insertions(+), 11 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 442baad..562e9e1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2008-08-18 Eric Blake <address@hidden>
+ Test m4_transform without tickling shell bugs.
+ * tests/m4sh.at (AS@&address@hidden and AS@&address@hidden): Relax test
to
+ something more manageable.
+ * tests/m4sugar.at (recursion): Move stress test of
+ m4_transform_pair here.
+ Reported by Ralf Wildenhues.
+
Let 'git diff' give better context for doc updates.
* .gitattributes (*.texi*): Add new entry.
* README-hacking: Mention how to use it.
diff --git a/tests/m4sh.at b/tests/m4sh.at
index ac5f8ba..f64d832 100644
--- a/tests/m4sh.at
+++ b/tests/m4sh.at
@@ -634,7 +634,7 @@ AT_CLEANUP
AT_SETUP([AS@&address@hidden and AS@&address@hidden)
-AT_KEYWORDS([m4@&address@hidden)
+AT_KEYWORDS([m4@&address@hidden)
AT_DATA_M4SH([script.as], [[dnl
AS_INIT
@@ -728,13 +728,15 @@ foo9=9 bar9=9
]])
dnl stress test for large number of conditionals
+dnl too large, and we start tickling shell bugs
+m4_pushdef([limit], [100])dnl
AT_DATA_M4SH([script.as], [[dnl
AS_INIT
-AS_IF(m4_shift(m4_for([i], [1], [1000], [], [, test $[1] = i, echo i])))
-AS_IF(m4_shift(m4_for([i], [1], [1000], [], [, test $[1] = i, echo i])),
+AS_IF(m4_shift(m4_for([i], [1], ]limit[, [], [, test $[1] = i, echo i])))
+AS_IF(m4_shift(m4_for([i], [1], ]limit[, [], [, test $[1] = i, echo i])),
[echo default])
-AS_CASE([$[1]]m4_for([i], [1], [1000], [], [, i, echo i]))
-AS_CASE([$[1]]m4_for([i], [1], [1000], [], [, i, echo i]), [echo default])
+AS_CASE([$[1]]m4_for([i], [1], ]limit[, [], [, i, echo i]))
+AS_CASE([$[1]]m4_for([i], [1], ]limit[, [], [, i, echo i]), [echo default])
]])
AT_CHECK_M4SH
@@ -743,14 +745,15 @@ AT_CHECK([./script 1], [0], [[1
1
1
]])
-AT_CHECK([./script 1000], [0], [[1000
-1000
-1000
-1000
-]])
+AT_CHECK([./script limit], [0], [limit
+limit
+limit
+limit
+])
AT_CHECK([./script default], [0], [[default
default
]])
+m4_popdef([limit])
AT_CLEANUP
diff --git a/tests/m4sugar.at b/tests/m4sugar.at
index 75207e4..a8cecf9 100644
--- a/tests/m4sugar.at
+++ b/tests/m4sugar.at
@@ -926,7 +926,7 @@ AT_SETUP([recursion])
AT_KEYWORDS([m4@&address@hidden m4@&address@hidden m4@&address@hidden
m4@&address@hidden
m4@&address@hidden m4@&address@hidden m4@&address@hidden m4@&address@hidden
m4@&address@hidden
m4@&address@hidden m4@&address@hidden m4@&address@hidden m4@&address@hidden
m4@&address@hidden m4@&address@hidden
-m4@&address@hidden)
+m4@&address@hidden m4@&address@hidden m4@&address@hidden)
dnl This test completes in a reasonable time if m4_foreach is linear,
dnl but thrashes if it is quadratic. If we are testing with m4 1.4.x,
@@ -954,6 +954,8 @@ m4_bpatsubsts([a1]m4_for([i], [1], [10000], [], [,i]),
[a2], [A])
m4_bmatch([9997]m4_for([i], [1], [10000], [], [,^i$]))
m4_define([up], [m4_define([$1], m4_incr($1))$1])m4_define([j], 0)dnl
m4_cond(m4_for([i], [1], [10000], [], [[up([j])], [9990], i,]) [oops]) j
+m4_count(m4_transform_pair([,m4_quote], []m4_transform([,m4_echo]m4_for([i],
+ [1], [10000], [], [,i]))))
m4_divert_pop(0)
]])
@@ -969,6 +971,7 @@ end
A
^9998$
9990 9990
+5001
]])
AT_DATA_M4SUGAR([script.4s],
@@ -986,6 +989,7 @@ end
A
^9998$
9990 9990
+5001
m4_exit([0])])
m4_init
m4_divert_push(0)[]dnl
@@ -1007,6 +1011,8 @@ m4_bpatsubsts([a1]m4_for([i], [1], [10000], [], [,i]),
[a2], [A])
m4_bmatch([9997]m4_for([i], [1], [10000], [], [,^i$]))
m4_define([up], [m4_define([$1], m4_incr($1))$1])m4_define([j], 0)dnl
m4_cond(m4_for([i], [1], [10000], [], [[up([j])], [9990], i,]) [oops])
+m4_count(m4_transform_pair([,m4_quote], []m4_transform([,m4_echo]m4_for([i],
+ [1], [10000], [], [,i]))))
m4_divert_pop(0)
]])
@@ -1022,6 +1028,7 @@ end
A
^9998$
9990 9990
+5001
]])
AT_CLEANUP
--
1.5.6.4
- Re: interrupt causes parse error in configure script, (continued)
- Re: interrupt causes parse error in configure script, Ralf Wildenhues, 2008/08/19
- Re: interrupt causes parse error in configure script, Eric Blake, 2008/08/19
- Re: interrupt causes parse error in configure script, Ralf Wildenhues, 2008/08/19
- AS_IF failure, Eric Blake, 2008/08/19
- Re: AS_IF failure, Ralf Wildenhues, 2008/08/20
- Re: AS_IF failure, Eric Blake, 2008/08/20
- Re: AS_IF failure, Ralf Wildenhues, 2008/08/21
- Re: interrupt causes parse error in configure script, Jim Meyering, 2008/08/19
- Re: interrupt causes parse error in configure script, Eric Blake, 2008/08/18
- Re: interrupt causes parse error in configure script, Ralf Wildenhues, 2008/08/18
- AS_IF stress failure [was: interrupt causes parse error in configure script],
Eric Blake <=
- Re: AS_IF stress failure [was: interrupt causes parse error in configure script], Ralf Wildenhues, 2008/08/19
Re: interrupt causes parse error in configure script, Eric Blake, 2008/08/18