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 <gclay...@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 <m...@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@cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
>

_______________________________________________
lldb-dev mailing list
lldb-dev@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to