[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Soot API: Instrumenting EJB



Hi,

Here are the class and source files you requested. Disregard the earlier
ones I sent.


Nathan

On Wed, 26 Sep 2001 11:50:56 -0400 (EDT) Feng QIAN
<fqian@sable.mcgill.ca> writes:
> Hi,
> 
> #168 is the JSR instruction. It was supposed to be inlined before 
> calling
> generateJimple. It seems that the JSR-inliner does not handle this 
> case
> corectly. You can read CFG.eliminateJsrRets, it assumes well-behaved
> JSR/RET pairs. You may help to fix it.
> 
> Can you mail me the class file on which the Soot failed?
> 
> Cheers,
> ====================
> Feng 
> Qian					fqian@sable.mcgill.ca
> 
> On Tue, 25 Sep 2001, nathan gulley wrote:
> 
> > Hello,
> >
> > I am using Soot 1.2.2 in an attempt to instrument a method on a 
> Java EJB
> > at ClassLoadtime using a custom ClassLoader. However, A 
> RunTimeException
> > is thrown by the soot.coffi.CFG.generateJimple(CFG.java:4517) 
> method when
> > I try to i retrieve the active body of one of the EJB's method's 
> before
> > instrumenting it:
> >
> > JimpleBody jimpBody = (JimpleBody)method.retrieveActiveBody();
> >
> > java.lang.RuntimeException: Unrecognized bytecode instruction: 168
> >         at soot.coffi.CFG.generateJimple(CFG.java:4517)
> >         at soot.coffi.CFG.jimplify(CFG.java:1257)
> >         at soot.coffi.CFG.jimplify(CFG.java:920)
> >         at
> > soot.coffi.CoffiMethodSource.getBody(CoffiMethodSource.java:98)
> >         at 
> soot.SootMethod.getBodyFromMethodSource(SootMethod.java:83)
> >         at soot.SootMethod.retrieveActiveBody(SootMethod.java:276)
> >         at
> > 
> com.rtscinc.util.classloaders.XClassLoaderII.getXClassData(XClassLoad
> > erII.java:404)
> >         at
> > 
> com.rtscinc.util.classloaders.XClassLoaderII.getClassData(XClassLoade
> > rII.java:326)
> >         at
> > 
> com.rtscinc.util.classloaders.XClassLoaderII.findClass(XClassLoaderII
> > .java:282)
> >         at
> > 
> com.rtscinc.util.classloaders.XClassLoaderII.loadClass(XClassLoaderII
> > .java:256)
> >         at test.TestClient.test15(TestClient.java:1010)
> >         at java.lang.reflect.Method.invoke(Native Method)
> >         at test.TestClient.main(TestClient.java:46)
> >
> > I appears that the Soot 1.2.2 Framework is unable to handle byte 
> code
> > instruction # 168 so I examined the CFG.java source code to make 
> sure. In
> > fact there wasn't any code to handle this particular instruction 
> so
> > that's why a RunTimeException was being thrown by
> > soot.coffi.CFG.generateJimple() method.
> >
> > Is anyone aware of a workaround for this problem? it looks like 
> someone
> > was working on this because there are some commented out lines in
> > CFG.java and Jimple.java  that had code to handle this instruction 
> but it
> > hasn't been fully implemented.
> >
> > I'd appreciate any advice or help with this.
> >
> > Nathan
> >
> >
> >
> 

TimeSheetEjbControllerEJB.class

TimeSheetEjbControllerEJB.java