[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17129414#comment-17129414 ] guillaume canivet commented on NETBEANS-58: --- I test it with the Oracle JDK 8u251... No more freeze :) There are still some issues with the credential: If I enter the wrong password in the first time (when the credential popup is trigger by a proxy re-connection attempt), then credential will no longer work properly. Indeed, once a bad credential has been enter, each time the credential popup occurred, it will just failed even if I enter the correct credential is set. work around, restart the studio (and remember your password) > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0, 11.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > do
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17129373#comment-17129373 ] Laszlo Kishalmi commented on NETBEANS-58: - Can someone test this? The "as soon as I get back to the office" in 2020 could mean a heck of a long time... > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0, 11.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is very likely to be needed when > application is still not "warm", i.e. during startup. > h3. WORKAROUNDS > *#1* > If on Wi
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17088604#comment-17088604 ] jmborer commented on NETBEANS-58: - His Geertjan, I see indeed that the OpenJDK252 is finally available at Zulu. I'll test it, as soon as I get back to the office. Cheers, Jean-Marc > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0, 11.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is very likely to be needed when > application is still not "warm", i.e. during startup. > h3. WORK
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17088603#comment-17088603 ] Geertjan Wielenga commented on NETBEANS-58: --- Yes, it has been backported in the April 2020 OpenJDK Update Release. https://bugs.openjdk.java.net/browse/JDK-8068184 Would be good if those with this problem would verify, on one of these: OpenJDK 14.0.1 OpenJDK 13.0.3 OpenJDK 11.0.7 OpenJDK 8u252 OpenJDK 7u262 > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0, 11.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when >
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17053551#comment-17053551 ] Isaac commented on NETBEANS-58: --- The [underlying OpenJDK bug|https://bugs.openjdk.java.net/browse/JDK-8068184] has now closed with a fix version of Java 14. The fix has also been backported to Java 8. Can those experiencing the issue update to a fixed version of JRE and try again? > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0, 11.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is v
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17023459#comment-17023459 ] Lars Bruun-Hansen commented on NETBEANS-58: --- It is perhaps worth adding that in Java 13 the problem can possibly also be avoided by setting {{sun.security.jgss.native=true}} on the JVM. See [this|https://www.oracle.com/technetwork/java/13-relnote-issues-5460548.html#JDK-6722928]. I haven't tested it myself. This will mean that the Kerberos authentication will now hopefully work on the workstation (seen from Java's perspective) and there will therefore be no reason for the NetBeans Platform to present the {{Authenticator}} and therefore the deadlock will not happen. This is the theory, at least. > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0, 11.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when Nb
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17023082#comment-17023082 ] Lars Bruun-Hansen commented on NETBEANS-58: --- My 2c: The real fix, rather than the workarounds I've created in the past, is indeed NETBEANS-106. The main problem is that NetBeans' classloader is simply too lock happy. (it uses a global lock rather than a targeted one, something which - in my opinion - will ultimately lead to deadlocks, not just in this case but in other cases too). I don't think NETBEANS-106 is being worked on, AFAIK. > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0, 11.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloade
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17022951#comment-17022951 ] guillaume canivet commented on NETBEANS-58: --- I Experience a similar issue, in my case the freeze is not during startup, indeed I have a module within the studio (RCP) able to perform REST call (trigger by user click), and I am behind a corporate transparent proxy (with Kerberos token). Note: using Java 8 and NetBeans Version: RELEASE112. The freeze only occurred when the token need to be refresh (or it seems). Also in our case: *#1* and *#4* does not work, freeze still occurred. Only *#3* is working (rebuild with RELEASE112). The behavior of the *#3* is fine with us, but I really want to have an official NetBeans fix. Is there something we can do to have an official NetBeans fix? > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0, 11.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16884331#comment-16884331 ] Clemens Quoß commented on NETBEANS-58: -- We had this problem at our company up till Netbeans 11 and JDK 12.0.1. Using netbeans64.exe with JDK 12.0.1 works (for us). Proxy is set to system default. He is prompting a lot for the proxy credentials, thats annyoing, but no freeze. I do not know what type of proxy we use, but it is hosted by T-Systems and they do not do any MS stuff for us, so I think the proxy is linux-based. I can post a follow-up, if needed. Message is: it had not worked till Netbeans 11 / 64bit with JDK 12 and now it does. > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0, 11.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthen
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16879662#comment-16879662 ] Neil C Smith commented on NETBEANS-58: -- Maybe, but that's not feasibly making it into NB 11.1. > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0, 11.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is very likely to be needed when > application is still not "warm", i.e. during startup. > h3. WORKAROUNDS > *#1* > If on Windows: Setting the following registry key: > {{HKLM\System\Cur
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16879618#comment-16879618 ] lbruun commented on NETBEANS-58: What fixes this issue is NETBEANS-106. > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0, 11.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is very likely to be needed when > application is still not "warm", i.e. during startup. > h3. WORKAROUNDS > *#1* > If on Windows: Setting the following registry key: > {{HKLM\System\CurrentControlSet\Control\Ls
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16879143#comment-16879143 ] Neil C Smith commented on NETBEANS-58: -- Sorry for the noise! Misread what was and wasn't fixed here. Is there anything here that affects and can be feasibly addressed for NB 11.1? > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0, 11.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is very likely to be needed when > application is still not "warm", i.e. during startup. > h3. WOR
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16857594#comment-16857594 ] jmborer commented on NETBEANS-58: - @phansson: do you plan to recompile your plugins for NB 11 and release them on the plugin center? The 8.2 plugins could have been compatible if they haven't been linked to implementation version of certain modules. phansson had probably to do it to get access to classes that are not publicly accessible otherwise. I ran several times into similar issues with our NB platform based application. I often regret that the exposure policy is NB is more often closed than public. IMHO this over protect NB "internals" a little too much. I would have preferred a policy based on greater openness and trust. > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0, 11.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16857590#comment-16857590 ] Geertjan Wielenga commented on NETBEANS-58: --- Well, there's no surprise about that -- the plugins you're using need to be opened (i.e., the sources) in Apache NetBeans 11 and recompiled there. Then you're able to install them. > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0, 11.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is very likely to be needed when > application i
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16857588#comment-16857588 ] Tilman Hausherr commented on NETBEANS-58: - I took the settings from my NB8 installation, so the start page wasn't shown. But it frozed later, e.g. when searching for the latest plugins. Today I managed to get it to work by using a local proxy that chains to my actual proxy. That local proxy is a tool I've had for over a decade and I don't know if I can install it on my next corporate pc. So I tried again to install the two plugins but I can't, NB 11 still pops up a dialog that requires "plugin Core" and "plugin JNA" and the "Next" button is grey. > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0, 11.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbA
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16857509#comment-16857509 ] Geertjan Wielenga commented on NETBEANS-58: --- I know, it's become quite confusing. :-) > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0, 11.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is very likely to be needed when > application is still not "warm", i.e. during startup. > h3. WORKAROUNDS > *#1* > If on Windows: Setting the following registry key: > {{HKLM\System\Current
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16857508#comment-16857508 ] jmborer commented on NETBEANS-58: - Not sure to understand how the PR is solving the issue. Fist, it seems to partly solve it by providing SPI for custom Authenticator and secondly I don't understand in which state the PR currently is. > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0, 11.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is very likely to be needed when > application is
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16857444#comment-16857444 ] Geertjan Wielenga commented on NETBEANS-58: --- Seems to be connected to this, i.e., would this solve it for you: https://github.com/apache/netbeans/pull/2 > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0, 11.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is very likely to be needed when > application is still not "warm", i.e. during startup. > h3. WORKAROUNDS > *#1* > If on
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16857441#comment-16857441 ] jmborer commented on NETBEANS-58: - It seems there is some left over and cleanup to do in the start page, but if we get back to our freeze issue, I wonder why requests from the start page and requests to the plugin center(s) are made even thought the start page is not shown. The IDE freeze is really occurring for any network request that is made no matter which module is triggering it. > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0, 11.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authen
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16857438#comment-16857438 ] Geertjan Wielenga commented on NETBEANS-58: --- Yes, but it shouldn't be needed anymore, just point here instead, i.e., at netbeans.apache.org: https://blogs.apache.org/netbeans/ > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0, 11.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is very likely to be needed when > application is still not "warm", i.e. during startup. > h3. WOR
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16857437#comment-16857437 ] jmborer commented on NETBEANS-58: - May be it is a left over when I migrated my preferences from 8.2 to 11.0 I disabled the 8.2 plugins portal as well now. I opened up again the start page and can observe queries to [http://www.netbeans.org/news.xml] Isn't it the RSS feed? > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0, 11.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is very l
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16857436#comment-16857436 ] Geertjan Wielenga commented on NETBEANS-58: --- Well, those two links are not relevant in any way in the context of Apache, if you can find where they are in the Apache NetBeans GitHub, provide a pull request replacing those links with something on netbeans.apache.org. > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0, 11.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is very
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16857431#comment-16857431 ] jmborer commented on NETBEANS-58: - Hmm. That is a very good question. I don't know if Tilman Hausherr is running into this issue because of the start page or if it is related to other network requests. The start page is just another trigger for network requests. For example, when I start my IDE where the start page is already disabled (unchecked "show on startup") and no projects open, NB still triggers network requests to: http://www.netbeans.org/news.xml [http://www.netbeans.org/mtmo.xml?unique=08be841b7-fc8c-4d4c-8ab8-940d08493e7a] These request can lead to the deadlock of the IDE. What is particularly annoying with this issue is its unpredictability. It can bite you or not. For example our new very faster PCs with SSDs are more likely (not to say systematically) to run into this issue where my older machine seems not to be affected. This is pure luck. > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0, 11.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16857412#comment-16857412 ] Geertjan Wielenga commented on NETBEANS-58: --- So, if there was a switch to cause the Welcome screen not to be shown or the module providing the Welcome screen to be disabled, that would solve this? > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0, 11.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is very likely to be needed when > application is still not "warm", i.e. duri
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16857390#comment-16857390 ] jmborer commented on NETBEANS-58: - I confirme that this still happens with NB 11. I find this really an important issue. When it bites you (my colleagues for example), it is not the best user experience you can expect from such an amazing IDE. My colleagues were quite upset and immediately thought to change their IDE for an alternative. Hopefully this only happens in specific working environment, but still, not the best promotion for NB... When you install NB, it will by default open the welcome "start" page which triggers network requests. I still don't understand why this issue can't be fixed in NB. If I remember well when I hunted down the issue, it is the asynchronous request to the Keyring with another thread that deadlock each other... > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0, 11.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenti
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16856947#comment-16856947 ] Tilman Hausherr commented on NETBEANS-58: - NB 11 freezes at startup unless I disconnect the LAN cable, which is what also happened with NB 8. > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0, 11.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is very likely to be needed when > application is still not "warm", i.e. during startup. > h3. WORKAROUNDS > *#1* > If on Windows: Sett
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16856609#comment-16856609 ] Geertjan Wielenga commented on NETBEANS-58: --- I’m not sure that you need that plugin in 11.0, I believe that functionality is now included in 11.0 out of the box. > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is very likely to be needed when > application is still not "warm", i.e. during startup. > h3. WORKAROUNDS > *#1* > If
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16856596#comment-16856596 ] Tilman Hausherr commented on NETBEANS-58: - I just installed netbeans 11 because of NETBEANS-771. When trying to install proxy selector v2, I get this message: {quote} h3. Some plugins require plugin Core to be installed. The plugin Core is requested in implementation version 201609300101. The following plugin is affected: ProxySelector V2 h3. Some plugins require plugin JNA to be installed. The plugin JNA is requested in implementation version 201609300101. The following plugin is affected: ProxySelector V2 {quote} and I can't "check for updates" because proxy doesn't work. Where can I get these plugins? A search on the plugin page finds me nothing. > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be trig
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16856591#comment-16856591 ] Tilman Hausherr commented on NETBEANS-58: - [~phansson] There's a HTML problem in http://plugins.netbeans.org/plugin/72976/ "You must have Proxy Selector V2 Plugin installed" links to http://plugins.netbeans.org/plugin/72976/plugin/55258/ it should link to http://plugins.netbeans.org/plugin/55258/proxyselector-v2 or http://plugins.netbeans.org/plugin/55258/ > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16853756#comment-16853756 ] lbruun commented on NETBEANS-58: [~ggghhhjjj]: That would be a separate issue. Please log a new ticket with an appropriate title. > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is very likely to be needed when > application is still not "warm", i.e. during startup. > h3. WORKAROUNDS > *#1* > If on Windows: Setting the following registry
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16853737#comment-16853737 ] George commented on NETBEANS-58: Because Jira title explicitly points 'freeze on startup' and detailed description points some network request (for instance, call to NetBeans Update Center), from user point of view the important question is: why does on startup Netbeans make network request and how user can forbid this Netbeans action? Indeed even when user set Automatically Check for Updates check interval to 'Never' in Tools->Plugins->Settings, Netbeans 11 on startup makes a request to [https://netbeans.apache.org/nb/updates/11.0/updates.xml.gz?unique=...] It happens because of row 270 of [ FindComponentModules.java|https://github.com/apache/netbeans/blob/8f0da0b57f03751df5415c50bda4acd5dbc6c5b9/ergonomics/ide.ergonomics/src/org/netbeans/modules/ide/ergonomics/fod/FindComponentModules.java#L270] where p.refresh(null, true); is called with second argument true. The true value forces at row 155 [UpdateUnitProviderImpl.java|https://github.com/apache/netbeans/blob/8f0da0b57f03751df5415c50bda4acd5dbc6c5b9/platform/autoupdate.services/src/org/netbeans/modules/autoupdate/services/UpdateUnitProviderImpl.java#L155] to make force refresh with [AutoupdateCatalogProvider.java|https://github.com/apache/netbeans/blob/8f0da0b57f03751df5415c50bda4acd5dbc6c5b9/platform/autoupdate.services/src/org/netbeans/modules/autoupdate/updateprovider/AutoupdateCatalogProvider.java#L129] row 128-129. Thus, network request is performed at the end. User must be able to control network requests no matter do they flow through a proxy or not. So, fix of the proxy problem is incomplete to the problem researched in this Jira description. Possible solution is to append to the *_if (force)_* statement on row 128 of AutoupdateCatalogProvider.java with some system property where user could point skipping request for update. For example, {code:java} if (force && Bolean.valueOf(System.getProperty("nb-skip-autoaupdate-catalog", true))) {code} or to link this if statement with the 'Never' interval from Automatically Check for Updates. > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is >
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16452044#comment-16452044 ] jmborer commented on NETBEANS-58: - Done in https://github.com/apache/incubator-netbeans/pull/2 > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is very likely to be needed when > application is still not "warm", i.e. during startup. > h3. WORKAROUNDS > *#1* > If on Windows: Setting the following registry key: > {{HKLM\System\CurrentControlS
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16451841#comment-16451841 ] Geertjan Wielenga commented on NETBEANS-58: --- [https://netbeans.apache.org/participate/submit-pr.html] Comment and see this one for example: https://github.com/apache/incubator-netbeans/pull/2 > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is very likely to be needed when > application is still not "warm", i.e. during startup.
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16451834#comment-16451834 ] jmborer commented on NETBEANS-58: - [~GeertjanWielenga] wrote: {quote}OK, is this the following, by [~phansson], or are you referring to something different? {quote} Yes, I am referring to [~phansson] plugins: [https://bitbucket.org/phansson/netbeansproxy2|https://bitbucket.org/phansson/netbeansnetworkauthenticator] [https://bitbucket.org/phansson/netbeansnetworkauthenticator] {quote}Also note that YOU are the NetBeans team, too. :) I.e., please do provide a PR or state what you are specifically asking for here. {quote} Where can I do that? Jira? Sounds like a silly question, but I am not very used to how participate to large OSS projects :P. > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precis
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16451797#comment-16451797 ] Stephan Raible commented on NETBEANS-58: I can only confirm this happening on Windows 7 and 10 OS since Linux is not supported in our company :( > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is very likely to be needed when > application is still not "warm", i.e. during startup. > h3. WORKAROUNDS > *#1* > If on Windows: Setting
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16451798#comment-16451798 ] Geertjan Wielenga commented on NETBEANS-58: --- [~jmborer]: "Conclusion: @Netbeans team, please, bundle ProxySelector and Netbeans Authenticator with the NB platform!!" OK, is this the following, by [~phansson], or are you referring to something different? [https://bitbucket.org/phansson/netbeansnetworkauthenticator] [https://bitbucket.org/phansson/netbeansnetworkauthenticator/wiki/JDK-8068184%20Workaround] > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16451790#comment-16451790 ] Geertjan Wielenga commented on NETBEANS-58: --- The 'Environment' description for this issue is 'Primarily Windows'. OK, clearly, from the last few comments, this issue applies ONLY to Windows. If this is true, please change the Environment item in the description to match that. If it is not true, i.e., this may sometimes happen on other operating systems too, then please specify that very clearly here once and for all. > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtuall
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16451773#comment-16451773 ] Geertjan Wielenga commented on NETBEANS-58: --- Yes, I use Mac and Windows interchangeably and I work for Oracle, i.e., I am frequently within a corporate proxy and NetBeans runs on JDK 8 and above and normally the JDK 8 version I use is update 25. > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is very likely to be needed when >
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16451760#comment-16451760 ] Tilman Hausherr commented on NETBEANS-58: - {quote} It is super critical in a specific subset of scenarios, I for one have never (working within and without a corporate proxy) have never encountered it, as far as I am aware. {quote} [~GeertjanWielenga] have you ever worked with windows when within a corporate proxy since jdk 1.8.25? > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16451737#comment-16451737 ] Jean-Marc Borer commented on NETBEANS-58: - lbruun wrote: {quote}I'm partly guilty myself {quote} I wish I had the choice at my office :( > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is very likely to be needed when > application is still not "warm", i.e. during startup. > h3. WORKAROUNDS > *#1* > If on Windows: Setting the follo
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16451670#comment-16451670 ] lbruun commented on NETBEANS-58: Geertjan Wielenga wrote: {quote}It is super critical in a specific subset of scenarios, I for one have never (working within and without a corporate proxy) have never encountered it, as far as I am aware. Has this problem always been in NetBeans and is the only solution "to implement more fine grained classloaders" {quote} At least two questions there: # *Why you've never encountered it?* In my experience sites that deploy a proxy with Negotiate/Kerberos are more often than not MS shops, i.e. they use AD as the base of everything. Is that really where you've been? Also you have to use a Windows workstation for the problem to occur (due to Oracle's historical resistance to implement native support for SSPI on Windows ... it is a long story, but in essence in means that the Kerberos implementation in Java SE for Windows is extremely crippled when used in desktop scenarios : Java on Windows cannot automatically obtain a Kerberos ticket which means it is forced to invoke the Authenticator. On Mac OS X and Linux this would all be seamless, no need to invoke the Authenticator and therefore no deadlock). # *Has the problem always existed?* No, not always. The problem was introduced as a consequence of a [JDK bug fix|https://bugs.openjdk.java.net/browse/JDK-8032832] which was first introduced in Java 8u25 and later backported. This fix works fine for the JDK itself because their classloaders use the [Java 7 (and onwards) new functionality for classloaders|https://docs.oracle.com/javase/7/docs/technotes/guides/lang/cl-mt.html]. The NB Platform doesn't. The JDK folks phrase it like this: "Synchronization in the {{ClassLoader}} class was previously heavy-handed, or in technical terms, _not sufficiently granular_. A request to load a class synchronized on the entire {{ClassLoader}} object, which made it prone to deadlock.". That is exactly the problem in the NB Platform's classloaders. (discussed in NETBEANS-106). In summary: There are a number of conditions that must exist for the freeze bug to surface for a user: # The site uses a proxy which uses Negotiate/Kerberos for authentication. As this method was largely 'invented' by Microsoft and later standardized as an RFC, you see this very often on MS centric sites. (it is essentially the same as what Microsoft cleverly refers to as "Windows Integrated Authentication", clever because it leads people to be believe that this form of seamless authentication is only possible on Windows) # Workstation is Windows (not Mac OS X, not Linux) # Lastly, if the Platform or IDE user experiences the bug "without having touched anything" (which is quite likely) then it is because the Platform automatically picks up the proxy from the OS/InternetExplorer settings. Hence users will just experience that the Platform app or IDE hangs the first time they ever try to use it. Ouch! Honestly, I think one of the reasons why the problem gets little traction is because both JDK developers and NB developers have removed themselves somewhat from parts of their user base by using Mac OS X or Linux as their desktop as opposed to Windows. I'm partly guilty myself :P > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced fo
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16450130#comment-16450130 ] Jean-Marc Borer commented on NETBEANS-58: - I did a very interesting finding. Re-installed NB 8.2 with JDK 1.8-172 on Windows 7. Installed ProxySelectorPlugin + Authenticator and selected System proxy. Then using the registry I added: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters] "allowtgtsessionkey"=dword:0001 and not what is explained here: https://support.microsoft.com/en-us/help/308339/registry-key-to-allow-session-keys-to-be-sent-in-kerberos-ticket-grant Then I restarted NB IDE: it froze at startup during ~60 s. and also on a regular base during its life (retrieving Maven index for example), BUT I didn't get errors reported by the Authentication plugin. Then I deleted the REG entry above, restarted the IDE and it did't freeze, but I got !image-2018-04-24-15-57-47-592.png! So SPNEGO seems somehow to work with the setting above, but it will make your IDE/APP freeze regularly a quite long time. > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, > image-2018-04-24-15-57-47-592.png, nb-freeze-dump.txt, netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it wi
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16449908#comment-16449908 ] Jean-Marc Borer commented on NETBEANS-58: - @Geertjan, no it did not happen before. Now, I don't know from when exactly it started, I mean which JDK/NB version combination. Actually it doesn't matter. Now it no longer works and the reason has been quite clearly identified: dead locking while querying the Keyring. If you look at the extract from my block IDE thread dump you will see that: 1) "Thread-8" takes the lock {color:red}0xc0d64370 {color}in sun.net.www.protocol.http.AuthenticationHeader.parse(AuthenticationHeader.java:200) Then further down the call stack, it creates a task that will wait forever reading the a value from Keyring at org.netbeans.api.keyring.Keyring.read(Keyring.java:144) 2) This task is posted on thraed "*org.netbeans.api.keyring.Keyring*" where it tries to get the lock on {color:red}0xc0d64370{color}. Boom deadlock... This blocks all threads on the ModuleManager$SystemClassLoader lock on {color:red}0xc0d64370 {color}for every other thread including the AWT Event one which leads to the HMI freeze. "org.netbeans.api.keyring.Keyring" #26 daemon prio=1 os_prio=-2 tid=0x19593000 nid=0x1640 waiting for monitor entry [0x2655e000] java.lang.Thread.State: BLOCKED (on object monitor) at org.netbeans.ModuleManager$SystemClassLoader.getResourcesImpl(ModuleManager.java:708) - waiting to lock <{color:#FF}0xc0d64370{color}> (a org.netbeans.ModuleManager$SystemClassLoader) at org.netbeans.ProxyClassLoader.getResources(ProxyClassLoader.java:390) at org.openide.util.lookup.MetaInfServicesLookup.search(MetaInfServicesLookup.java:205) at org.openide.util.lookup.MetaInfServicesLookup.beforeLookup(MetaInfServicesLookup.java:156) at org.openide.util.lookup.MetaInfServicesLookup.beforeLookupResult(MetaInfServicesLookup.java:135) at org.openide.util.lookup.AbstractLookup.lookup(AbstractLookup.java:483) at org.openide.util.lookup.ProxyLookup$R.initResults(ProxyLookup.java:390) at org.openide.util.lookup.ProxyLookup$R.myBeforeLookup(ProxyLookup.java:673) at org.openide.util.lookup.ProxyLookup$R.computeResult(ProxyLookup.java:553) at org.openide.util.lookup.ProxyLookup$R.allInstances(ProxyLookup.java:513) at org.openide.util.lookup.ProxyLookup$R.allInstances(ProxyLookup.java:509) at org.openide.util.Lookup.lookupAll(Lookup.java:312) at org.netbeans.api.keyring.Keyring.provider(Keyring.java:89) - locked <0xf0525f68> (a java.lang.Class for org.netbeans.api.keyring.Keyring) at org.netbeans.api.keyring.Keyring.readImpl(Keyring.java:105) - locked <0xf0525f68> (a java.lang.Class for org.netbeans.api.keyring.Keyring) at org.netbeans.api.keyring.Keyring.access$100(Keyring.java:75) at org.netbeans.api.keyring.Keyring$1.call(Keyring.java:128) at org.netbeans.api.keyring.Keyring$1.call(Keyring.java:125) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1443) at org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:68) at org.openide.util.lookup.Lookups.executeWith(Lookups.java:303) at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2058) "Thread-8" #49 prio=6 os_prio=0 tid=0x256a5000 nid=0xdb8 waiting on condition [0x2cd7a000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0xf05d6c10> (a org.openide.util.RequestProcessor$RPFutureTask) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:429) at java.util.concurrent.FutureTask.get(FutureTask.java:191) at org.netbeans.api.keyring.Keyring.read(Keyring.java:144) at org.netbeans.core.ProxySettings.getAuthenticationPassword(ProxySettings.java:230) at org.netbeans.core.NbAuthenticator.getPasswordAuthentication(NbAuthenticator.java:87) at java.net.Authenticator.requestPasswordAuthentication(Authenticator.java:317) - locked <0xc2c66008> (a org.netbeans.core.NbAuthenticator) at sun.net.www.protocol.http.spnego.NegotiateCallbackHandler.getAnswer(NegotiateCallbackHandler.java:65) at sun.net.www.protocol.http.spnego.NegotiateCallbackHandler.handle(NegotiateCallbackHandler.java:86) at com.sun.security.auth.module.Krb5LoginModule.promptForName(Krb5LoginModule.java:858) at com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(Krb5LoginModule.java:704) at com.sun.security.auth.module.Krb5LoginModule.login(Krb5LoginModule.java:617) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodA
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16449785#comment-16449785 ] Geertjan Wielenga commented on NETBEANS-58: --- What is the reason that the below doesn't work, which I understand as the solution to this: [https://bitbucket.org/phansson/netbeansnetworkauthenticator] [https://bitbucket.org/phansson/netbeansnetworkauthenticator/wiki/JDK-8068184%20Workaround] > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, nb-freeze-dump.txt, > netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is very likely to be neede
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16449778#comment-16449778 ] Geertjan Wielenga commented on NETBEANS-58: --- It is super critical in a specific subset of scenarios, I for one have never (working within and without a corporate proxy) have never encountered it, as far as I am aware. Has this problem always been in NetBeans and is the only solution "to implement more fine grained classloaders"? > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, nb-freeze-dump.txt, > netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is need
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16449647#comment-16449647 ] Jean-Marc Borer commented on NETBEANS-58: - I need to stress that this issue is super critical, because it occurs systematically it makes NB IDE unusable. People will drop NB in favor for other (more reliable) IDE's which is pity and not to speak about the NB platform applications... It is hard to defend NB in your company when it just blocks right after startup... > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, nb-freeze-dump.txt, > netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16449497#comment-16449497 ] Stephan Raible commented on NETBEANS-58: I can confirme the same behaviour of Netbeans 8.2 with JDK 1.8.0._161 and _171 on a Windows 10 OS behind a corporate proxy. > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, nb-freeze-dump.txt, > netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is very likely to be needed when > application is still not "warm", i.e. during startup. > h3. WORKAROUNDS > *#1* > If on Windows: Setting the following
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16434018#comment-16434018 ] Jean-Marc Borer commented on NETBEANS-58: - I am not the man either for all this classloading fuss.:P > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, nb-freeze-dump.txt, > netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is very likely to be needed when > application is still not "warm", i.e. during startup. > h3. WORKAROUNDS > *#1* > If on Windows: Setting the following registry key: > {{HKLM\System\CurrentControlSet\Control\Lsa\Kerber
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16432880#comment-16432880 ] lbruun commented on NETBEANS-58: [~jmborer]: I can confirm from the thread dump that you have attached that this is indeed this very same nasty issue. You can read my comment from back in Autumn which pretty well explains why it is unlikely that the JDK people will feel compelled to "fix" this. I think it is fair to say that the problem happens _because of_ the NetBeans Platform's classloaders. In other words: Not many users of the JDK will see the problem, except those that use custom classloaders and more so only those that use "old fashioned" classloaders. This is stuff like NetBeans Platform and perhaps some Eclipse OSGi too (thus affecting the Eclipse IDE), but I got a feeling that the Eclipse people have since fixed their issue. So I sense that we (Apache NetBeans) are alone in this. For sure we can implement some workaround and I meant to do that. But I ran into some nasty race conditions with the NB Platform's startup sequence. Long story, but suffice to say it was a condition that has always existed (without impact) and requires more work to get right. HOWEVER, the workaround which was planned didn't actually solve the problem, it basically just stops the network connection attempt. So it would make sure there was no freeze, but you wouldn't actually achieve the underlying network action. The *real solution* is to implement more fine grained classloaders in NetBeans Platform which will make them "modern" and more in line with the JDK's own classloaders as of Java7. This is discussed in NETBEANS-106 which also describes why a more fine grained classloader will solve this particular problem ... and in fact also create a performance benefit. I'm not the man for such change as I find the custom classloaders that the Platform uses a but intimidating for a person who's not an expert on Java custom classloaders. :) > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, nb-freeze-dump.txt, > netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the f
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16432425#comment-16432425 ] Geertjan Wielenga commented on NETBEANS-58: --- Can you reproduce with earlier/later JDKs, with JDK 9, 10? > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, nb-freeze-dump.txt, > netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is very likely to be needed when > application is still not "warm", i.e. during startup. > h3. WORKAROUNDS > *#1* > If on Windows: Setting the following registry key: > {{HKLM\System\CurrentControlSet\Control\Lsa\
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16432388#comment-16432388 ] Jean-Marc Borer commented on NETBEANS-58: - It is absolutely related to this topic: proxy authentication leads to HMI deadlock at start up. I am 100% sure about it, I just reproduced it now with JDK 1.8 162 and Netbeans 8.2. None of the workarounds mentioned here and at https://netbeans.org/bugzilla/show_bug.cgi?id=262883 work. Neither the ProxySelector V2 plugin (http://plugins.netbeans.org/plugin/55258/proxyselector-v2) nor the Network authenticator plugin (http://plugins.netbeans.org/plugin/72976/network-authenticator) are fixing the issue. I am exactly in the same situation as all the people here waiting for a JDK (?) fix. > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, nb-freeze-dump.txt, > netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenti
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16432203#comment-16432203 ] Geertjan Wielenga commented on NETBEANS-58: --- Not sure if this is the same problem as what this issue is about. Make sure you're using the solution described here to check for sure that this doesn't solve the problem. I'd advise creating a new issue and providing step by step instructions for reproducing this. > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, nb-freeze-dump.txt, > netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact it is ve
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16431984#comment-16431984 ] Jean-Marc Borer commented on NETBEANS-58: - My comment is a backport of this bugzilla entry which is still true and extremely annoying for me: https://netbeans.org/bugzilla/show_bug.cgi?id=262883 If I remember well, it appeared after upgrading to JDK 1.8 121, but not absolutely sure, since I we often had trouble with the corporate proxy and I first thought it was my IT team that messed it up again and I had the network proxy disabled. My trouble started when I wanted to check for IDE updates and turned the proxy settings on again. > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, nb-freeze-dump.txt, > netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it does
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16431972#comment-16431972 ] Geertjan Wielenga commented on NETBEANS-58: --- "We started running into this issue (Frozen stack trace with Java x64 8_162 and Netbeans 8.2 Win7x64) . No idea, why we never saw it before." Can you be more specific? When did you start running into this and what does "before" mean? "Before" what, before what date or what? > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Critical > Attachments: NETBEANS-58-workaround1.diff, nb-freeze-dump.txt, > netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never be experienced. > h3. HOW DO I KNOW IF I'M AFFECTED BY EXACTLY THIS BUG? > This bug in this ticket is characterized by the fact that you'll always be > able to find the following in your thread dump: > {noformat} >at > sun.net.www.protocol.http.NegotiateAuthentication.isSupported(NegotiateAuthentication.java:) > - locked (a org.netbeans.ModuleManager$SystemClassLoader) > {noformat} > Note that the [Ctrl-Break > method|https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr019.html] > of obtaining a thread dump is favoured over jstack and other methods. > h3. WHY DOES IT HAPPEN? > There will be a lock held on the classloader object when the JRE's registered > Authenticator is invoked. If the Authenticator does work on another thread, > that other thread has a need for some classloading and the current thread > needs to wait for the result of that thread, then bum!, there's a deadlock > between the two threads. This means the lock on the classloader will never be > released and it will ultimately affect other threads, such as the AWT > dispatch thread (aka Swing EDT) which will then also lock. Then you have what > the user experiences as a freeze. > The NB Platform's own Authenticator, {{NbAuthenticator}}, does exactly what I > described and will thus be triggering the deadlock. More precisely it will > happen when NbAuthenticator calls Keyring. Does this mean the NbAuthenticator > does something wrong? No, of course it doesn't. The real problem is the lock > on the classloader. It is actually virtually impossible to design an > Authenticator which doesn't trigger this problem. You cannot predict when > classloading is needed. In fact
[jira] [Commented] (NETBEANS-58) NB IDE or NB Platform freeze on startup (proxy with Negotiate auth)
[ https://issues.apache.org/jira/browse/NETBEANS-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16431958#comment-16431958 ] Jean-Marc Borer commented on NETBEANS-58: - We started running into this issue (Frozen stack trace with Java x64 8_162 and Netbeans 8.2 Win7x64) . No idea, why we never saw it before. Maybe someone changed something in the corporate proxy, but this is completely out of our reach. Once Netbeans is frozen, VisualVM can no longer properly interact with it. I managed to monitor NB with VisualVM before the freeze: thread view update. When NB freezes, thread view is also blocked, but I can still do a thread dump... VisualVM also suffers from this freezing bug as well as any NB platform application. No really astonishing since it based on NB platform. When we use "Manual Proxy Settings" from "No Proxy" it first works. Then we close the IDE and reopen it. It starts, but as soon as I try an action using the classloader such as opening a menu, it freezes completely. I managed to get a thread dump and the conclusion is similar to the ones here (I will attach it too). Unfortunately, https://bitbucket.org/phansson/netbeansproxy2 does not solve the issue at all. Same behaviour. The only solution currently is to work offline with "No proxy" or use a local proxy such as CNTLM, which then allows corporate proxy authentication and doesn't lead to this Keyring/Authenticator deadlock. After further analysis of my second thread [^nb-freeze-dump.txt] one can see that the issue lies in: 1) "Thread-8" takes the lock 0xc0d64370 in sun.net.www.protocol.http.AuthenticationHeader.parse(AuthenticationHeader.java:200) Then further down the call stack, it creates a task that will wait forever reading the a value from Keyring at org.netbeans.api.keyring.Keyring.read(Keyring.java:144) 2) This task is posted on thred "org.netbeans.api.keyring.Keyring" where it tries to get the lock on 0xc0d64370. Boom deadlock... This blocks the lock on 0xc0d64370 for every other thread including the AWT Event one. [1] https://netbeans.org/bugzilla/show_bug.cgi?id=262883 [2] http://cntlm.sourceforge.net/ > NB IDE or NB Platform freeze on startup (proxy with Negotiate auth) > --- > > Key: NETBEANS-58 > URL: https://issues.apache.org/jira/browse/NETBEANS-58 > Project: NetBeans > Issue Type: Bug > Components: platform - Proxy >Affects Versions: 8.2, 9.0 > Environment: Primarily Windows. >Reporter: phansson >Priority: Major > Attachments: NETBEANS-58-workaround1.diff, nb-freeze-dump.txt, > netbeans.txt > > > When any network operation is performed, such as attempting to contact > NetBeans Update Center, the application (IDE or Platform) may freeze. Users > will typically experience this on startup. It was reported in old bug tracker > as [bug 248308|https://netbeans.org/bugzilla/show_bug.cgi?id=248308]. > The problem arises because of the fix JDK folks applied as a consequence of > the reported [JDK-8032832 > bug|https://bugs.openjdk.java.net/browse/JDK-8032832]. This fix wasn't very > clever IMO: it puts a lock on the classloader, thus introducing a range of > other problems, one of them being that NetNeans IDE or NetBeans Platform will > likely freeze on startup when it attempts a network operation. The fact that > their fix made things worse (while no doubt fixing the original issue) has > been reported as > [JDK-8068184|https://bugs.openjdk.java.net/browse/JDK-8068184]. > h3. WHEN DOES IT HAPPEN? > As the lock is introduced for authentication of type 'Negotiate' it of course > only happens if there's a network proxy on the path which uses this type of > authentication. Also known as SPNEGO. This form of authentication is in my > experience very common in corporate networks, in particular those that base > themselves on the Microsoft stack. But a person on Oracle's own internal > network, such as a JDK developer, is most likely not exposed to it. :-) > There's another condition for it to happen: The JRE runtime must be unable to > provide 'credentials' (a Kerberos token) to the network proxy on its own. > SPNEGO is really designed to be seamless and promptless. Support for it was > added in Java 6. But later on Microsoft tightened the desktop security around > obtaining the so-called 'session token' and the JDK folks were never able to > work around this (unlike the makers of Chrome, FF, Opera, etc). Therefore, in > real-life, SPNEGO in the JRE on Windows is no longer promptless: it will be > forced to ask the user for credentials, thus negating the idea of SPNEGO. It > is the prompting which causes the freeze. SPNEGO on Mac OS X and Linux is > most likely working just fine and the bug will never