RFR: 8177136: Caller sensitive methods Logger.getLogger, Logger.getAnonymousLogger, and System.getLogger should throw IllegalCallerException if there is no caller on the stack.
mandy.chung at oracle.com
Mon Mar 20 20:40:18 UTC 2017
Have you considered default to the unnamed module when there is no caller frame on the stack?
I don’t think we should make these APIs not callable from JNI attached thread even though very rarely be called from JNI (not sure any report on the current behavior throwing NPE).
> On Mar 20, 2017, at 5:08 AM, Daniel Fuchs <daniel.fuchs at oracle.com> wrote:
> Please find below a patch for:
> 8177136: Caller sensitive methods Logger.getLogger, Logger.getAnonymousLogger, and System.getLogger should throw IllegalCallerException if there is no caller on the stack.
> Caller sensitive methods Logger.getLogger, Logger.getAnonymousLogger,
> and System.getLogger currently throw an undocumented
> NullPointerException if they are called from JNI and there is no
> Java frame on the stack.
> Throwing NullPointerException is confusing and makes it look like there is a bug in the implementation.
> In truth, these method are @CallerSensitive, and therefore must not
> be called in a context where the caller cannot be determined.
> Therefore, the right thing to do is to throw IllegalCallerException
> and document this.
> As per Rampdown Phase 2 Process  I'd also like to get
> confirmation that this is a reasonable proposal to fix in 9.
> This fix just transmutes a NullPointerException (which should
> never happen at this point in regular usage of the API) into an
> IllegalCallerException which will help diagnosing the fact
> that the API is called from a context where it's not supposed
> to be used. The risk of fixing should therefore be very limited.
> best regards,
> -- daniel
>  Rampdown Phase 2 Process
More information about the core-libs-dev