Hi,
I am running Linux Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-51-generic x86_64) in
virtual machine.
When I am trying to write memory in my process, sometimes it works but
sometimes lldb-server goes unresponsive. It spins with 100% CPU utilization and
does not respond to any signals except SIGKILL.
I tried to debug it, but under debugger everything works perfectly :). Here are
a couple observations:
1. I believe that lldb-server spins inside ptrace. I put breakpoint on the
highlighted line, and it does not hit. If I put breakpoint on line before, it
hits but lldb-server hangs.
Error
NativeProcessLinux::PtraceWrapper(int req, lldb::pid_t pid, void *addr, void
*data, size_t data_size, long *result)
{
Error error;
long int ret;
Log *log (ProcessPOSIXLog::GetLogIfAllCategoriesSet (POSIX_LOG_PTRACE));
PtraceDisplayBytes(req, data, data_size);
errno = 0;
if (req == PTRACE_GETREGSET || req == PTRACE_SETREGSET)
ret = ptrace(static_cast<__ptrace_request>(req), static_cast<
::pid_t>(pid), *(unsigned int *)addr, data);
else
ret = ptrace(static_cast<__ptrace_request>(req), static_cast<
::pid_t>(pid), addr, data);
if (ret == -1)
error.SetErrorToErrno();
2. It seems that hang is caused by the client trying to read response too fast.
I mean, if I step through the client code it works - i.e. there is significant
delay between client writing into pipe and issuing ::select to wait for
response.
Any advice how to deal with the situation except putting random sleeps in
random places?
Thanks,
Eugene
Sent from Outlook<http://aka.ms/weboutlook>
_______________________________________________
lldb-dev mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev