Author: sewardj
Date: 2007-12-19 11:01:13 +0000 (Wed, 19 Dec 2007)
New Revision: 7303

Log:
Add a couple of regtests for large stack frame management.

Added:
   trunk/memcheck/tests/lsframe1.c
   trunk/memcheck/tests/lsframe1.stderr.exp
   trunk/memcheck/tests/lsframe1.stdout.exp
   trunk/memcheck/tests/lsframe1.vgtest
   trunk/memcheck/tests/lsframe2.c
   trunk/memcheck/tests/lsframe2.stderr.exp
   trunk/memcheck/tests/lsframe2.stdout.exp
   trunk/memcheck/tests/lsframe2.vgtest
Modified:
   trunk/memcheck/tests/Makefile.am


Modified: trunk/memcheck/tests/Makefile.am
===================================================================
--- trunk/memcheck/tests/Makefile.am    2007-12-18 01:49:23 UTC (rev 7302)
+++ trunk/memcheck/tests/Makefile.am    2007-12-19 11:01:13 UTC (rev 7303)
@@ -66,6 +66,8 @@
        leakotron.vgtest leakotron.stdout.exp leakotron.stderr.exp \
        long_namespace_xml.vgtest long_namespace_xml.stdout.exp \
        long_namespace_xml.stderr.exp \
+       lsframe1.vgtest lsframe1.stdout.exp lsframe1.stderr.exp \
+       lsframe2.vgtest lsframe2.stdout.exp lsframe2.stderr.exp \
        malloc_free_fill.vgtest malloc_free_fill.stdout.exp \
        malloc_free_fill.stderr.exp-glibc25-amd64 \
        malloc_free_fill.stderr.exp-glibc25-x86 \
@@ -160,6 +162,7 @@
        fprw fwrite hello inits inline \
        leak-0 leak-cycle leak-pool leak-tree leak-regroot leakotron \
        long_namespace_xml \
+       lsframe1 lsframe2 \
        malloc_free_fill \
        malloc_usable malloc1 malloc2 malloc3 manuel1 manuel2 manuel3 \
        match-overrun \

Added: trunk/memcheck/tests/lsframe1.c
===================================================================
--- trunk/memcheck/tests/lsframe1.c                             (rev 0)
+++ trunk/memcheck/tests/lsframe1.c     2007-12-19 11:01:13 UTC (rev 7303)
@@ -0,0 +1,26 @@
+
+/* Demonstrate Memcheck correctly handling a 64M array on the stack.
+   Requires --max-stackframe=67108884 or above.  And since it
+   generates a very large stack, --main-stacksize=67200000
+   (approximately) is also required. */
+
+#include <stdio.h>
+
+#define N_MBYTES 64
+
+#define N_INTS ((N_MBYTES * 1048576) / sizeof(int))
+
+
+int main ( void )
+{
+   int i, sum;
+   int arr[N_INTS];
+   fprintf(stderr, "lsframe1: start\n");
+   for (i = 0; i < N_INTS; i++)
+      arr[i] = i;
+   sum = 0;
+   for (i = 0; i < N_INTS; i++)
+      sum += arr[i];
+   fprintf(stderr, "lsframe1: done, result is %d\n", sum);
+   return 0;
+}

Added: trunk/memcheck/tests/lsframe1.stderr.exp
===================================================================
--- trunk/memcheck/tests/lsframe1.stderr.exp                            (rev 0)
+++ trunk/memcheck/tests/lsframe1.stderr.exp    2007-12-19 11:01:13 UTC (rev 
7303)
@@ -0,0 +1,9 @@
+
+lsframe1: start
+lsframe1: done, result is -8388608
+
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+malloc/free: in use at exit: 0 bytes in 0 blocks.
+malloc/free: 0 allocs, 0 frees, 0 bytes allocated.
+For a detailed leak analysis,  rerun with: --leak-check=yes
+For counts of detected errors, rerun with: -v

Added: trunk/memcheck/tests/lsframe1.stdout.exp
===================================================================

Added: trunk/memcheck/tests/lsframe1.vgtest
===================================================================
--- trunk/memcheck/tests/lsframe1.vgtest                                (rev 0)
+++ trunk/memcheck/tests/lsframe1.vgtest        2007-12-19 11:01:13 UTC (rev 
7303)
@@ -0,0 +1,2 @@
+prog: lsframe1
+vgopts: --main-stacksize=67200000 --max-stackframe=67200000

Added: trunk/memcheck/tests/lsframe2.c
===================================================================
--- trunk/memcheck/tests/lsframe2.c                             (rev 0)
+++ trunk/memcheck/tests/lsframe2.c     2007-12-19 11:01:13 UTC (rev 7303)
@@ -0,0 +1,34 @@
+
+/* Demonstrate Memcheck correctly handling chain of 64 recursive
+   calls, each of which allocates a 1 M array on the stack.  Requires
+   --main-stacksize=67117057 (on amd64-linux) or above, but works fine
+   if you specify that. */
+
+#include <stdio.h>
+
+#define N_MBYTES 64
+
+#define N_INTS_PER_MBYTE (1048576 / sizeof(int))
+
+int rec ( int depth )
+{
+   int i, zzz;
+   int arr[N_INTS_PER_MBYTE];
+   if (depth == 0) return 0;
+   for (i = 0; i < N_INTS_PER_MBYTE; i++)
+      arr[i] = i * depth;
+   zzz = rec(depth-1);
+   for (i = 0; i < N_INTS_PER_MBYTE; i++)
+       zzz += arr[i];
+   return zzz;
+}
+
+
+int main ( void )
+{
+   int sum;
+   fprintf(stderr, "lsframe2: start\n");
+   sum = rec(N_MBYTES);
+   fprintf(stderr, "lsframe2: done, result is %d\n", sum);
+   return 0;
+}

Added: trunk/memcheck/tests/lsframe2.stderr.exp
===================================================================
--- trunk/memcheck/tests/lsframe2.stderr.exp                            (rev 0)
+++ trunk/memcheck/tests/lsframe2.stderr.exp    2007-12-19 11:01:13 UTC (rev 
7303)
@@ -0,0 +1,9 @@
+
+lsframe2: start
+lsframe2: done, result is -272629760
+
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+malloc/free: in use at exit: 0 bytes in 0 blocks.
+malloc/free: 0 allocs, 0 frees, 0 bytes allocated.
+For a detailed leak analysis,  rerun with: --leak-check=yes
+For counts of detected errors, rerun with: -v

Added: trunk/memcheck/tests/lsframe2.stdout.exp
===================================================================

Added: trunk/memcheck/tests/lsframe2.vgtest
===================================================================
--- trunk/memcheck/tests/lsframe2.vgtest                                (rev 0)
+++ trunk/memcheck/tests/lsframe2.vgtest        2007-12-19 11:01:13 UTC (rev 
7303)
@@ -0,0 +1,2 @@
+prog: lsframe2
+vgopts: --main-stacksize=68500000


-------------------------------------------------------------------------
SF.Net email is sponsored by:
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services
for just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Valgrind-developers mailing list
Valgrind-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-developers

Reply via email to