netbeans icon indicating copy to clipboard operation
netbeans copied to clipboard

crash in org.netbeans.core.startup.Main.getModuleSystem

Open errael opened this issue 2 years ago • 12 comments

Apache NetBeans version

Apache NetBeans 15

What happened

NetBeans crash after declining to import settings

How to reproduce

  • staring with clean .nb/15 (some -J-D added to netbeans.conf)
  • execute script: ./runme which contains something like bash /ref/nb/NetBeans/NetBeans-15/netbeans/bin/netbeans
    --jdkhome /ref/openjdk/java_home
    --userdir /home/err/.nb/15/userdir
    --cachedir /home/err/.nb/15/cachedir
    &> /junk/Caches/nb/15/LOG &
  • no to import
  • OBSERVE: startup/netbeans crashes: ~/bugs/nb/startup-stop/log-1

The first exception is from following the instructions above. I also occasionally see the 2nd exception when starting up netbeans; try again, and maybe again, and it works.

WARNING: package com.apple.eio not in java.desktop
java.lang.NullPointerException
	at java.base/java.net.URLConnection$1.getContentTypeFor(URLConnection.java:313)
	at java.base/java.net.URLConnection.guessContentTypeFromName(URLConnection.java:1464)
	at java.base/sun.net.www.protocol.jar.JarURLConnection.getContentType(JarURLConnection.java:223)
	at java.base/java.net.URLConnection.getContentHandler(URLConnection.java:1277)
	at java.base/java.net.URLConnection.getContent(URLConnection.java:778)
	at java.base/java.net.URL.getContent(URL.java:1150)
	at org.openide.util.lookup.MetaInfServicesLookup.search(MetaInfServicesLookup.java:293)
	at org.openide.util.lookup.MetaInfServicesLookup.beforeLookup(MetaInfServicesLookup.java:132)
	at org.openide.util.lookup.MetaInfServicesLookup.beforeLookupResult(MetaInfServicesLookup.java:111)
	at org.openide.util.lookup.AbstractLookup.lookup(AbstractLookup.java:458)
	at org.openide.util.lookup.ProxyLookup$R.lookupChange(ProxyLookup.java:519)
	at org.openide.util.lookup.ProxyLookup.setData(ProxyLookup.java:372)
	at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:211)
	at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:184)
	at org.netbeans.core.startup.MainLookup.changeLookups(MainLookup.java:193)
	at org.netbeans.core.startup.MainLookup.moduleClassLoadersUp(MainLookup.java:107)
	at org.netbeans.core.startup.MainLookup.systemClassLoaderChanged(MainLookup.java:95)
	at org.netbeans.core.startup.ModuleSystem.init(ModuleSystem.java:98)
	at org.netbeans.core.startup.Main.getModuleSystem(Main.java:162)
	at org.netbeans.core.startup.Main.getModuleSystem(Main.java:142)
	at org.netbeans.core.startup.Main.start(Main.java:299)
	at org.netbeans.core.startup.TopThreadGroup.run(TopThreadGroup.java:98)
	at java.base/java.lang.Thread.run(Thread.java:834)

Following from normal starup, not clean userdir.

