RFR 8020675: invalid jar file in the bootclasspath could lead to jvm fatal error

David Holmes david.holmes at oracle.com
Thu Aug 22 17:21:03 PDT 2013


Hi Calvin,

I'm having trouble keeping track of this one ...

On 23/08/2013 8:55 AM, Calvin Cheung wrote:
> Note that the synopsis of the bug has been changed from:
> "Trying to print to a pdf file with PDFill PDF&Image Writer 10.0 Build 4"
>
> bug link: https://bugs.openjdk.java.net/browse/JDK-8020675
>
> I've included the suggestions from Coleen and Ioi in this version of
> webrev:
>      http://cr.openjdk.java.net/~ccheung/8020675/webrev/

I don't understand your _has_error logic:

  325   ClassPathEntry* cpe = resolve_entry(CHECK_NULL);
  326   if (cpe == NULL) {
  327     _has_error = true;
  328     return NULL;

we will only hit line 327 if resolve_entry returns NULL _without_ there 
being an exception pending. How does that occur? What is different about 
the two cases regardless?

And we still have this sequence:

void ClassLoader::initialize() {
   assert(_package_hash_table == NULL, "should have been initialized by 
now.");
   EXCEPTION_MARK;
   ...
   setup_bootstrap_search_path();
     -> update_class_path_entry_list(path, false);
       ->  create_class_path_entry((char *)path, st, &new_entry, 
LazyBootClassLoader, CHECK);

So if we return after the call to create_class_path_entry with an 
exception pending we will crash when we hit the EXCEPTION_MARK. Why 
doesn't this happen?

Thanks,
David


> Tests:
>      jprt
>          (in progress - only about 30 tests left on the windows
> platforms, no failure so far;
>           a previous run with only Coleen's suggestions was successful)
>
>      vm.quick.testlist on linux_x64
>
> Please review.
>
> thanks,
> Calvin


More information about the hotspot-runtime-dev mailing list