<AWT Dev> [9] Review request for 8151189: Possible getAppContext() NPE in java.awt.Desktop and java.awt.Taskbar
Phil Race
philip.race at oracle.com
Tue Nov 15 21:16:15 UTC 2016
A "main" appcontext will be created if you are a standalone app, but
not if running in webstart (although the means of determining that is
somewhat hokey) :-
if (numAppContexts.get() == 0) {
if
(System.getProperty("javaplugin.version") == null &&
System.getProperty("javawebstart.version") == null) {
initMainAppContext();
So if that is not initialised it appears to rely solely on an appcontext
being
associated with the current threadgroup - or a parent threadgroup.
If for some reason this does not return an appcontext you'll get the NPE.
This doesn't have to mean it is the Toolkit thread.
This example may be a little contrived but it illustrates the problem :-
If the webstart system property is set you will never see "got desktop"
printed
because the finalizer thread gets an exception.
===
import java.awt.Desktop;
public class GD {
public void finalize() {
System.out.println("get desktop");
System.out.println(Desktop.getDesktop());
System.out.println("got desktop");
}
public static void main(String[] args) {
if (args.length == 0) {
System.out.println("Setting webstart version");
System.setProperty("javawebstart.version", "8");
}
while (true) {
new GD();
System.gc();
}
}
}
====
-phil.
On 11/15/2016 10:48 AM, Phil Race wrote:
> So are you saying we will never call this from the Toolkit thread, so
> provably
> there will never be an NPE ?
>
> Seems we have had a ton of NPE bugs from getAppContext() returning null
> so I am not so confident about that.
>
> -phil.
>
> On 11/15/2016 10:44 AM, Sergey Bylokhov wrote:
>> I guess this should be closed as not a defect. getAppContext() can
>> return null if it will be called from the toolkit thread. If this
>> method is called by the user then appcontext should not be null,
>> additionally we should not cache this value in the static, so all
>> other code will use this cached static value.
>>
>> On 15.11.16 20:38, Phil Race wrote:
>>>
>>> +1
>>>
>>> -phil.
>>>
>>> On 11/15/2016 08:24 AM, Alexander Zvegintsev wrote:
>>>> Hello,
>>>>
>>>> please review the fix
>>>>
>>>> http://cr.openjdk.java.net/~azvegint/jdk/9/8151189/00/
>>>>
>>>> for the issue
>>>>
>>>> https://bugs.openjdk.java.net/browse/JDK-8151189
>>>>
>>>
>>
>>
>
More information about the awt-dev
mailing list