FYI

-----Original Message-----
From: Thirumurthi, Ashok 
Sent: Thursday, April 18, 2013 11:37 AM
To: 'Samuel Jacob'
Subject: RE: [lldb-dev] lldb fails to examine any variable with the message - 
Interpreting the expression locally failed: Interpreter couldn't write to memory

Hi Samuel,

Thanks for the test case.  I can reproduce this using trunk with 
lldb/tests/functionalities/inferior-crashing, and confirmed that there is no 
existing bug report.  For instance, the issue is distinct from 
http://llvm.org/bugs/show_bug.cgi?id=15671.

After the crash, the back-trace is correct, and "register read -a" dumps the 
register set.  The expression parser should generate IR that the LLDB 
interpreter can use to read from the address of argc in the inferior.  So, 
there is no design requirement to inject code into the inferior to evaluate the 
expression.  I suspect that the write is related to a temporary that is used to 
store the result of the read, but it may be possible to rework the expression 
interpreter to eliminate the write.

The attached patch modifies the existing test case to reproduce the issue that 
you've raised (and also checks the register read).  If you don't mind, I'll log 
a bugzilla for this in order to cross-reference it with the failing test.  I've 
marked the test as xfail on Darwin as well.  I'll let folks chime in if it's an 
xpass...

FYI, when run under our test harness, this test fails with 'use of undeclared 
identifier 'argc''.  I can reproduce this second issue from the command line by 
issuing 'expr argc' twice, at which point the process is no longer in a limbo 
state.  Thanks again,

- Ashok

-----Original Message-----
From: [email protected] [mailto:[email protected]] On 
Behalf Of Samuel Jacob
Sent: Wednesday, April 17, 2013 11:53 PM
To: lldb-dev; Malea, Daniel
Subject: Re: [lldb-dev] lldb fails to examine any variable with the message - 
Interpreting the expression locally failed: Interpreter couldn't write to memory

Hi Dan,

Can you please check this?

Thanks
Samuel

On Wed, Apr 17, 2013 at 4:21 PM, Samuel Jacob <[email protected]> wrote:
> lldb build from trunk running on Ubuntu 12.04 is not able examine any 
> variable.
>
> $cat test1.c
> int main(int argc, char argv[])
> {
>     char *crash=0;
>
>     *crash = 0;
>     return 0;
> }
>
> $gcc -O0 -g3 ./test1.c
>
> $lldb ~/a.out
> Current executable set to '/mts/home3/jacobs/a.out' (x86_64).
>
> (lldb) run
> Process 16615 launched: '/mts/home3/jacobs/a.out' (x86_64) Process
> 16615 stopped
> * thread #1: tid = 0x40e7, 0x00000000004004cb a.out`main(argc=1,
> argv=0x00007fff336ad2a8) + 23 at test1.c:5, stop reason = invalid 
> address
>     frame #0: 0x00000000004004cb a.out`main(argc=1,
> argv=0x00007fff336ad2a8) + 23 at test1.c:5
>    2    {
>    3        char *crash=0;
>    4
> -> 5        *crash = 0;
>    6        return 0;
>    7    }
> (lldb) p argc
> error: Interpreting the expression locally failed: Interpreter 
> couldn't write to memory
>
> But before crashing If a breakpoint was setup, lldb stops at the 
> breakpoint and works fine.
>
> Is it a known issue or should a file a bug report?
>
> Samuel
_______________________________________________
lldb-dev mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Attachment: crash-expr.patch
Description: crash-expr.patch

_______________________________________________
lldb-dev mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to