java.lang.NullPointerException
	at java.base/java.net.URLConnection$1.getContentTypeFor(URLConnection.java:313)
	at java.base/java.net.URLConnection.guessContentTypeFromName(URLConnection.java:1464)
	at java.base/sun.net.www.protocol.jar.JarURLConnection.getContentType(JarURLConnection.java:223)
	at java.base/java.net.URLConnection.getContentHandler(URLConnection.java:1277)
	at java.base/java.net.URLConnection.getContent(URLConnection.java:778)
	at java.base/java.net.URL.getContent(URL.java:1150)
	at org.openide.util.lookup.MetaInfServicesLookup.search(MetaInfServicesLookup.java:293)
	at org.openide.util.lookup.MetaInfServicesLookup.beforeLookup(MetaInfServicesLookup.java:132)
	at org.openide.util.lookup.MetaInfServicesLookup.beforeLookupResult(MetaInfServicesLookup.java:111)
	at org.openide.util.lookup.AbstractLookup.lookup(AbstractLookup.java:458)
	at org.openide.util.lookup.ProxyLookup$R.initResults(ProxyLookup.java:449)
	at org.openide.util.lookup.ProxyLookup$R.myBeforeLookup(ProxyLookup.java:736)
	at org.openide.util.lookup.ProxyLookup$R.computeResult(ProxyLookup.java:612)
	at org.openide.util.lookup.ProxyLookup$R.allItems(ProxyLookup.java:596)
	at org.openide.util.lookup.ProxyLookup$R.collImpl(ProxyLookup.java:699)
	at org.openide.util.lookup.ProxyLookup$R.collectFires(ProxyLookup.java:645)
	at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:228)
	at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:184)
	at org.netbeans.core.startup.MainLookup.changeLookups(MainLookup.java:193)
	at org.netbeans.core.startup.MainLookup.doInitializeLookup(MainLookup.java:183)
	at org.netbeans.core.startup.MainLookup.modulesClassPathInitialized(MainLookup.java:134)
	at org.netbeans.core.startup.MainLookup.modulesClassPathInitialized(MainLookup.java:127)
	at org.netbeans.core.startup.NbInstaller.loadImpl(NbInstaller.java:360)
	at org.netbeans.core.startup.NbInstaller.access$000(NbInstaller.java:77)
	at org.netbeans.core.startup.NbInstaller$1.run(NbInstaller.java:322)
	at org.openide.filesystems.FileUtil$2.run(FileUtil.java:418)
	at org.openide.filesystems.EventControl.runAtomicAction(EventControl.java:102)
	at org.openide.filesystems.FileSystem.runAtomicAction(FileSystem.java:494)
	at org.openide.filesystems.FileUtil.runAtomicAction(FileUtil.java:402)
	at org.openide.filesystems.FileUtil.runAtomicAction(FileUtil.java:422)
	at org.netbeans.core.startup.NbInstaller.load(NbInstaller.java:319)
	at org.netbeans.ModuleManager.enable(ModuleManager.java:1457)
	at org.netbeans.ModuleManager.enable(ModuleManager.java:1254)
	at org.netbeans.core.startup.ModuleList.installNew(ModuleList.java:316)
	at org.netbeans.core.startup.ModuleList.trigger(ModuleList.java:252)
	at org.netbeans.core.startup.ModuleSystem.restore(ModuleSystem.java:298)
	at org.netbeans.core.startup.Main.getModuleSystem(Main.java:173)
	at org.netbeans.core.startup.Main.getModuleSystem(Main.java:142)
	at org.netbeans.core.startup.Main.start(Main.java:299)
	at org.netbeans.core.startup.TopThreadGroup.run(TopThreadGroup.java:98)
	at java.base/java.lang.Thread.run(Thread.java:834)

Did this work correctly in an earlier version?

No / Don't know

Operating System

Linux harmony 5.19.0-76051900-generic #202207312230~1660780566~22.04~9d60db1

JDK

OpenJDK Runtime Environment 18.9 (build 11.0.2+9)

Apache NetBeans packaging

Apache NetBeans binary zip

Anything else

No response

Are you willing to submit a pull request?

No

Code of Conduct

Yes

errael avatar Sep 18 '22 18:09 errael

I tried using jdk-17 to get more accurate NPE report. It doesn't fail.

I can't use jdk-17 to run NetBeans in general since I'm working on a gradle project that requires gradle 6.8.x.

errael avatar Sep 18 '22 18:09 errael

Not reproducible here on Ubuntu 22.04 (or on 20.04 as I was using that throughout release process). What are the changes to netbeans.conf you're running with? Does it work running directly using ./netbeans --userdir <USERDIR> --jdkhome <JAVA_HOME>? Does the value of Java Home at the top of the log match what you're passing in to jdkhome? In fact, can you attach the full, failing log here?

neilcsmith-net avatar Sep 20 '22 08:09 neilcsmith-net

Fresh unzip of NetBeans, no -J-D or other mods. /ref, /home, /junk are different filesystems

$ ls -l /ref/openjdk/java_home
lrwxrwxrwx 1 err err 6 Sep 11 19:16 /ref/openjdk/java_home -> jdk-11
err@harmony:~/.nb/15-startup-crash
$ ls -l /ref/openjdk/jdk-11
lrwxrwxrwx 1 err err 33 Aug 22 16:58 /ref/openjdk/jdk-11 -> /junk/BACK_REF/openjdk/jdk-11.0.2

dorun:

bash /junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/bin/netbeans \
    --jdkhome /ref/openjdk/java_home                                            \
    --userdir /home/err/.nb/15-startup-crash/udir

exit

After bash dorun, the dialog Confirm Import Settings comes up. Click No. Following copied from console

