I forgot to save an instance of the Desktop class to the static variable.
http://cr.openjdk.java.net/~azvegint/jdk/9/8151189/01/
Thanks,
Alexander.
On 11/16/16 12:16 AM, Phil Race wrote:
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