[kaffe] verifier and threads

gonzo Robert.N.Gonzalez@williams.edu
Mon Jan 20 08:34:01 2003


Hi Helmar,

thanks for the thread information.  it turned out to be one of those
late-night bugs...the output of the verify3 was being cut off half way
when the program ran, but the execution of verify3 had finished (ie - it
just wasn't able to print all the info before the program completed
running).  silly on my part :)


> > my other bug is also weird.  in Verify3, if you:
> > 	postExceptionMessage(einfo, JAVA_LANG(VerifyError), MSG);
> > when the error's thrown it yields a ClassNotFoundException and not a
> > VerifyError (though MSG is retained).  however, ClassFormatError is found
> > easily.  i can't seem to figure out why this is.
> > 
> > to reproduce this, simply post a VerifyError in verify2() or verify3().
> 
> Can't reproduce this one. If my verify3 () looks like this:
> ===========8<===========================
> bool
> verify3(Hjava_lang_Class* class, errorInfo *einfo)
> {
>         postExceptionMessage (einfo, JAVA_LANG(VerifyError), "test, test");
>         return false;
> 	...
> }
> ===========>8===========================
> 
> I get 
> ===========8<===========================
> Couldn't find or load essential class `java/lang/Object' java.lang.VerifyError test, test
> ===========>8===========================
> when trying to load a class.


running on a HelloWorld program i get the error.  in verify3, add this
code at the top of the method body (you may need to include string.h in
the file).

	// speeds initial loading up by skipping verification of class
        // libraries (temporary solution)
	if (class->loader == 0 &&
	    (!strncmp("kaffe/", class->name->data, 6) ||
	     !strncmp("java/", class->name->data, 5)))
		{
			return(true);
		}
	
	
	postExceptionMessage(einfo, JAVA_LANG(VerifyError), "testing");
	return (false);

this yields,

java.lang.ClassNotFoundException: testing
        at java.lang.Throwable.fillInStackTrace(Throwable.java:native)
        at java.lang.Throwable.<init>(Throwable.java:38)
        at java.lang.Throwable.<init>(Throwable.java:48)
        at java.lang.Exception.<init>(Exception.java:34)
        at 
java.lang.ClassNotFoundException.<init>(ClassNotFoundException.java:97)
        at
java.lang.ClassNotFoundException.<init>(ClassNotFoundException.java:84)
        at java.lang.Class.forName(Class.java:93)
        at java.lang.Class.forName(Class.java:42)



cheers,
~rob