[LLVMdev] VMRange merging in ProcessElfCore and DoReadMemory

Piotr Rak piotr.rak at gmail.com
Wed Feb 19 14:54:01 PST 2014


Hi Todd,

I am bit lost in code base and might be confused, but I think we are not
getting ProcessElfCore::DoReadMemory still right.

Your fix (rev 201214<http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/elf-core/ProcessElfCore.cpp?r1=196125&r2=201214>)
to llvm.org/PR18769 with not merging VMRange's regions if those are from
other location in core file is correct.
But when we are requested to do read at boundary of two such not merged
VMRanges, we will read correct data from from file to the end of
'last_entry->data.GetRangeEnd()' and then we fill rest with '\0'.
I think that we should split our requested read operation, to all such
ranges in this case.

Is that correct?

I initially thought it was the problem I am after, since I am able to still
reproduce this issue for some dumps (mainly multithreaded ones), but I
haven't nailed it down to this case. However it is still my belief that
there is (at least potential) issue there.

I will be able provide this fix during the weekend, given my analysis is
correct, but for now I wanted to focus on my original issue - which for now
leads to ModuleList not being preserved for some reason once created in
DynamicLoaderPOSIXDYLD::DidLaunch for core files.

Yet it is still my guess and I need to play with bit more.

Cheers,
/Piotr
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140219/ffa34fdd/attachment.html>


More information about the llvm-dev mailing list