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
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to