$ bash dorun
WARNING: package com.apple.eio not in java.desktop
java.lang.NullPointerException
	at java.base/java.net.URLConnection$1.getContentTypeFor(URLConnection.java:313)
	at java.base/java.net.URLConnection.guessContentTypeFromName(URLConnection.java:1464)
	at java.base/sun.net.www.protocol.jar.JarURLConnection.getContentType(JarURLConnection.java:223)
	at java.base/java.net.URLConnection.getContentHandler(URLConnection.java:1277)
	at java.base/java.net.URLConnection.getContent(URLConnection.java:778)
	at java.base/java.net.URL.getContent(URL.java:1150)
	at org.openide.util.lookup.MetaInfServicesLookup.search(MetaInfServicesLookup.java:293)
	at org.openide.util.lookup.MetaInfServicesLookup.beforeLookup(MetaInfServicesLookup.java:132)
	at org.openide.util.lookup.MetaInfServicesLookup.beforeLookupResult(MetaInfServicesLookup.java:111)
	at org.openide.util.lookup.AbstractLookup.lookup(AbstractLookup.java:458)
	at org.openide.util.lookup.ProxyLookup$R.lookupChange(ProxyLookup.java:519)
	at org.openide.util.lookup.ProxyLookup.setData(ProxyLookup.java:372)
	at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:211)
	at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:184)
	at org.netbeans.core.startup.MainLookup.changeLookups(MainLookup.java:193)
	at org.netbeans.core.startup.MainLookup.moduleClassLoadersUp(MainLookup.java:107)
	at org.netbeans.core.startup.MainLookup.systemClassLoaderChanged(MainLookup.java:95)
	at org.netbeans.core.startup.ModuleSystem.init(ModuleSystem.java:98)
	at org.netbeans.core.startup.Main.getModuleSystem(Main.java:162)
	at org.netbeans.core.startup.Main.getModuleSystem(Main.java:142)
	at org.netbeans.core.startup.Main.start(Main.java:299)
	at org.netbeans.core.startup.TopThreadGroup.run(TopThreadGroup.java:98)
	at java.base/java.lang.Thread.run(Thread.java:834)
err@harmony:~/.nb/15-startup-crash

And messages.log

-------------------------------------------------------------------------------
>Log Session: Tuesday, September 20, 2022 at 6:50:35 AM Pacific Daylight Time
>System Info: 
  Product Version         = Apache NetBeans IDE 15
  Operating System        = Linux version 5.19.0-76051900-generic running on amd64
  Java; VM; Vendor        = 11.0.2; OpenJDK 64-Bit Server VM 11.0.2+9; Oracle Corporation
  Runtime                 = OpenJDK Runtime Environment 11.0.2+9
  Java Home               = /junk/BACK_REF/openjdk/jdk-11.0.2
  System Locale; Encoding = en_US (nb); UTF-8
  Home Directory          = /home/err
  Current Directory       = /home/err/.nb/15-startup-crash
  User Directory          = /home/err/.nb/15-startup-crash/udir
  Cache Directory         = /home/err/.nb/15-startup-crash/udir/var/cache
  Installation            = /junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/nb
                            /junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/ergonomics
                            /junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/ide
                            /junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/extide
                            /junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/java
                            /junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/apisupport
                            /junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/webcommon
                            /junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/websvccommon
                            /junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/enterprise
                            /junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/profiler
                            /junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/php
                            /junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/harness
                            /junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/cpplite
                            /junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/groovy
                            /junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/javafx
                            /junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform
  Boot & Ext. Classpath   = 
  Application Classpath   = /junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform/lib/boot.jar:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform/lib/org-openide-modules.jar:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform/lib/org-openide-util.jar:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform/lib/org-openide-util-lookup.jar:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform/lib/org-openide-util-ui.jar
  Startup Classpath       = /junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform/core/asm-commons-9.3.jar:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform/core/org-netbeans-libs-asm.jar:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform/core/org-openide-filesystems.jar:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform/core/asm-tree-9.3.jar:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform/core/core-base.jar:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform/core/core.jar:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform/core/asm-9.3.jar:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/platform/core/org-openide-filesystems-compat8.jar:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/nb/core/org-netbeans-upgrader.jar:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/nb/core/locale/core_nb.jar
-------------------------------------------------------------------------------
$ tree udir/
udir/
├── config
└── var
    ├── cache
    │   └── lastModified
    │       └── all-checksum.txt
    ├── imported
    └── log
        └── messages.log

errael avatar Sep 20 '22 13:09 errael

Wow, this one surprised me, copied from console

