<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 12 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
{mso-style-priority:99;
mso-style-link:"Plain Text Char";
margin:0in;
margin-bottom:.0001pt;
font-size:10.5pt;
font-family:Consolas;}
span.PlainTextChar
{mso-style-name:"Plain Text Char";
mso-style-priority:99;
mso-style-link:"Plain Text";
font-family:Consolas;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:1996914376;
mso-list-type:hybrid;
mso-list-template-ids:975491440 -1240938864 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
{mso-level-start-at:519;
mso-level-number-format:bullet;
mso-level-text:-;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Consolas;
mso-fareast-font-family:Calibri;}
ol
{margin-bottom:0in;}
ul
{margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoPlainText">Hi Greg,<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">I got around to looking at pr15415 today, and noticed that TestRecursiveInferior.py is a case where
<a href="http://lists.cs.uiuc.edu/pipermail/lldb-commits/Week-of-Mon-20110523/002916.html">
r132021</a> is an issue. Specifically, this code looks at the case where two subsequent frames have the same pc. It correctly distinguishes between recursion and an infinite loop by testing for unique canonical frame addresses. However, it then goes on to
assume that the unwind should stop if GetFP() shows a null frame pointer. However, recursive_inferior/Makefile can achieve this using –fomit-frame-pointer.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">The attached patch fixes the test by nixing the code block that I can’t explain (the commit message for r132021 didn’t specify why the logic changed for UnwindLLDB, and I can’t see any regressions locally with the attached patch, and
r132021 doesn’t add or fix any test cases). Do you figure that a stronger test is required to distinguish between a good unwind and a bad one? If so, what would be required to create a test case for the existing code?<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Note also that overloads of StackUsesFrames() in trunk always return true. Cheers,<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText" style="margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1">
<![if !supportLists]><span style="mso-list:Ignore">-<span style="font:7.0pt "Times New Roman"">
</span></span><![endif]>Ashok <o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">-----Original Message-----<br>
From: lldb-dev-bounces@cs.uiuc.edu [mailto:lldb-dev-bounces@cs.uiuc.edu] On Behalf Of Filipe Cabecinhas<br>
Sent: Wednesday, September 25, 2013 3:46 PM<br>
To: jingham@apple.com<br>
Cc: lldb-dev@cs.uiuc.edu<br>
Subject: Re: [lldb-dev] Test suite itself creating failures</p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">This problem happened several times in the past.<o:p></o:p></p>
<p class="MsoPlainText">It's usually related to tests that change preferences, but don't change them back in the end. Trying to figure out what exactly is going wrong is hard and time-consuming. I've seen problems like: test A relies on option X, test B changes
option X, test A is run twice<o:p></o:p></p>
<p class="MsoPlainText">(x86_64 and i386) with test B being run between those runs.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">When I debugged those, every bug was a bug of the test-suite (missing/wrong cleanup). But, like Jim said, there may be some lldb bugs that may be uncovered with these runs.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Since there's the possibility of having actual lldb bugs uncovered, I would prefer to keep the suite as is (with one debugger for all) and fix the failing tests. Making it easier to reset some of lldb's options when changing targets
is a good thing, too, but some problems with the test suite are when a test sets formatting options but doesn't reset them to the default, in the end. Those can only be fixed on a test-by-test basis.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText"> Filipe<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">On Wed, Sep 25, 2013 at 8:54 AM, <<a href="mailto:jingham@apple.com"><span style="color:windowtext;text-decoration:none">jingham@apple.com</span></a>> wrote:<o:p></o:p></p>
<p class="MsoPlainText">> It should be fine to run multiple debuggers either serially or in parallel and have them not interfere with each other. Most GUI's that use lldb will do this, so it is worth while to test that. Multiple targets in the same debugger
should also be relatively independent of one another, as that is another mode which is pretty useful. The testsuite currently stresses those features of lldb, which seems to me a good thing.<o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">> Note that the testsuite mostly shares a common debugger (lldb.DBG, made in dotest.py and copied over to self.dbg in setUp lldbtest.py.) You could try not creating the singleton debugger in dotest.py, and allow setUp to make a new
one. If there's state in lldb that persists across debuggers that causes testsuite failures, that is a bug we should fix, not something we should work around in the testsuite.<o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">> What kinds of things are the tests leaving around that are causing tests to fail? It seems to me we should make it easier to clean up the state when a target goes away, then just cut the Gordian knot and make them all run independently.<o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">> Jim<o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">> On Sep 24, 2013, at 7:00 PM, Richard Mitton <<a href="mailto:richard@codersnotes.com"><span style="color:windowtext;text-decoration:none">richard@codersnotes.com</span></a>> wrote:<o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">>> Hi all,<o:p></o:p></p>
<p class="MsoPlainText">>><o:p> </o:p></p>
<p class="MsoPlainText">>> So I was looking into why TestInferiorAssert was (still) failing on my machine, and it turned out the root cause was in fact that tests are not run in isolation; dotest.py runs multiple tests using the same LLDB context for each one.
So if a test doesn't clean up after itself properly, it can cause following tests to incorrectly fail.<o:p></o:p></p>
<p class="MsoPlainText">>><o:p> </o:p></p>
<p class="MsoPlainText">>> Is this really a good idea? Wouldn't it make more sense to make it so tests are always run individually, to guarantee consistent results?<o:p></o:p></p>
<p class="MsoPlainText">>><o:p> </o:p></p>
<p class="MsoPlainText">>> --<o:p></o:p></p>
<p class="MsoPlainText">>> Richard Mitton<o:p></o:p></p>
<p class="MsoPlainText">>> <a href="mailto:richard@codersnotes.com"><span style="color:windowtext;text-decoration:none">richard@codersnotes.com</span></a><o:p></o:p></p>
<p class="MsoPlainText">>><o:p> </o:p></p>
<p class="MsoPlainText">>> _______________________________________________<o:p></o:p></p>
<p class="MsoPlainText">>> lldb-dev mailing list<o:p></o:p></p>
<p class="MsoPlainText">>> <a href="mailto:lldb-dev@cs.uiuc.edu"><span style="color:windowtext;text-decoration:none">lldb-dev@cs.uiuc.edu</span></a><o:p></o:p></p>
<p class="MsoPlainText">>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev">
<span style="color:windowtext;text-decoration:none">http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev</span></a><o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">> _______________________________________________<o:p></o:p></p>
<p class="MsoPlainText">> lldb-dev mailing list<o:p></o:p></p>
<p class="MsoPlainText">> <a href="mailto:lldb-dev@cs.uiuc.edu"><span style="color:windowtext;text-decoration:none">lldb-dev@cs.uiuc.edu</span></a><o:p></o:p></p>
<p class="MsoPlainText">> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev">
<span style="color:windowtext;text-decoration:none">http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev</span></a><o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">_______________________________________________<o:p></o:p></p>
<p class="MsoPlainText">lldb-dev mailing list<o:p></o:p></p>
<p class="MsoPlainText"><a href="mailto:lldb-dev@cs.uiuc.edu"><span style="color:windowtext;text-decoration:none">lldb-dev@cs.uiuc.edu</span></a><o:p></o:p></p>
<p class="MsoPlainText"><a href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev"><span style="color:windowtext;text-decoration:none">http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev</span></a><o:p></o:p></p>
</div>
</body>
</html>