<div dir="ltr">This also is now in as part of r202887.</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Mar 4, 2014 at 1:34 AM, Matthew Gardiner <span dir="ltr"><<a href="mailto:mg11@csr.com" target="_blank">mg11@csr.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi folks<br>
<br>
Even with the register map fixed (see UserArea in RegisterContextLinux_i386.cpp)<br>
an assertion failure occurs:<br>
<br>
$ lldb hello<br>
Current executable set to 'hello' (i386).<br>
(lldb) log enable linux ptrace<br>
(lldb) run<br>
operation ptrace(PTRACE_SETOPTIONS, 2667, (nil), 0x58, 0)=0 called from file /home/mg11/src/heracles/llvm/<u></u>tools/lldb/source/Plugins/<u></u>Process/Linux/ProcessMonitor.<u></u>cpp line 1456<br>
Process 2667 launching<br>
operation ptrace(PTRACE_TRACEME, 0, (nil), (nil), 0)=0 called from file /home/mg11/src/heracles/llvm/<u></u>tools/lldb/source/Plugins/<u></u>Process/Linux/ProcessMonitor.<u></u>cpp line 1196<br>
operation ptrace(PTRACE_PEEKDATA, 2667, 0x8048340, (nil), 0)=895EED31 called from file /home/mg11/src/heracles/llvm/<u></u>tools/lldb/source/Plugins/<u></u>Process/Linux/ProcessMonitor.<u></u>cpp line 245<br>
operation ptrace(PTRACE_PEEKDATA, 2667, 0x8048340, (nil), 0)=895EED31 called from file /home/mg11/src/heracles/llvm/<u></u>tools/lldb/source/Plugins/<u></u>Process/Linux/ProcessMonitor.<u></u>cpp line 245<br>
operation ptrace(PTRACE_POKEDATA, 2667, 0x8048340, 0x895eedcc, 0)=0 called from file /home/mg11/src/heracles/llvm/<u></u>tools/lldb/source/Plugins/<u></u>Process/Linux/ProcessMonitor.<u></u>cpp line 319<br>
operation ptrace(PTRACE_PEEKDATA, 2667, 0x8048340, (nil), 0)=895EEDCC called from file /home/mg11/src/heracles/llvm/<u></u>tools/lldb/source/Plugins/<u></u>Process/Linux/ProcessMonitor.<u></u>cpp line 245<br>
operation ptrace(PTRACE_POKEUSER, 2667, 0x114, 0xffffffff, 0)=0 called from file /home/mg11/src/heracles/llvm/<u></u>tools/lldb/source/Plugins/<u></u>Process/Linux/ProcessMonitor.<u></u>cpp line 543<br>
operation ptrace(PTRACE_POKEUSER, 2667, 0x118, 0xffffffff, 0)=0 called from file /home/mg11/src/heracles/llvm/<u></u>tools/lldb/source/Plugins/<u></u>Process/Linux/ProcessMonitor.<u></u>cpp line 543<br>
operation ptrace(PTRACE_PEEKUSER, 2667, 0x114, (nil), 0)=FFFFFFFF called from file /home/mg11/src/heracles/llvm/<u></u>tools/lldb/source/Plugins/<u></u>Process/Linux/ProcessMonitor.<u></u>cpp line 494<br>
operation ptrace(PTRACE_PEEKUSER, 2667, 0x114, (nil), 0)=FFFFFFFF called from file /home/mg11/src/heracles/llvm/<u></u>tools/lldb/source/Plugins/<u></u>Process/Linux/ProcessMonitor.<u></u>cpp line 494<br>
operation ptrace(PTRACE_POKEUSER, 2667, 0x114, 0xffffffff, 0)=0 called from file /home/mg11/src/heracles/llvm/<u></u>tools/lldb/source/Plugins/<u></u>Process/Linux/ProcessMonitor.<u></u>cpp line 543<br>
operation ptrace(PTRACE_PEEKUSER, 2667, 0x118, (nil), 0)=FFFFFFFF called from file /home/mg11/src/heracles/llvm/<u></u>tools/lldb/source/Plugins/<u></u>Process/Linux/ProcessMonitor.<u></u>cpp line 494<br>
operation ptrace(PTRACE_PEEKUSER, 2667, 0xfc, (nil), 0)=0 called from file /home/mg11/src/heracles/llvm/<u></u>tools/lldb/source/Plugins/<u></u>Process/Linux/ProcessMonitor.<u></u>cpp line 494<br>
lldb: /home/mg11/src/heracles/llvm/<u></u>tools/lldb/source/Plugins/<u></u>Process/POSIX/POSIXThread.cpp:<u></u>530: void POSIXThread::WatchNotify(const ProcessMessage&): Assertion `wp_sp.get() && "No watchpoint found"' failed.<br>

Aborted (core dumped)<br>
<br>
The root cause of this is that 0xffffffff is written to dr6/7 originally from<br>
RegisterContextPOSIXProcessMon<u></u>itor_x86.cpp, whereas the programmer intended<br>
0 to be written:<br>
<br>
RegisterContextPOSIXProcessMon<u></u>itor_x86_64::IsWatchpointHit(<u></u>uint32_t hw_index)<br>
{<br>
<snip><br>
        RegisterValue zero_bits = RegisterValue(uint64_t(0));<br>
        if (!WriteRegister(m_reg_info.<u></u>first_dr + 6, zero_bits) || !WriteRegister(m_reg_info.<u></u>first_dr + 7, zero_bits))<br>
<br>
Construction of the RegisterValue as uint64_t and the subsequent conditional<br>
compilation of 32-bit code within ProcessMonitor.cpp<br>
<br>
void<br>
WriteRegOperation::Execute(<u></u>ProcessMonitor *monitor)<br>
{<br>
<snip><br>
#if __WORDSIZE == 32<br>
    buf = (void*) m_value.GetAsUInt32();<br>
#else<br>
<br>
combined with RegisterValue's implementation returning "fail_value" for<br>
wrapped 64-bit data accessed as 32-bits.<br>
<br>
Removal of the preprocessing step, relies on the compiler forcing truncation<br>
to 32-bit, when compiled on 32-bit platform, more faithfully than the<br>
explicit GetAsUInt32().<br>
<br>
Please could someone apply the attached patch which fixes the fail_value<br>
return. I tested this on 32-bit by launching a program, stopping, setting<br>
a break, then resuming it. It was fine. I can't test 64-bit yet, but clearly<br>
my proposed patch results in the 64-bit code being unchanged.<br>
<br>
Index: source/Plugins/Process/Linux/<u></u>ProcessMonitor.cpp<br>
==============================<u></u>==============================<u></u>=======<br>
--- source/Plugins/Process/Linux/<u></u>ProcessMonitor.cpp     (revision 202675)<br>
+++ source/Plugins/Process/Linux/<u></u>ProcessMonitor.cpp     (working copy)<br>
@@ -532,11 +532,7 @@<br>
     void* buf;<br>
     Log *log (ProcessPOSIXLog::<u></u>GetLogIfAllCategoriesSet (POSIX_LOG_REGISTERS));<br>
<br>
-#if __WORDSIZE == 32<br>
-    buf = (void*) m_value.GetAsUInt32();<br>
-#else<br>
     buf = (void*) m_value.GetAsUInt64();<br>
-#endif<br>
<br>
     if (log)<br>
         log->Printf ("ProcessMonitor::%s() reg %s: %p", __FUNCTION__, m_reg_name, buf);<br>
<br>
thanks<br>
Matt<br>
<br>
PS<br>
<br>
(If this patch is applied *and* the debug register offset problem fixed -<br>
I'm uploading separate patch - then 32-bit linux debug experience is<br>
sane).<br>
<br>
<br>
<br>
<br>
<br>
Member of the CSR plc group of companies. CSR plc registered in England and Wales, registered number 4187346, registered office Churchill House, Cambridge Business Park, Cowley Road, Cambridge, CB4 0WZ, United Kingdom<br>

More information can be found at <a href="http://www.csr.com" target="_blank">www.csr.com</a>. Keep up to date with CSR on our technical blog, <a href="http://www.csr.com/blog" target="_blank">www.csr.com/blog</a>, CSR people blog, <a href="http://www.csr.com/people" target="_blank">www.csr.com/people</a>, YouTube, <a href="http://www.youtube.com/user/CSRplc" target="_blank">www.youtube.com/user/CSRplc</a>, Facebook, <a href="http://www.facebook.com/pages/CSR/191038434253534" target="_blank">www.facebook.com/pages/CSR/<u></u>191038434253534</a>, or follow us on Twitter at <a href="http://www.twitter.com/CSR_plc" target="_blank">www.twitter.com/CSR_plc</a>.<br>

New for 2014, you can now access the wide range of products powered by aptX at <a href="http://www.aptx.com" target="_blank">www.aptx.com</a>.<br>
<br>_______________________________________________<br>
lldb-commits mailing list<br>
<a href="mailto:lldb-commits@cs.uiuc.edu">lldb-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr"><table cellspacing="0" cellpadding="0" style="color:rgb(136,136,136);font-family:'Times New Roman'"><tbody><tr style="color:rgb(85,85,85);font-family:sans-serif;font-size:small">
<td nowrap style="border-top-style:solid;border-top-color:rgb(213,15,37);border-top-width:2px">Todd Fiala |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(51,105,232);border-top-width:2px"> Software Engineer |</td>
<td nowrap style="border-top-style:solid;border-top-color:rgb(0,153,57);border-top-width:2px"> <a href="mailto:tfiala@google.com" style="color:rgb(17,85,204)" target="_blank"><span style="background-color:rgb(255,255,204);color:rgb(34,34,34);background-repeat:initial initial">tfiala@google.com</span></a> |</td>
<td nowrap style="border-top-style:solid;border-top-color:rgb(238,178,17);border-top-width:2px"><font color="#1155cc"> <a>650-943-3180</a></font></td></tr></tbody></table><br></div>
</div>