From af34c5da497e2aa34d45241fff7e63dc3318e673 Mon Sep 17 00:00:00 2001
From: "SND\\kernelnet_cp"
 <SND\kernelnet_cp@9b283d60-5439-405e-af05-b73fd8c4d996>
Date: Sat, 8 Dec 2012 14:13:03 +0000
Subject: [PATCH] [0.2.x] added : test reproducing stack overflow

git-svn-id: https://pykd.svn.codeplex.com/svn@81713 9b283d60-5439-405e-af05-b73fd8c4d996
---
 test/scripts/moduletest.py   |  4 ++--
 test/scripts/typedvar.py     | 10 ++++++++++
 test/targetapp/targetapp.cpp |  5 +++++
 3 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/test/scripts/moduletest.py b/test/scripts/moduletest.py
index 506d2ac..729999e 100644
--- a/test/scripts/moduletest.py
+++ b/test/scripts/moduletest.py
@@ -63,11 +63,11 @@ class ModuleTest( unittest.TestCase ):
         fileName = pykd.getSourceFile(target.module.FuncWithName0 )
         self.assertTrue( re.search('targetapp\\.cpp', fileName ) )
         fileName, lineNo, displacement = pykd.getSourceLine( target.module.FuncWithName0 + 2)
-        self.assertEqual( 393, lineNo )
+        self.assertEqual( 395, lineNo )
         self.assertTrue( re.search('targetapp\\.cpp', fileName ) )
         self.assertEqual( 2, displacement )
         fileName, lineNo, displacement = pykd.getSourceLine()
-        self.assertEqual( 639, lineNo )
+        self.assertEqual( 644, lineNo )
 
     def testEnumSymbols( self ):
         lst = target.module.enumSymbols()
diff --git a/test/scripts/typedvar.py b/test/scripts/typedvar.py
index 632097c..e9d7fc1 100644
--- a/test/scripts/typedvar.py
+++ b/test/scripts/typedvar.py
@@ -289,3 +289,13 @@ class TypedVarTest( unittest.TestCase ):
         for field in tv:
              str( field )
       
+    def testDeadlockList(self):
+    
+       lst = []
+       entry = pykd.typedVar("entry1").Flink
+       for i in range( 0, 100000 ):
+           lst.append(entry)
+           entry = entry.deref().Flink
+
+
+       
diff --git a/test/targetapp/targetapp.cpp b/test/targetapp/targetapp.cpp
index 640360f..1e21075 100644
--- a/test/targetapp/targetapp.cpp
+++ b/test/targetapp/targetapp.cpp
@@ -197,6 +197,8 @@ listStruct  g_listItem1 = { 1 };
 listStruct  g_listItem2 = { 2 };
 listStruct  g_listItem3 = { 3 };
 
+LIST_ENTRY entry1;
+LIST_ENTRY entry2;
 
 struct listStruct1;
 
@@ -596,6 +598,9 @@ int _tmain(int argc, _TCHAR* argv[])
         InsertTailList( &g_listHead, &g_listItem2.listEntry );
         InsertTailList( &g_listHead, &g_listItem3.listEntry );
 
+        entry1.Flink = &entry2;
+        entry2.Flink = &entry1;
+
         g_listHead1 = &g_listItem11;
         g_listItem11.next = &g_listItem12;
         g_listItem12.next = &g_listItem13;