[lldb-dev] OverflowError: in method 'SBProcess_ReadPointerFromMemory', argument 2 of type 'lldb::addr_t'

2016-09-16 Thread Lei Kong via lldb-dev
I ran into the error in the subject when running a python script with "script 
myfile.myscript()".
 
The value addr_t parameter used is 0x01223f68, the following works fine:

(lldb) scr
Python Interactive Interpreter. To exit, type 'quit()', 'exit()' or Ctrl-D.
>>> e = lldb.SBError()
>>> ptr = lldb.process.ReadPointerFromMemory(0x01223f68, 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@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev


Re: [lldb-dev] OverflowError: in method 'SBProcess_ReadPointerFromMemory', argument 2 of type 'lldb::addr_t'

2016-09-16 Thread Jim Ingham via lldb-dev
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  
> 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 0x01223f68, the following works 
> fine:
> 
> (lldb) scr
> Python Interactive Interpreter. To exit, type 'quit()', 'exit()' or Ctrl-D.
> >>> e = lldb.SBError()
> >>> ptr = lldb.process.ReadPointerFromMemory(0x01223f68, 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@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

___
lldb-dev mailing list
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev


[lldb-dev] [Bug 30423] New: [lldb-mi] -var-assign doesn't evaluate the expression to assign

2016-09-16 Thread via lldb-dev
https://llvm.org/bugs/show_bug.cgi?id=30423

Bug ID: 30423
   Summary: [lldb-mi] -var-assign doesn't evaluate the expression
to assign
   Product: lldb
   Version: 3.9
  Hardware: PC
OS: All
Status: NEW
  Severity: normal
  Priority: P
 Component: All Bugs
  Assignee: lldb-dev@lists.llvm.org
  Reporter: edmu...@microsoft.com
CC: llvm-b...@lists.llvm.org
Classification: Unclassified

According to the MI documentation from GDB
(http://ftp.gnu.org/old-gnu/Manuals/gdb/html_node/gdb_231.html), the MI command
-var-assign takes a variables object and an expression to assign to it

 -var-assign name expression

However, lldb-mi does not allow expressions and only allows numeric values:

-var-create - - "x" --thread 1 --frame 0
^done,name="var0",numchild="0",value="1",type="int",thread-id="1",has_more="0"
-var-assign var0 "3+2"
^error,msg="expression could not be evaluated"

On the other hand, using GDB:

-var-create - * "a"
^done,name="var5",numchild="0",value="0",type="int",thread-id="1",has_more="0"
-1035-var-assign var5 "3+2"
^done,value="5"


CMICmdCmdVarAssign should first try to evaluate the expression passed in rather
than just treating it as a value.

-- 
You are receiving this mail because:
You are the assignee for the bug.
___
lldb-dev mailing list
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev


Re: [lldb-dev] OverflowError: in method 'SBProcess_ReadPointerFromMemory', argument 2 of type 'lldb::addr_t'

2016-09-16 Thread Lei Kong via lldb-dev
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 01223f68
Traceback (most recent call last):
  File "", line 1, in 
  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: jing...@apple.com
> Date: Fri, 16 Sep 2016 17:12:24 -0700
> CC: lldb-dev@lists.llvm.org
> To: leik...@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 
> >  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 0x01223f68, the following works 
> > fine:
> > 
> > (lldb) scr
> > Python Interactive Interpreter. To exit, type 'quit()', 'exit()' or Ctrl-D.
> > >>> e = lldb.SBError()
> > >>> ptr = lldb.process.ReadPointerFromMemory(0x01223f68, 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@lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
> 
  ___
lldb-dev mailing list
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev