RFR(M): 8199940: Print more information about class loaders in IllegalAccessErrors.
Lois Foltan
lois.foltan at oracle.com
Thu May 24 20:11:50 UTC 2018
On 5/16/2018 9:30 AM, Lindenmaier, Goetz wrote:
> Hi,
>
> I finally prepared the webrev for this change.
> I simplified the messages wrt. to my first intent that was found too
> verbose.
>
> The IllegalAccessErrors in classFileParser report more verbose
> information about the class loaders.
> As I understand, the class loaders are the reason for the error here,
> so I think information about them is useful. See also the tests 1-3.
> I added reporting whether the class is abstract.
>
> In linkResolver, I just switch to class_loader_and_module_name()
> to report a more verbose class name as Lois requested.
> I removed mentioning the resolved class in the method case.
> I report the modifiers of methods/fields.
> But as I understand, even here the class loader can be the reason
> of the Error, see tests 6-8.
>
> Please review. I'm happy to improve the messages further :)
> http://cr.openjdk.java.net/~goetz/wr18/8199940-exMsg-IllegalAccess/01/
>
> Best regards,
> Goetz.
Hi Goetz,
Thanks for making this change, improving IAEs to include class loader
names has been on our radar as well. Here are my review comments to
hopefully move this change forward.
- src/hotspot/share/classfile/classFileParser.cpp
Based on further discussion in
https://bugs.openjdk.java.net/browse/JDK-8199940, I believe you
suggested changing the calls from describe_external() to loader_name().
I would support that change or even a change to use
class_loader_and_module_name().
- src/hotspot/share/interpreter/linkResolver.cpp
I think all the changes in this file look great! I did write a new test
to demonstrate how an IAE looks when a type with correct module
readability and package exportability tries to access a private method
within another type. The IAE generated will contain the following:
java.lang.IllegalAccessError: tried to access private method
MySameClassLoader/m2x/p2.c2.method2()V from class
MySameClassLoader/m1x/p1.c1
Once your change is in, I will follow up with an RFE to include this
test with the other accessibility tests in
open/test/hotspot/jtreg/runtime/modules/AccessCheck.
Thanks,
Lois
More information about the hotspot-runtime-dev
mailing list