[Lldb-commits] [lldb] r222163 - Complete rewrite of interactive editing support for single- and multi-line input.
Jason Molenda
jason at molenda.com
Tue Nov 25 16:49:21 PST 2014
I think you should commit this patch. I don't know this corner of the standard very well but if TOT is crashing for all Linux users, it'd be better to tentatively accept the change until Kate is back on-line next week.
J
> On Nov 25, 2014, at 5:58 AM, Abid, Hafiz <Hafiz_Abid at mentor.com> wrote:
>
> Hi Kate,
> I observed that this change is causing crash on Linux whenever a confirmation is shown to the user (e.g. breakpoint delete or quit). I think the following code is responsible. It is casting this pointer in initializer list to a base class which is still not initialized.
>
> IOHandlerConfirm::IOHandlerConfirm (Debugger &debugger,
> const char *prompt,
> bool default_response) :
> IOHandlerEditline(debugger,
> IOHandler::Type::Confirm,
> NULL, // NULL editline_name means no history loaded/saved
> NULL, // No prompt
> NULL, // No continuation prompt
> false, // Multi-line
> false, // Don't colorize the prompt (i.e. the confirm message.)
> 0,
> *this),
> m_default_response (default_response),
> m_user_response (default_response)
>
> If my reading of C++ standard is correct, the constructor of base classes are called in order in which they are declared (12.6.2 (10)). So *this is basically casting IOHandlerConfirm to its base IOHandlerDelegate and passing it to constructor of IOHandlerEditline which uses it and crashes as constructor of IOHandlerDelegate is still not called.
>
> I changed the order of base classes in the declaration of IOHandlerConfirm and it seems to have fixed this issue. Please have a look at the attached patch and let me know if it looks ok to you.
>
> Thanks,
> Abid
>
>
>> -----Original Message-----
>> From: lldb-commits-bounces at cs.uiuc.edu [mailto:lldb-commits-
>> bounces at cs.uiuc.edu] On Behalf Of Shawn Best
>> Sent: 18 November 2014 19:03
>> To: Ed Maste; Kate Stone
>> Cc: lldb-commits at cs.uiuc.edu
>> Subject: Re: [Lldb-commits] [lldb] r222163 - Complete rewrite of interactive
>> editing support for single- and multi-line input.
>>
>> I can confirm the two issues you cite also started failing on linux around the
>> time of this changes. Greg's checkin yesterday fixed TestCommandRegex, but
>> TestGlobalVariables is still failing.
>>
>> On 11/17/2014 11:46 AM, Ed Maste wrote:
>>> On 17 November 2014 14:07, Kate Stone <katherine.stone at apple.com>
>> wrote:
>>>> Author: kate
>>>> Date: Mon Nov 17 13:06:59 2014
>>>> New Revision: 222163
>>>>
>>>> URL: http://llvm.org/viewvc/llvm-project?rev=222163&view=rev
>>>> Log:
>>>> Complete rewrite of interactive editing support for single- and multi-line
>> input.
>>> FYI, two new test failures appeared on FreeBSD after this change. I'm
>>> curious if the Linux guys see similar behaviour.
>>>
>>>
>>> FAIL: LLDB (/usr/bin/clang-x86_64) :: test_with_dwarf
>>> (TestGlobalVariables.GlobalVariablesTestCase)
>>>
>> ================================================================
>> ======
>>> FAIL: test_with_dwarf (TestGlobalVariables.GlobalVariablesTestCase)
>>> Test 'frame variable --scope --no-args' which omits args and shows
>> scopes.
>>> ----------------------------------------------------------------------
>>> Traceback (most recent call last):
>>> File "/tank/emaste/src/llvm/tools/lldb/test/lldbtest.py", line 382, in
>> wrapper
>>> return func(self, *args, **kwargs)
>>> File
>>> "/tank/emaste/src/llvm/tools/lldb/test/lang/c/global_variables/TestGlo
>>> balVariables.py",
>>> line 24, in test_with_dwarf
>>> self.global_variables()
>>> File
>>> "/tank/emaste/src/llvm/tools/lldb/test/lang/c/global_variables/TestGlo
>>> balVariables.py",
>>> line 60, in global_variables
>>> 'stop reason = breakpoint'])
>>> File "/tank/emaste/src/llvm/tools/lldb/test/lldbtest.py", line 1886, in
>> expect
>>> self.runCmd(str, msg=msg, trace = (True if trace else False),
>>> check = not error, inHistory=inHistory)
>>> File "/tank/emaste/src/llvm/tools/lldb/test/lldbtest.py", line 1812, in
>> runCmd
>>> msg if msg else CMD_MSG(cmd))
>>> AssertionError: False is not True : Process should be stopped due to
>>> breakpoint Config=x86_64-/usr/bin/clang
>>> ----------------------------------------------------------------------
>>> Ran 2 tests in 0.200s
>>>
>>> FAILED (failures=1, skipped=1)
>>>
>>>
>>> FAIL: LLDB (/usr/bin/clang-x86_64) :: test_command_regex
>>> (TestCommandRegex.CommandRegexTestCase)
>>>
>> ================================================================
>> ======
>>> ERROR: test_command_regex
>> (TestCommandRegex.CommandRegexTestCase)
>>> Test a simple scenario of 'command regex' invocation and subsequent
>> use.
>>> ----------------------------------------------------------------------
>>> Traceback (most recent call last):
>>> File
>>> "/tank/emaste/src/llvm/tools/lldb/test/functionalities/command_regex/T
>>> estCommandRegex.py",
>>> line 38, in test_command_regex
>>> child.expect('The following is a list of built-in, permanent
>>> debugger commands:')
>>> File
>>> "/tank/emaste/src/llvm/tools/lldb/test/pexpect-2.4/pexpect.py",
>>> line 1316, in expect
>>> return self.expect_list(compiled_pattern_list, timeout,
>> searchwindowsize)
>>> File
>>> "/tank/emaste/src/llvm/tools/lldb/test/pexpect-2.4/pexpect.py",
>>> line 1330, in expect_list
>>> return self.expect_loop(searcher_re(pattern_list), timeout,
>>> searchwindowsize)
>>> File
>>> "/tank/emaste/src/llvm/tools/lldb/test/pexpect-2.4/pexpect.py",
>>> line 1414, in expect_loop
>>> raise TIMEOUT (str(e) + '\n' + str(self))
>>> TIMEOUT: Timeout exceeded in read_nonblocking().
>>> _______________________________________________
>>> lldb-commits mailing list
>>> lldb-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
>>
>> _______________________________________________
>> lldb-commits mailing list
>> lldb-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
> <IOHandler.patch>_______________________________________________
> lldb-commits mailing list
> lldb-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
More information about the lldb-commits
mailing list