err@harmony:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/bin
$ chmod +x netbeans
err@harmony:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/bin
$ ./netbeans --jdkhome /ref/openjdk/java_home
WARNING: package com.apple.eio not in java.desktop
java.lang.NullPointerException
	at java.base/java.net.URLConnection$1.getContentTypeFor(URLConnection.java:313)
	at java.base/java.net.URLConnection.guessContentTypeFromName(URLConnection.java:1464)
	at java.base/sun.net.www.protocol.jar.JarURLConnection.getContentType(JarURLConnection.java:223)
	at java.base/java.net.URLConnection.getContentHandler(URLConnection.java:1277)
	at java.base/java.net.URLConnection.getContent(URLConnection.java:778)
	at java.base/java.net.URL.getContent(URL.java:1150)
	at org.openide.util.lookup.MetaInfServicesLookup.search(MetaInfServicesLookup.java:293)
	at org.openide.util.lookup.MetaInfServicesLookup.beforeLookup(MetaInfServicesLookup.java:132)
	at org.openide.util.lookup.MetaInfServicesLookup.beforeLookupResult(MetaInfServicesLookup.java:111)
	at org.openide.util.lookup.AbstractLookup.lookup(AbstractLookup.java:458)
	at org.openide.util.lookup.ProxyLookup$R.lookupChange(ProxyLookup.java:519)
	at org.openide.util.lookup.ProxyLookup.setData(ProxyLookup.java:372)
	at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:211)
	at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:184)
	at org.netbeans.core.startup.MainLookup.changeLookups(MainLookup.java:193)
	at org.netbeans.core.startup.MainLookup.moduleClassLoadersUp(MainLookup.java:107)
	at org.netbeans.core.startup.MainLookup.systemClassLoaderChanged(MainLookup.java:95)
	at org.netbeans.core.startup.ModuleSystem.init(ModuleSystem.java:98)
	at org.netbeans.core.startup.Main.getModuleSystem(Main.java:162)
	at org.netbeans.core.startup.Main.getModuleSystem(Main.java:142)
	at org.netbeans.core.startup.Main.start(Main.java:299)
	at org.netbeans.core.startup.TopThreadGroup.run(TopThreadGroup.java:98)
	at java.base/java.lang.Thread.run(Thread.java:834)

and

$ tree ~/.netbeans/15
/home/err/.netbeans/15
├── config
└── var
    ├── imported
    └── log
        └── messages.log

3 directories, 2 files

Do it again and it starts up. (and I occasionally get the crash when starting up normally; well, what's normal for me)

err@harmony:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/bin
$ ./netbeans --jdkhome /ref/openjdk/java_home
WARNING: package com.apple.eio not in java.desktop
err@harmony:/junk/BACK_REF/nb/NetBeans/NetBeans-15-startup-crash/netbeans/bin

errael avatar Sep 20 '22 14:09 errael

It's all SSD, big ram. Race condition?

errael avatar Sep 20 '22 14:09 errael

Maybe. Try setting --jdkhome directly to /junk/BACK_REF/openjdk/jdk-11.0.2. Same as top of log. Same problem?

Java Home               = /junk/BACK_REF/openjdk/jdk-11.0.2

neilcsmith-net avatar Sep 20 '22 14:09 neilcsmith-net

$ ./netbeans --jdkhome /junk/BACK_REF/openjdk/jdk-11.0.2
WARNING: package com.apple.eio not in java.desktop
java.lang.NullPointerException
	at java.base/java.net.URLConnection$1.getContentTypeFor(URLConnection.java:313)

errael avatar Sep 20 '22 14:09 errael

Thanks. Been tracking a few issues with jdkhome being a symlink recently. Guess this isn't one of them.

neilcsmith-net avatar Sep 20 '22 14:09 neilcsmith-net

same exception was reported in #3958, I knew i saw that one before :)

mbien avatar Oct 01 '22 11:10 mbien

Huh. My network setup is vanilla; no proxy stuff. Comcast->cable-modem->NetGear router/wifi.

errael avatar Oct 01 '22 19:10 errael

null is actually a valid return value: https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/net/URLConnection.html#getContentType() so the JDK should probably check for that (haven't looked at the code yet since the source I am looking at doesn't match the line numbers :P).

It could still be invalid input which ends up throwing the internal NPE. Figuring out what the actual URL is which causes this situation might give some leads too.

mbien avatar Oct 01 '22 22:10 mbien

null is actually a valid return value: ... so the JDK should probably check

Maybe it was fixed. I happened all the time with JDK-11, and never with JDK-17. The other report you cite was also jdk-11.

errael avatar Oct 02 '22 00:10 errael