[llvm-bugs] [Bug 32297] New: LLDB stopping before function arguments have been initialized
    via llvm-bugs 
    llvm-bugs at lists.llvm.org
       
    Wed Mar 15 18:56:48 PDT 2017
    
    
  
https://bugs.llvm.org/show_bug.cgi?id=32297
            Bug ID: 32297
           Summary: LLDB stopping before function arguments have been
                    initialized
           Product: compiler-rt
           Version: 4.0
          Hardware: Macintosh
                OS: MacOS X
            Status: NEW
          Severity: normal
          Priority: P
         Component: compiler-rt
          Assignee: unassignedbugs at nondot.org
          Reporter: tblodt at icloud.com
                CC: llvm-bugs at lists.llvm.org
Compile this test program with -fsanitize=address -g:
struct foo {
    int foof;
};
struct bar {
    struct foo barf;
};
void baz(struct bar *bar) {
    struct foo foof = bar->barf;
}
int main() {
    struct bar bar = {};
    baz(&bar);
    return 0;
}
Then start lldb and do this:
(lldb) b baz
Breakpoint 1: where = morph`baz + 41 at generator.c:9, address =
0x0000000100000c49
(lldb) r
Process 45496 launched: '/Users/tbodt/Developer/csc180/fuck/morph' (x86_64)
AddressSanitizer debugger support is active. Memory error breakpoint has been
installed and you can now use the 'memory history' command.
Process 45496 stopped
* thread #1: tid = 0x13ab09, 0x0000000100000c49
morph`baz(bar=0x00007fff5fbff860) + 41 at generator.c:9, queue =
'com.apple.main-thread', stop reason = breakpoint 1.1
    frame #0: 0x0000000100000c49 morph`baz(bar=0x00007fff5fbff860) + 41 at
generator.c:9
   6        struct foo barf;
   7    };
   8
-> 9    void baz(struct bar *bar) {
   10       struct foo foof = bar->barf;
   11   }
   12
(lldb) p bar
(bar *) $0 = 0x00007fff5fbff860
(lldb) up
frame #1: 0x0000000100000e5a morph`main + 234 at generator.c:15
   12
   13   int main() {
   14       struct bar bar = {};
-> 15       baz(&bar);
   16       return 0;
   17   }
   18
(lldb) p &bar
warning: could not load any Objective-C class information. This will
significantly reduce the quality of type information available.
(bar *) $1 = 0x00007fff5fbff840
Notice that when the program stops the arrow is pointing to the top of the
function declaration, not the first line of the function. Also notice that at
that point, bar is not the pointer that was passed into the function. If you
step once in baz, it goes to the first line of the function and bar is now
correct.
I'm not sure whether the bug is ASAN generating code that LLDB can't handle, or
LLDB not correctly handling the code ASAN generates.
-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20170316/456f9d5b/attachment.html>
    
    
More information about the llvm-bugs
mailing list