[lldb-dev] 32-bit linux IsWatchpointHit assertion failure due to WriteRegister

Matthew Gardiner mg11 at csr.com
Fri Feb 28 04:27:03 PST 2014

Hi folks

I've synced with the head of the tree this morning and rebuilt and I'm seeing another assertion failure impacting my 32-bit linux experience. Running my test app looks like this:

$ lldb hello
Current executable set to 'hello' (i386).
(lldb) log enable linux ptrace
(lldb) run
operation ptrace(PTRACE_SETOPTIONS, 8832, (nil), 0x58, 0)=0 called from file /home/mg11/src/heracles2/llvm/tools/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp line 1456
operation ptrace(PTRACE_TRACEME, 0, (nil), (nil), 0)=0 called from file /home/mg11/src/heracles2/llvm/tools/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp line 1196
Process 8832 launching
operation ptrace(PTRACE_PEEKDATA, 8832, 0x8048340, (nil), 0)=895EED31 called from file /home/mg11/src/heracles2/llvm/tools/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp line 245
operation ptrace(PTRACE_PEEKDATA, 8832, 0x8048340, (nil), 0)=895EED31 called from file /home/mg11/src/heracles2/llvm/tools/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp line 245
operation ptrace(PTRACE_POKEDATA, 8832, 0x8048340, 0x895eedcc, 0)=0 called from file /home/mg11/src/heracles2/llvm/tools/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp line 319
operation ptrace(PTRACE_PEEKDATA, 8832, 0x8048340, (nil), 0)=895EEDCC called from file /home/mg11/src/heracles2/llvm/tools/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp line 245
operation ptrace(PTRACE_POKEUSER, 8832, 0x2a8, 0xffffffff, 0)=FFFFFFFF called from file /home/mg11/src/heracles2/llvm/tools/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp line 543
operation ptrace() failed; errno=5 (<unknown>)
lldb: /home/mg11/src/heracles2/llvm/tools/lldb/source/Plugins/Process/POSIX/RegisterContextPOSIXProcessMonitor_x86.cpp:511: virtual bool 
RegisterContextPOSIXProcessMonitor_x86_64::IsWatchpointHit(uint32_t): Assertion `false && "Could not initialize watchpoint registers"' failed.
Aborted (core dumped)

The source of the failure is now:

RegisterContextPOSIXProcessMonitor_x86_64::IsWatchpointHit(uint32_t hw_index)
     bool is_hit = false;

     if (m_watchpoints_initialized == false)
         // Reset the debug status and debug control registers
         RegisterValue zero_bits = RegisterValue(uint64_t(0));
         if (!WriteRegister(m_reg_info.first_dr + 6, zero_bits) || !WriteRegister(m_reg_info.first_dr + 7, zero_bits))
-->            assert(false && "Could not initialize watchpoint registers");

I'll re-sync and build, just to rule out my wimpy build environment, then start digging again...


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
More information can be found at www.csr.com. Keep up to date with CSR on our technical blog, www.csr.com/blog, CSR people blog, www.csr.com/people, YouTube, www.youtube.com/user/CSRplc, Facebook, www.facebook.com/pages/CSR/191038434253534, or follow us on Twitter at www.twitter.com/CSR_plc.
New for 2014, you can now access the wide range of products powered by aptX at www.aptx.com.

More information about the lldb-dev mailing list