Hello, One more test failed: {code} ====================================================================== ERROR: test_lldbmi_sourceoption (TestMiStartupOptions.MiStartupOptionsTestCase) Test that 'lldb-mi --interpreter' can execute a prepared file which passed via --source option. ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/IliaK/p/llvm/tools/lldb/test/lldbtest.py", line 1767, in tearDown Base.tearDown(self) File "/Users/IliaK/p/llvm/tools/lldb/test/lldbtest.py", line 1087, in tearDown self.deletePexpectChild() File "/Users/IliaK/p/llvm/tools/lldb/test/lldbtest.py", line 1072, in deletePexpectChild self.child.sendline('settings set interpreter.prompt-on-quit false') File "/Users/IliaK/p/llvm/tools/lldb/test/pexpect-2.4/pexpect.py", line 966, in sendline n = self.send(s) File "/Users/IliaK/p/llvm/tools/lldb/test/pexpect-2.4/pexpect.py", line 958, in send c = os.write(self.child_fd, s) OSError: [Errno 5] Input/output error Config=x86_64-clang {code}
Thanks, Ilia On Mon, Jan 12, 2015 at 4:24 PM, Ilia K <ki.s...@gmail.com> wrote: > Hello Abid, > > Cleanup didn't help and I got the error again: > {code} > ====================================================================== > ERROR: test_lldbmi_eval (TestMiEvaluate.MiEvaluateTestCase) > Test that 'lldb-mi --interpreter' works for evaluating. > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/Users/IliaK/p/llvm/tools/lldb/test/lldbtest.py", line 1767, in > tearDown > Base.tearDown(self) > File "/Users/IliaK/p/llvm/tools/lldb/test/lldbtest.py", line 1087, in > tearDown > self.deletePexpectChild() > File "/Users/IliaK/p/llvm/tools/lldb/test/lldbtest.py", line 1072, in > deletePexpectChild > self.child.sendline('settings set interpreter.prompt-on-quit false') > File "/Users/IliaK/p/llvm/tools/lldb/test/pexpect-2.4/pexpect.py", line > 966, in sendline > n = self.send(s) > File "/Users/IliaK/p/llvm/tools/lldb/test/pexpect-2.4/pexpect.py", line > 958, in send > c = os.write(self.child_fd, s) > OSError: [Errno 5] Input/output error > Config=x86_64-clang > {code} > > Could you submit IOError patch? > > Thanks, > Ilia > > > On Tue, Dec 30, 2014 at 9:16 PM, Ilia K <ki.s...@gmail.com> wrote: > >> Nope, it didn't help: >> >> {code} >> ====================================================================== >> ERROR: test_lldbmi_pendbreakonsym (TestMiBreakpoint.MiBreakpointTestCase) >> Test that 'lldb-mi --interpreter' works for pending symbol breakpoints. >> ---------------------------------------------------------------------- >> Traceback (most recent call last): >> File "/Users/IliaK/p/llvm/tools/lldb/test/lldbtest.py", line 1765, in >> tearDown >> Base.tearDown(self) >> File "/Users/IliaK/p/llvm/tools/lldb/test/lldbtest.py", line 1087, in >> tearDown >> self.deletePexpectChild() >> File "/Users/IliaK/p/llvm/tools/lldb/test/lldbtest.py", line 1072, in >> deletePexpectChild >> self.child.sendline('settings set interpreter.prompt-on-quit false') >> File "/Users/IliaK/p/llvm/tools/lldb/test/pexpect-2.4/pexpect.py", line >> 966, in sendline >> n = self.send(s) >> File "/Users/IliaK/p/llvm/tools/lldb/test/pexpect-2.4/pexpect.py", line >> 958, in send >> c = os.write(self.child_fd, s) >> OSError: [Errno 5] Input/output error >> Config=x86_64-clang >> {code} >> >> Thanks, >> Ilia >> >> >> On Tue, Dec 30, 2014 at 8:15 PM, Abid, Hafiz <hafiz_a...@mentor.com> >> wrote: >> >>> I committed the cleanup in 224990. Please have a look and let me know >>> if you see a problem. >>> >>> Regards, >>> Abid >>> ------------------------------ >>> *From:* Ilia K [ki.s...@gmail.com] >>> *Sent:* Tuesday, December 30, 2014 4:50 PM >>> >>> *To:* Abid, Hafiz >>> *Cc:* lldb-commits@cs.uiuc.edu >>> *Subject:* Re: [Lldb-commits] [PATCH] test: ignore IOError in >>> Base.deletePexpectChild and clean TestMySyntax test >>> >>> Now I have modified breakpoint's test and IOError sometimes happens: >>> {code} >>> $ *./dotest.py -v --executable $BUILDDIR/bin/lldb -f >>> MiBreakpointTestCase.test_lldbmi_pendbreakonsym* >>> ['./dotest.py', '-v', '--executable', >>> '/Users/IliaK/p/llvm/build_ninja/bin/lldb', '-f', >>> 'MiBreakpointTestCase.test_lldbmi_pendbreakonsym'] >>> LLDB library dir: /Users/IliaK/p/llvm/build_ninja/bin >>> lldb-330.99.0 >>> lldb.pre_flight: None >>> lldb.post_flight: None >>> >>> Session logs for test failures/errors/unexpected successes will go >>> into directory '2014-12-30-19_45_12' >>> Command invoked: ./dotest.py -v --executable >>> /Users/IliaK/p/llvm/build_ninja/bin/lldb -f >>> MiBreakpointTestCase.test_lldbmi_pendbreakonsym >>> compilers=['clang'] >>> >>> Configuration: arch=x86_64 compiler=clang >>> ---------------------------------------------------------------------- >>> Collected 1 test >>> >>> 1: test_lldbmi_pendbreakonsym (TestMiBreakpoint.MiBreakpointTestCase) >>> Test that 'lldb-mi --interpreter' works for pending symbol >>> breakpoints. ... ERROR >>> >>> ====================================================================== >>> ERROR: test_lldbmi_pendbreakonsym (TestMiBreakpoint.MiBreakpointTestCase) >>> Test that 'lldb-mi --interpreter' works for pending symbol >>> breakpoints. >>> ---------------------------------------------------------------------- >>> Traceback (most recent call last): >>> File "/Users/IliaK/p/llvm/tools/lldb/test/lldbtest.py", line 1765, in >>> tearDown >>> Base.tearDown(self) >>> File "/Users/IliaK/p/llvm/tools/lldb/test/lldbtest.py", line 1087, in >>> tearDown >>> self.deletePexpectChild() >>> File "/Users/IliaK/p/llvm/tools/lldb/test/lldbtest.py", line 1072, in >>> deletePexpectChild >>> self.child.sendline('settings set interpreter.prompt-on-quit false') >>> File "/Users/IliaK/p/llvm/tools/lldb/test/pexpect-2.4/pexpect.py", >>> line 966, in sendline >>> n = self.send(s) >>> File "/Users/IliaK/p/llvm/tools/lldb/test/pexpect-2.4/pexpect.py", >>> line 958, in send >>> c = os.write(self.child_fd, s) >>> OSError: [Errno 5] Input/output error >>> Config=x86_64-clang >>> ---------------------------------------------------------------------- >>> {code} >>> >>> Here are my changes: >>> {code} >>> Index: test/tools/lldb-mi/TestMiBreakpoint.py >>> =================================================================== >>> --- test/tools/lldb-mi/TestMiBreakpoint.py (revision 224982) >>> +++ test/tools/lldb-mi/TestMiBreakpoint.py (working copy) >>> @@ -48,17 +48,13 @@ >>> child.expect("\^done,bkpt={number=\"1\"") >>> >>> child.sendline("-exec-run") >>> - child.sendline("") # FIXME: lldb-mi hangs here, so >>> extra return is needed >>> child.expect("\^running") >>> child.expect("\*stopped,reason=\"breakpoint-hit\"") >>> >>> child.sendline("-exec-continue") >>> child.expect("\^running") >>> child.expect("\*stopped,reason=\"exited-normally\"") >>> - child.expect_exact(prompt) >>> >>> - child.sendline("quit") >>> - >>> # Now that the necessary logging is done, restore logfile to >>> None to >>> # stop further logging. >>> child.logfile_send = None >>> {code} >>> >>> Thanks, >>> Ilia >>> >>> >>> On Tue, Dec 30, 2014 at 7:39 PM, Abid, Hafiz <hafiz_a...@mentor.com> >>> wrote: >>> >>>> I also found in the existing test cases that both ways have been >>>> used. So I will remove that prompt and 'quit' from the lldb-mi test cases >>>> as you have done from one of them. Then if you still get the IOError then >>>> we can apply your 2nd patch. >>>> >>>> Thanks, >>>> Abid >>>> ------------------------------ >>>> *From:* Ilia K [ki.s...@gmail.com] >>>> *Sent:* Tuesday, December 30, 2014 4:29 PM >>>> *To:* Abid, Hafiz >>>> *Cc:* lldb-commits@cs.uiuc.edu >>>> *Subject:* RE: [Lldb-commits] [PATCH] test: ignore IOError in >>>> Base.deletePexpectChild and clean TestMySyntax test >>>> >>>> As I understood both of them are legal (in theory) but in practice >>>> I faced with IOError. I think we should ignore IOError because we can't fix >>>> isalive() method. >>>> >>>> Thanks, >>>> Ilia >>>> On 30 Dec 2014 19:21, "Abid, Hafiz" <hafiz_a...@mentor.com> wrote: >>>> >>>>> Thanks for quick reply. Your patch is removing the following line >>>>> from lldb-mi test case. >>>>> - child.sendline("quit") >>>>> >>>>> I am wondering what is the convention of terminating the executable >>>>> that we invoked. Do the test is supposed to kill it (using 'quit') command >>>>> or it can be left to the other part of testing code which as you noted >>>>> also >>>>> use sendline('quit'). >>>>> >>>>> Regards, >>>>> Abid >>>>> ------------------------------ >>>>> *From:* Ilia K [ki.s...@gmail.com] >>>>> *Sent:* Tuesday, December 30, 2014 4:11 PM >>>>> *To:* Abid, Hafiz >>>>> *Cc:* lldb-commits@cs.uiuc.edu >>>>> *Subject:* Re: [Lldb-commits] [PATCH] test: ignore IOError in >>>>> Base.deletePexpectChild and clean TestMySyntax test >>>>> >>>>> ** it will cause a IOError because later it will try to kill >>>>> process using 'sendline(quit)'. >>>>> >>>>> Thanks, >>>>> Ilia >>>>> >>>>> On Tue, Dec 30, 2014 at 7:06 PM, Ilia K <ki.s...@gmail.com> wrote: >>>>> >>>>>> Hello Abid, >>>>>> >>>>>> I'm glad to see you. >>>>>> >>>>>> >RE: IMHO once we have removed the extra quit call from the test >>>>>> cases, we will not need the check for OSErrror. >>>>>> Unfortunately it's not. The deletePexpectChild() sometimes causes >>>>>> that problem when isalive returns a false positive result. >>>>>> {code} >>>>>> # This is for the case of directly spawning 'lldb' and >>>>>> interacting with it >>>>>> # using pexpect. >>>>>> if self.child and self.child.isalive(): *<--here* >>>>>> import pexpect >>>>>> with recording(self, traceAlways) as sbuf: >>>>>> print >> sbuf, "tearing down the child process...." >>>>>> try: >>>>>> if self.child_in_script_interpreter: >>>>>> self.child.sendline('quit()') >>>>>> self.child.expect_exact(self.child_prompt) >>>>>> self.child.sendline('settings set >>>>>> interpreter.prompt-on-quit false') >>>>>> self.child.sendline('quit') >>>>>> self.child.expect(pexpect.EOF) >>>>>> except (ValueError, OSError, pexpect.ExceptionPexpect): >>>>>> # child is already terminated >>>>>> pass >>>>>> finally: >>>>>> # Give it one final blow to make sure the child is >>>>>> terminated. >>>>>> self.child.close() >>>>>> {code} >>>>>> The pexpect's isalive() method is nonblocking. It checks whether >>>>>> process was terminated or not. But the problem is that process may be >>>>>> terminated after isalive() was called -- it will cause a IOError. >>>>>> >>>>>> Thanks, >>>>>> Ilia >>>>>> >>>>>> >>>>>> On Tue, Dec 30, 2014 at 6:46 PM, Abid, Hafiz <hafiz_a...@mentor.com> >>>>>> wrote: >>>>>> >>>>>>> I dont see any problem with the patch that cleans up >>>>>>> the TestMiSyntax.py. But I see that similar cleanup is needed in other >>>>>>> tests too. I will make the change and then commit all of them. >>>>>>> >>>>>>> IMHO once we have removed the extra quit call from the test cases, >>>>>>> we will not need the check for OSErrror. >>>>>>> >>>>>>> Thanks, >>>>>>> Abid >>>>>>> ------------------------------ >>>>>>> *From:* Ilia K [ki.s...@gmail.com] >>>>>>> *Sent:* Monday, December 22, 2014 11:54 AM >>>>>>> *To:* Abid, Hafiz; lldb-commits@cs.uiuc.edu >>>>>>> *Subject:* Re: [Lldb-commits] [PATCH] test: ignore IOError in >>>>>>> Base.deletePexpectChild and clean TestMySyntax test >>>>>>> >>>>>>> Hello, >>>>>>> >>>>>>> My previous messages left without answer. I'm posting them again >>>>>>> (see below) with patch files. >>>>>>> The initial message: >>>>>>> http://lists.cs.uiuc.edu/pipermail/lldb-commits/Week-of-Mon-20141215/014599.html >>>>>>> >>>>>>> Thanks, >>>>>>> Ilia >>>>>>> >>>>>>> On Tue, Dec 16, 2014 at 7:02 PM, Ilia K <ki.s...@gmail.com> wrote: >>>>>>> >>>>>>>> Hello, >>>>>>>> >>>>>>>> >RE: IOError may happen when child already exited but dotest has >>>>>>>> missed this and tries to exit using 'child.sendline("quit")' >>>>>>>> Actually it's OSError (not IOError): >>>>>>>> >>>>>>>> >>>>>>>> ====================================================================== >>>>>>>> ERROR: test_lldbmi_tokens (TestMiSyntax.MiSyntaxTestCase) >>>>>>>> Test that 'lldb-mi --interpreter' echos command tokens. >>>>>>>> >>>>>>>> ---------------------------------------------------------------------- >>>>>>>> Traceback (most recent call last): >>>>>>>> File "/Users/IliaK/p/llvm_delphi/tools/lldb/test/lldbtest.py", >>>>>>>> line 1770, in tearDown >>>>>>>> Base.tearDown(self) >>>>>>>> File "/Users/IliaK/p/llvm_delphi/tools/lldb/test/lldbtest.py", >>>>>>>> line 1092, in tearDown >>>>>>>> self.deletePexpectChild() >>>>>>>> File "/Users/IliaK/p/llvm_delphi/tools/lldb/test/lldbtest.py", >>>>>>>> line 1074, in deletePexpectChild >>>>>>>> self.child.sendline('settings set interpreter.prompt-on-quit >>>>>>>> false') >>>>>>>> File >>>>>>>> "/Users/IliaK/p/llvm_delphi/tools/lldb/test/pexpect-2.4/pexpect.py", >>>>>>>> line >>>>>>>> 966, in sendline >>>>>>>> n = self.send(s) >>>>>>>> File >>>>>>>> "/Users/IliaK/p/llvm_delphi/tools/lldb/test/pexpect-2.4/pexpect.py", >>>>>>>> line >>>>>>>> 958, in send >>>>>>>> c = os.write(self.child_fd, s) >>>>>>>> OSError: [Errno 5] Input/output error >>>>>>>> Config=x86_64-clang >>>>>>>> >>>>>>>> Therefore I updated lldbtest_ignore_ioerror_on_theardown.patch >>>>>>>> file. >>>>>>>> Btw, may be better to filter only IO errors from OSError class? >>>>>>>> It'll look like: >>>>>>>> >>>>>>>> {code} >>>>>>>> try: >>>>>>>> ... >>>>>>>> except (ValueError, pexpect.ExceptionPexpect): >>>>>>>> # child is already terminated >>>>>>>> pass >>>>>>>> except OSError, e: >>>>>>>> if e.errno != errno.EIO: >>>>>>>> # unexpected exception >>>>>>>> raise >>>>>>>> # child is already terminated >>>>>>>> pass >>>>>>>> finally: >>>>>>>> ... >>>>>>>> {code} >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Ilia >>>>>>>> >>>>>>>> >>>>>>>> On Tue, Dec 16, 2014 at 4:42 PM, Ilia K <ki.s...@gmail.com> wrote: >>>>>>>>> >>>>>>>>> Hello, >>>>>>>>> >>>>>>>>> I found the following: >>>>>>>>> IOError may happen when child already exited but dotest has missed >>>>>>>>> this and tries to exit using 'child.sendline("quit")' >>>>>>>>> >>>>>>>>> Also, I clean syntax test. -exec-run no hangs more and 'quit' >>>>>>>>> isn't needed at exit. >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> Ilia >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>> >> >
_______________________________________________ lldb-commits mailing list lldb-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits