[lldb-dev] OverflowError: in method 'SBProcess_ReadPointerFromMemory', argument 2 of type 'lldb::addr_t'
Greg Clayton via lldb-dev
lldb-dev at lists.llvm.org
Mon Sep 19 09:13:52 PDT 2016
If you want to send your fabdbg.py we can try it out and see if we see anything wrong.
> On Sep 19, 2016, at 9:12 AM, Greg Clayton <gclayton at apple.com> wrote:
>
> Try printing the type of the value you are passing in the line:
>
> vtableEndAddr = lldb.process.ReadPointerFromMemory(vtableAddr-8, error)
>
> print type(vtableAddr)
> print type(vtableAddr-8)
>
> It seems like it thinks vtableAddr doesn't fit into a lldb::addr_t which is a uint64_t
>
>
>
>> On Sep 16, 2016, at 7:39 PM, Lei Kong via lldb-dev <lldb-dev at lists.llvm.org> wrote:
>>
>> I tried printing error.descryption, but it didn't work, because when the error happens, it seems ReadPointerFromMemory never returned to my code.
>>
>>
>> read from address 0000000001223f68
>> Traceback (most recent call last):
>> File "<input>", line 1, in <module>
>> File "/home/leikong/repo/WindowsFabric/build.prod/test/fabdbg.py", line 289, in findall
>> findtypes(pattern,ignorePureVirtualType)
>> File "/home/leikong/repo/WindowsFabric/build.prod/test/fabdbg.py", line 246, in findtypes
>> if ignorePureVirtualType and has_pure_virtual(vtableAddr, pureVirtualFuncs) :
>> File "/home/leikong/repo/WindowsFabric/build.prod/test/fabdbg.py", line 190, in has_pure_virtual
>> vtableEndAddr = lldb.process.ReadPointerFromMemory(vtableAddr-8, error)
>> File "/home/leikong/bin/lldb/lib/python2.7/site-packages/lldb/__init__.py", line 9418, in ReadPointerFromMemory
>> return _lldb.SBProcess_ReadPointerFromMemory(self, addr, error)
>> OverflowError: in method 'SBProcess_ReadPointerFromMemory', argument 2 of type 'lldb::addr_t'
>>
>>
>>> Subject: Re: [lldb-dev] OverflowError: in method 'SBProcess_ReadPointerFromMemory', argument 2 of type 'lldb::addr_t'
>>> From: jingham at apple.com
>>> Date: Fri, 16 Sep 2016 17:12:24 -0700
>>> CC: lldb-dev at lists.llvm.org
>>> To: leikong at msn.com
>>>
>>> You passed an error into ReadPointerFromMemory. In the cases where you aren't getting what you expect, what does that error say?
>>>
>>> Jim
>>>
>>>> On Sep 16, 2016, at 5:06 PM, Lei Kong via lldb-dev <lldb-dev at lists.llvm.org> wrote:
>>>>
>>>> I ran into the error in the subject when running a python script with "script myfile.myscript()".
>>>>
>>>> The value addr_t parameter used is 0x0000000001223f68, the following works fine:
>>>>
>>>> (lldb) scr
>>>> Python Interactive Interpreter. To exit, type 'quit()', 'exit()' or Ctrl-D.
>>>>>>> e = lldb.SBError()
>>>>>>> ptr = lldb.process.ReadPointerFromMemory(0x0000000001223f68, e)
>>>>>>> print ptr
>>>> 0
>>>>>>>
>>>>
>>>> Any suggestion how to further investigate? Thanks.
>>>>
>>>> myfile.myscript() calls the following function in a loop (iterate through all vtable symbols), which contains the call ReadPointerFromMemory.
>>>>
>>>> def dump_vtbl(vtableAddr) :
>>>> error = lldb.SBError()
>>>> vtableEndAddr = lldb.process.ReadPointerFromMemory(vtableAddr+8, error)
>>>> if not error.success :
>>>> return False
>>>> print "vtable: [%0.16x, %0.16x)" % (vtableAddr, vtableEndAddr)
>>>> for addr in range(vtableAddr, vtableEndAddr, 8) :
>>>> print "read from address %.016x" % addr
>>>> try:
>>>> funcAddr = lldb.process.ReadPointerFromMemory(addr, error)
>>>> except:
>>>> sys.exc_clear()
>>>> continue
>>>> if not error.success :
>>>> continue
>>>>
>>>> _______________________________________________
>>>> lldb-dev mailing list
>>>> lldb-dev at lists.llvm.org
>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
>>>
>> _______________________________________________
>> lldb-dev mailing list
>> lldb-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
>
More information about the lldb-dev
mailing list