I have a theory now for why the error below occurs:
java.lang.VerifyError: (class: Test7, method: main signature: ([Ljava/lang/String;)V) Incompatible object argument for function call Exception in thread "main"
I am calling
invokevirtual edu/rice/cs/cunit/ProperObject.wait$$$Decorator$$$()V on a
Thread object, but I haven’t made
ProperObject a superclass of
I guess I have to do that now… that’s a big, big instrumentation of many, many classes and likely to cause more errors. Makes me sick to my stomach, but there’s no way around.
As expected, instrumenting the entire rt.jar with the
ProperObjectSuperClassStrategy didn’t work, the VM doesn’t even initialize. I think it may have to do with the placement of
ProperObject. I’ll try putting it in the
I also just noticed that the
ProperObjectSuperClassStrategy strategy was affecting
ProperObject itself, so
ProperObject was its own superclass. I’m working on changing that and rerunning the tests.
Now I’m getting a “java.exe – Application Error. The instruction at ‘0x6d749f0f’ referenced memory at ‘0x00000064’. The memory could not be ‘read’. Click OK to terminate the program. Click CANCEL to debug the program.” error. Lovely!
And I have no idea why!
I’m excluding certain classes from the rt.jar now, and sometimes it works, sometimes it doesn’t. Right now, I’m excluding the
sun.* , and
sunw.* packages, but instrumenting
java.lang.Number and the test programs, and it works. It seems like there will be a few classes again where this method doesn’t work, and I’ll have to come up with workarounds for the exceptions. Sigh.
Now I’ve limited it to just the