[lldb-dev] Problem with dotest_channels.py

Todd Fiala via lldb-dev lldb-dev at lists.llvm.org
Mon Dec 14 15:58:20 PST 2015


Hey Zachary,

I just put in:
r255581

which should hopefully:
(1) catch the exception you see there,
(2) handle it gracefully in the common and to-be-expected case of the test
inferior going down hard, and
(3) print out an error if anything else unexpected is happening here.

Let me know if you get any more info with it.  Thanks!

-Todd

On Mon, Dec 14, 2015 at 2:16 PM, Todd Fiala <todd.fiala at gmail.com> wrote:

> Yeah that's a messed up exception scenario that is hard to read.  I'll
> figure something out when I repro it.  One side is closing before the other
> is expecting it, but likely in a way we need to expect.
>
> I think it is ugly-ified because it is coming from some kind of worker
> thread within async-core.
>
> I will get something in to help it today.  The first bit may be just
> catching the exception as you mentioned.
>
> On Mon, Dec 14, 2015 at 2:05 PM, Zachary Turner <zturner at google.com>
> wrote:
>
>> If nothing else, maybe we can print out a more useful exception
>> backtrace.  What kind of exception, what line, and what was the message?
>> That might help give us a better idea of what's causing it.
>>
>> On Mon, Dec 14, 2015 at 2:03 PM Todd Fiala <todd.fiala at gmail.com> wrote:
>>
>>> Hi Zachary!
>>>
>>>
>>>
>>>
>>>
>>> On Mon, Dec 14, 2015 at 1:28 PM, Zachary Turner via lldb-dev <
>>> lldb-dev at lists.llvm.org> wrote:
>>>
>>>> Hi Todd, lately I've been seeing this sporadically when running the
>>>> test suite.
>>>>
>>>> [TestNamespaceLookup.py FAILED]
>>>> Command invoked: C:\Python27_LLDB\x86\python_d.exe
>>>> D:\src\llvm\tools\lldb\test\dotest.pyc -q --arch=i686 --executable
>>>> D:/src/llvmbuild/ninja/bin/lldb.exe -s
>>>> D:/src/llvmbuild/ninja/lldb-test-traces -u CXXFLAGS -u CFLAGS
>>>> --enable-crash-dialog -C d:\src\llvmbuild\ninja_release\bin\clang.exe
>>>> --results-port 55886 --inferior -p TestNamespaceLookup.py
>>>> D:\src\llvm\tools\lldb\packages\Python\lldbsuite\test --event-add-entries
>>>> worker_index=10:int
>>>> 416 out of 416 test suites processed - TestAddDsymCommand.py
>>>>         error: uncaptured python exception, closing channel
>>>> <lldbsuite.test.dotest_channels.UnpicklingForwardingReaderChannel connected
>>>> 127.0.0.1:56008 at 0x2bdd578> (<class 'socket.error'>:[Errno 10054] An
>>>> existing connection was forcibly closed by the remote host
>>>> [C:\Python27_LLDB\x86\lib\asyncore.py|read|83]
>>>> [C:\Python27_LLDB\x86\lib\asyncore.py|handle_read_event|449]
>>>> [D:\src\llvm\tools\lldb\packages\Python\lldbsuite\test\dotest_channels.py|handle_read|133]
>>>> [C:\Python27_LLDB\x86\lib\asyncore.py|recv|387])
>>>>
>>>> It seems to happen randomly and not always on the same test.  Sometimes
>>>> it doesn't happen at all.  I wonder if this could be related to some of the
>>>> work that's been going on recently.  Are you seeing this?  Any idea how to
>>>> diagnose?
>>>>
>>>
>>> Eww.
>>>
>>> That *looks* like one side of the connection between the inferior and
>>> the test runner process choked on reading content from the test event
>>> socket when the other end went down.  Reading it a bit more carefully, it
>>> looks like it is the event collector (which would be the parallel test
>>> runner side) that was receiving when the socket went down.
>>>
>>> I think this means I just need to put a try block around the receiver
>>> and just bail out gracefully (possibly with a message) when that happens at
>>> an unexpected time.  Since test inferiors can die at any time, possibly due
>>> to a timeout where they are forcibly killed, we do need to handle that
>>> gracefully.'
>>>
>>> I'll see if I can force it, replicate it, and fix it.  I'll look at that
>>> now (pending watching the buildbots for the other change I just put in).
>>>
>>> And yes, this would be a code path that we use heavily with the xUnit
>>> reporter, but only started getting used by you more recently when I turned
>>> on the newer summary results by default.  (The newer summary results use
>>> the test event system, which means test inferiors are now going to be using
>>> the sockets to pass back test events, where you didn't have that happening
>>> before unless you used the curses or xUnit results formatter).
>>>
>>> I hope to have it reproduced and fixed up here quickly.  I suspect you
>>> may have an environment that just might make it more prevalent, but it
>>> needs to be fixed.
>>>
>>> Hopefully back in a bit with a fix!
>>>
>>>>
>>>> _______________________________________________
>>>> lldb-dev mailing list
>>>> lldb-dev at lists.llvm.org
>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
>>>>
>>>>
>>>
>>>
>>> --
>>> -Todd
>>>
>>
>
>
> --
> -Todd
>



-- 
-Todd
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20151214/318142eb/attachment-0001.html>


More information about the lldb-dev mailing list