[Soot-list] java.lang.VerifyError

Richard Xiao richardxx at cse.ust.hk
Thu Sep 6 13:11:37 EDT 2012


What I mean is that in a constructor function, for example, foo1(), suppose
its super class is foo2(), then the first statement in foo1() must be
foo2(). If you place anything before calling foo2(), you get verify error.
This is a common cause of verify error.

As Cheng Zhang said, the incompatible of Object and Value does not incur
any verify error, you will get runtime error, maybe, instead.

Check the Java specifications and look at your instrumentation code, see if
you did not comfort to the specifications.


Regards,
richardxx


On Thu, Sep 6, 2012 at 3:31 PM, 左小强 <xiaoqiang861025 at yahoo.cn> wrote:

> Hi Richard,
>
> Thanks for your reply. But I can't understand what you mean. Can you
> explain your point further?
>
> Actually I think the problem is that here I use *java.lang.Object* as the
> parameter type. I doubt whether it's not compitable with the Jimple *Value
> * type.
>
> anyway, thank you.
>
>
> Zhiqiang
>
> --- *12年9月5日,周三, Richard Xiao <richardxx at cse.ust.hk>* 写道:
>
>
> 发件人: Richard Xiao <richardxx at cse.ust.hk>
> 主题: Re: [Soot-list] java.lang.VerifyError
> 收件人: "左小强" <xiaoqiang861025 at yahoo.cn>
> 抄送: "soot" <soot-list at sable.mcgill.ca>
> 日期: 2012年9月5日,周三,下午2:13
>
>
> Your insertion violates some Java specifications. For example, in a
> constructor function, the call the super constructor must be the first
> statement. However, you place your instrumentation at the first position,
> hence it invalidates the verifier.
>
> best,
> richardxx
>
>
> On Wed, Sep 5, 2012 at 1:11 PM, 左小强 <xiaoqiang861025 at yahoo.cn<http://mc/compose?to=xiaoqiang861025@yahoo.cn>
> > wrote:
>
> Hi all,
>
> I tried to obtain the runtime value of the operand in ConditionExpr
> (IfStmt). Therefore I use Soot to instrument the class file.
>
> I intend to insert the following function into the class file:
>
> *   public static void appendConExpr(java.lang.Object op1)*
>
> using the following statements:
>
> *   InvokeExpr conditionExpr = Jimple.v().newStaticInvokeExpr(*
> * traceAppendConExpr.makeRef(), *
> *                        ((BinopExpr) ((IfStmt)
> stmt).getCondition()).getOp1());*
> *  Stmt conditionStmt = Jimple.v().newInvokeStmt(conditionExpr);*
> *  units.insertBefore(conditionStmt, stmt);*
>
> The instrumentation phase is OK, however when i run the instrumented
> program, the Exception "java.lang.VerifyError" is thrown.
>
> Can anyone tell me the reason and how to fix it? Thanks in advance!
>
>
> Zhiqiang
>
> *
> *
>
>
> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca <http://mc/compose?to=Soot-list@sable.mcgill.ca>
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>
>
>
>
> --
> Richard Xiao Xiao
> PhD Student @ CSE @ Hong Kong University of Science and Technology
> www.cse.ust.hk/~richardxx
>
>
> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>
>


-- 
Richard Xiao Xiao
PhD Student @ CSE @ Hong Kong University of Science and Technology
www.cse.ust.hk/~richardxx
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.cs.mcgill.ca/pipermail/soot-list/attachments/20120907/d31f1f45/attachment.html 


More information about the Soot-list mailing list