[lldb-dev] Reading process memory

Mikhail Sosonkin mike at nanotick.net
Thu Sep 25 14:42:34 PDT 2014


I only have one thread in operation, so I don't expect there do be any
race conditions unless LLDB has its own threads under the hood. So far
as I can tell, this lock fails for some reason:

        Process::StopLocker stop_locker;
        if (stop_locker.TryLock(&process_sp->GetRunLock()))
        {
            Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex());
            bytes_read = process_sp->ReadMemory (addr, dst, dst_len,
sb_error.ref());
        }
        else
        {
            if (log)
                log->Printf ("SBProcess(%p)::ReadMemory() => error:
process is running",
                             static_cast<void*>(process_sp.get()));
            sb_error.SetErrorString("process is running");
        }

At the moment, I don't know why but would be happy to hear your thoughts.

Thanks,
Mike.

On Thu, Sep 25, 2014 at 1:47 PM, Greg Clayton <gclayton at apple.com> wrote:
> It should be easy for you to step through the SBProcess::ReadMemory() call and see what is going wrong. If the process is stopped, it should definitely be returning memory. You are sure you don't have thread race conditions where some other thread is resuming the process?
>
>
>> On Sep 25, 2014, at 10:34 AM, Mikhail Sosonkin <mike at nanotick.net> wrote:
>>
>> Hello,
>>
>> I'm trying to read some memory from a stopped process. However, the
>> read function errors out with "process is running" message even though
>> SBProcess::GetState tells me that the process is stopped. The process
>> was stopped because it hit a breakpoint.
>>
>> SBProcess(0x7fed13981600)::GetState () => stopped
>> SBProcess(0x7fed13981600)::GetState () => stopped
>> SBProcess(0x7fed13981600)::ReadMemory (addr=0x7fff5fc34000,
>> dst=0x112eff900, dst_len=4096, SBError (0x0))...
>> SBProcess(0x7fed13981600)::ReadMemory() => error: process is running
>> SBProcess(0x7fed13981600)::ReadMemory (addr=0x7fff5fc34000,
>> dst=0x112eff900, dst_len=4096, SBError (0x7fed12621ee0): error:
>> process is running) => 0
>>
>> I have two questions:
>> - Is this a bug/known issue? I'm using lldb library that comes with
>> Xcode 5 version lldb-310.2.37 (though I read somewhere that these
>> version numbers don't help you much).
>>
>> - Is there a mechanism to read memory of a running process?
>>
>> Thanks,
>> Mike.
>> _______________________________________________
>> lldb-dev mailing list
>> lldb-dev at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
>




More information about the lldb-dev mailing list