[Lldb-commits] [PATCH] D50478: Add support for artificial tail call frames

Vedant Kumar via lldb-commits lldb-commits at lists.llvm.org
Mon Oct 15 20:33:47 PDT 2018



> On Oct 15, 2018, at 4:46 PM, Frédéric Riss <friss at apple.com> wrote:
> 
> 
> 
>> On Oct 15, 2018, at 4:40 PM, Vedant Kumar <vsk at apple.com <mailto:vsk at apple.com>> wrote:
>> 
>> 
>> 
>>> On Oct 15, 2018, at 3:47 PM, Stella Stamenova via Phabricator <reviews at reviews.llvm.org <mailto:reviews at reviews.llvm.org>> wrote:
>>> 
>>> stella.stamenova added a comment.
>>> 
>>> In https://reviews.llvm.org/D50478#1262717 <https://reviews.llvm.org/D50478#1262717>, @vsk wrote:
>>> 
>>>> In https://reviews.llvm.org/D50478#1262710 <https://reviews.llvm.org/D50478#1262710>, @stella.stamenova wrote:
>>>> 
>>>>> Unfortunately, the bots are broken because of the FileCheck issue, so I can't confirm with them, but I see a number of these tests fail in our local testing. Some fail on both Windows and Linux and some just fail on Linux. Here are the failing tests:
>>>>> 
>>>>> Linux:
>>>>> lldb-Suite :: functionalities/tail_call_frames/disambiguate_call_site/TestDisambiguateCallSite.py
>>>>> lldb-Suite :: functionalities/tail_call_frames/disambiguate_paths_to_common_sink/TestDisambiguatePathsToCommonSink.py
>>>>> lldb-Suite :: functionalities/tail_call_frames/disambiguate_tail_call_seq/TestDisambiguateTailCallSeq.py
>>>>> lldb-Suite :: functionalities/tail_call_frames/inlining_and_tail_calls/TestInliningAndTailCalls.py
>>>>> lldb-Suite :: functionalities/tail_call_frames/sbapi_support/TestTailCallFrameSBAPI.py
>>>>> lldb-Suite :: functionalities/tail_call_frames/thread_step_out_message/TestArtificialFrameStepOutMessage.py
>>>>> lldb-Suite :: functionalities/tail_call_frames/unambiguous_sequence/TestUnambiguousTailCalls.py
>>>>> 
>>>>> Windows:
>>>>> lldb-Suite :: functionalities/tail_call_frames/sbapi_support/TestTailCallFrameSBAPI.py
>>>>> lldb-Suite :: functionalities/tail_call_frames/thread_step_out_or_return/TestSteppingOutWithArtificialFrames.py
>>>>> 
>>>>> 
>>>>> Let me know what you need to investigate.
>>>> 
>>>> 
>>>> Strange, I didn't get any bot failure notifications in the days after this landed. Could you share the output from the failing tests?
>>> 
>>> 
>>> All the failures on Windows are happening when validating the function name. For example:
>>> 
>>> ======================================================================
>>> 
>>> FAIL: test_tail_call_frame_sbapi (TestTailCallFrameSBAPI.TestTailCallFrameSBAPI)
>>> 
>>> ----------------------------------------------------------------------
>>> 
>>> Traceback (most recent call last):
>>> 
>>>   File "E:\_work\55\s\llvm\tools\lldb\packages\Python\lldbsuite\test\functionalities\tail_call_frames\sbapi_support\TestTailCallFrameSBAPI.py", line 19, in test_tail_call_frame_sbapi
>>> 
>>>     self.do_test()
>>> 
>>>   File "E:\_work\55\s\llvm\tools\lldb\packages\Python\lldbsuite\test\functionalities\tail_call_frames\sbapi_support\TestTailCallFrameSBAPI.py", line 64, in do_test
>>> 
>>>     self.assertTrue(frame.GetDisplayFunctionName() == name)
>> 
>> It could be that the display name of a function is formatted differently on Windows. Do you have an easy way of determining what frame.GetDisplayFunctionName() is?
> 
> If you use assertEqual(a,b) instead of assertTrue, it will print out the values and make it easier to debug.

Thanks, done in r344581.

vedant

> 
> Fred 
> 
>> 
>>> 
>>> AssertionError: False is not True
>>> 
>>> Config=x86_64-E:\_work\55\b\LLVMBuild\Release\bin\clang.exe
>>> 
>>> ----------------------------------------------------------------------
>>> 
>>> There are several different failures on Linux. Here's the first one:
>>> 
>>> FAIL: LLDB (/vstsdrive/_work/38/b/LLVMBuild/bin/clang-8-x86_64) :: test_dwarf (lldbsuite.test.lldbtest.TestDisambiguateCallSite)
>>> 
>>> --- FileCheck trace (code=1) ---
>>> /vstsdrive/_work/38/b/LLVMBuild/bin/FileCheck /vstsdrive/_work/38/s/llvm/tools/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/disambiguate_call_site/main.cpp -implicit-check-not=artificial
>>> 
>>> FileCheck input:
>>> * thread #1, name = 'a.out', stop reason = breakpoint 1.1
>>>   * frame #0: 0x0000000000400580 a.out`sink() at main.cpp:13:4 [opt]
>>>     frame #1: 0x00000000004005b8 a.out`main(argc=1, (null)=<unavailable>) at main.cpp:28:3 [opt]
>>>     frame #2: 0x00007f980aff7830 libc.so.6`__libc_start_main + 240
>>>     frame #3: 0x00000000004004a9 a.out`_start + 41
>> 
>> It looks like we're not generating tail call frames on Linux at all. It would help to have logs from "log enable -f /tmp/linux-stepping.log lldb step".
>> 
>> I'm headed out of the office now, but If you need to disable the tests on Windows/Linux , the fastest way to do that would be to add a platform check to skipUnlessHasCallSiteInfo in decorators.py.
>> 
>> vedant
>> 
>> 
>>> 
>>> 
>>> FileCheck output:
>>> 
>>> /vstsdrive/_work/38/s/llvm/tools/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/disambiguate_call_site/main.cpp:15:17: error: CHECK-NEXT: expected string not found in input
>>>  // CHECK-NEXT: func2{{.*}} [opt] [artificial]
>>>                 ^
>>> <stdin>:3:2: note: scanning from here
>>>  frame #1: 0x00000000004005b8 a.out`main(argc=1, (null)=<unavailable>) at main.cpp:28:3 [opt]
>>>  ^
>>> <stdin>:3:80: note: possible intended match here
>>>  frame #1: 0x00000000004005b8 a.out`main(argc=1, (null)=<unavailable>) at main.cpp:28:3 [opt]
>>>                                                                               ^
>>> 
>>> Let me know if you need more logs.
>>> 
>>> 
>>> Repository:
>>> rLLDB LLDB
>>> 
>>> https://reviews.llvm.org/D50478 <https://reviews.llvm.org/D50478>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20181015/7be3f614/attachment.html>


More information about the lldb-commits mailing list