This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 269950 - NetbinoxLoader.loadClass is failing an assert with cglib
Summary: NetbinoxLoader.loadClass is failing an assert with cglib
Status: NEW
Alias: None
Product: platform
Classification: Unclassified
Component: Netigso (show other bugs)
Version: Dev
Hardware: PC Windows 7
: P3 normal (vote)
Assignee: Tomas Hurka
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-03-01 00:37 UTC by stoto79
Modified: 2017-03-01 16:54 UTC (History)
0 users

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description stoto79 2017-03-01 00:37:01 UTC

    
Comment 1 stoto79 2017-03-01 00:43:10 UTC
In NetbinoxLoader.loadClass() the invariant that the CL is not locked is enforced with an assert:

@Override
    protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
        assert !Thread.holdsLock(this) : 
            "Classloading while holding classloader lock!";
        return super.loadClass(name, resolve);
    }

In JDev, running with Netbinox loader, when assertions are enabled, this runs into a bug when interacting with the latest version of cglib. When assertions are disabled, the code works fine, so it seems that the lock being held is kind of a benign condition that does not warrant such a harsh treatment as using the assertion framework. Just removing the assert or logging a message might be sufficient with whatever defensive mechanism is being enforced here.
Comment 2 stoto79 2017-03-01 00:43:31 UTC
The stack trace: 

Performing action (134) Check for Updates... [ from MessagePage ]
org.netbeans.core.netigso.Netigso:Feb 24, 2017 4:59:02 PM
org.netbeans.core.netigso.Netigso$1 run
INFO: bundle oracle.external.cglib@12.2.1 started

Feb 24, 2017 4:59:02 PM
oracle.ideimpl.feedback2.client.FeedbackManagerImpl uncaughtException
SEVERE: Uncaught Exception
java.lang.ExceptionInInitializerError
  at
oracle.jdevimpl.credential.singleton.CredentialHelper.createExtendedTrustManagerProxy(CredentialHelper.java:1117)

  at
oracle.jdevimpl.credential.singleton.CredentialHelper.getClientSSLContextForCredentialImpl(CredentialHelper.java:748)

  at
oracle.jdevimpl.credential.singleton.CredentialHelper.getClientSSLContext(CredentialHelper.java:560)

  at
oracle.jdevimpl.credential.LazySSLContextSpi.get(LazySSLContextSpi.java:42)

  at
oracle.jdevimpl.credential.LazySSLContextSpi.engineGetSocketFactory(LazySSLContextSpi.java:71)

  at javax.net.ssl.SSLContext.getSocketFactory(SSLContext.java:294)
  at javax.net.ssl.SSLSocketFactory.getDefault(SSLSocketFactory.java:122)
  at
javax.net.ssl.HttpsURLConnection.getDefaultSSLSocketFactory(HttpsURLConnection.java:332)

  at javax.net.ssl.HttpsURLConnection.<init>(HttpsURLConnection.java:289)
  at
sun.net.www.protocol.https.HttpsURLConnectionImpl.<init>(HttpsURLConnectionImpl.java:85)

  at sun.net.www.protocol.https.Handler.openConnection(Handler.java:62)
  at sun.net.www.protocol.https.Handler.openConnection(Handler.java:57)
  at java.net.URL.openConnection(URL.java:979)
  at
oracle.ideimpl.webupdate.util.UpdateUtil.openConnectionCheckRedirects(UpdateUtil.java:120)

  at
oracle.ideimpl.webupdate.CheckUpdatesRunnable.getAllAvailableUpdates(CheckUpdatesRunnable.java:475)

  at
oracle.ideimpl.webupdate.CheckUpdatesRunnable.run(CheckUpdatesRunnable.java:133)

  at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalStateException: Unable to load cache item
  at
net.sf.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:79)
  at net.sf.cglib.core.internal.LoadingCache.get(LoadingCache.java:34)
  at
net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:116)

  at
net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:291)

  at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:221)
  at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:174)
  at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:153)
  at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:73)
  ... 17 more
Caused by: java.lang.AssertionError: Classloading while holding
classloader lock!
  at
org.netbeans.modules.netbinox.NetbinoxLoader.loadClass(NetbinoxLoader.java:79)

  at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  at
net.sf.cglib.core.DefaultNamingPolicy.getClassName(DefaultNamingPolicy.java:48)

  at
net.sf.cglib.core.AbstractClassGenerator.generateClassName(AbstractClassGenerator.java:154)

  at
net.sf.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:317)

  at
net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:93)

  at
net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:91)

  at net.sf.cglib.core.internal.LoadingCache$2.call(LoadingCache.java:54)
  at java.util.concurrent.FutureTask.run(FutureTask.java:266)
  at
net.sf.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:61)
  ... 24 more


java.lang.ExceptionInInitializerError
o.ji.credential.singleton.CredentialHelper.createExtendedTrustManagerProxy(CredentialHelper.java:1117)

o.ji.credential.singleton.CredentialHelper.getClientSSLContextForCredentialImpl(CredentialHelper.java:748)

o.ji.credential.singleton.CredentialHelper.getClientSSLContext(CredentialHelper.java:560)

o.ji.credential.LazySSLContextSpi.get(LazySSLContextSpi.java:42)
o.ji.credential.LazySSLContextSpi.engineGetSocketFactory(LazySSLContextSpi.java:71)

jx.net.ssl.SSLContext.getSocketFactory(SSLContext.java:294)
jx.net.ssl.SSLSocketFactory.getDefault(SSLSocketFactory.java:122)
jx.net.ssl.HttpsURLConnection.getDefaultSSLSocketFactory(HttpsURLConnection.java:332)

jx.net.ssl.HttpsURLConnection.<init>(HttpsURLConnection.java:289)
sun.net.www.protocol.https.HttpsURLConnectionImpl.<init>(HttpsURLConnectionImpl.java:85)

sun.net.www.protocol.https.Handler.openConnection(Handler.java:62)
sun.net.www.protocol.https.Handler.openConnection(Handler.java:57)
j.net.URL.openConnection(URL.java:979)
o.ii.webupdate.util.UpdateUtil.openConnectionCheckRedirects(UpdateUtil.java:120)

o.ii.webupdate.CheckUpdatesRunnable.getAllAvailableUpdates(CheckUpdatesRunnable.java:475)

o.ii.webupdate.CheckUpdatesRunnable.run(CheckUpdatesRunnable.java:133)
j.lang.Thread.run(Thread.java:745)
Caused by:
java.lang.IllegalStateException: Unable to load cache item
net.sf.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:79)
net.sf.cglib.core.internal.LoadingCache.get(LoadingCache.java:34)
net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:116)

net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:291)

net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:221)
net.sf.cglib.core.KeyFactory.create(KeyFactory.java:174)
net.sf.cglib.core.KeyFactory.create(KeyFactory.java:153)
net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:73)
o.ji.credential.singleton.CredentialHelper.createExtendedTrustManagerProxy(CredentialHelper.java:1117)

o.ji.credential.singleton.CredentialHelper.getClientSSLContextForCredentialImpl(CredentialHelper.java:748)

o.ji.credential.singleton.CredentialHelper.getClientSSLContext(CredentialHelper.java:560)

o.ji.credential.LazySSLContextSpi.get(LazySSLContextSpi.java:42)
o.ji.credential.LazySSLContextSpi.engineGetSocketFactory(LazySSLContextSpi.java:71)

jx.net.ssl.SSLContext.getSocketFactory(SSLContext.java:294)
jx.net.ssl.SSLSocketFactory.getDefault(SSLSocketFactory.java:122)
jx.net.ssl.HttpsURLConnection.getDefaultSSLSocketFactory(HttpsURLConnection.java:332)

jx.net.ssl.HttpsURLConnection.<init>(HttpsURLConnection.java:289)
sun.net.www.protocol.https.HttpsURLConnectionImpl.<init>(HttpsURLConnectionImpl.java:85)

sun.net.www.protocol.https.Handler.openConnection(Handler.java:62)
sun.net.www.protocol.https.Handler.openConnection(Handler.java:57)
j.net.URL.openConnection(URL.java:979)
o.ii.webupdate.util.UpdateUtil.openConnectionCheckRedirects(UpdateUtil.java:120)

o.ii.webupdate.CheckUpdatesRunnable.getAllAvailableUpdates(CheckUpdatesRunnable.java:475)

o.ii.webupdate.CheckUpdatesRunnable.run(CheckUpdatesRunnable.java:133)
j.lang.Thread.run(Thread.java:745)
Caused by:
java.lang.AssertionError: Classloading while holding classloader lock!
org.netbeans.modules.netbinox.NetbinoxLoader.loadClass(NetbinoxLoader.java:79)

j.lang.ClassLoader.loadClass(ClassLoader.java:357)
net.sf.cglib.core.DefaultNamingPolicy.getClassName(DefaultNamingPolicy.java:48)

net.sf.cglib.core.AbstractClassGenerator.generateClassName(AbstractClassGenerator.java:154)

net.sf.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:317)

net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:93)

net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:91)

net.sf.cglib.core.internal.LoadingCache$2.call(LoadingCache.java:54)
j.util.concurrent.FutureTask.run(FutureTask.java:266)
net.sf.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:61)
net.sf.cglib.core.internal.LoadingCache.get(LoadingCache.java:34)
net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:116)

net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:291)

net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:221)
net.sf.cglib.core.KeyFactory.create(KeyFactory.java:174)
net.sf.cglib.core.KeyFactory.create(KeyFactory.java:153)
net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:73)
o.ji.credential.singleton.CredentialHelper.createExtendedTrustManagerProxy(CredentialHelper.java:1117)

o.ji.credential.singleton.CredentialHelper.getClientSSLContextForCredentialImpl(CredentialHelper.java:748)

o.ji.credential.singleton.CredentialHelper.getClientSSLContext(CredentialHelper.java:560)

o.ji.credential.LazySSLContextSpi.get(LazySSLContextSpi.java:42)
o.ji.credential.LazySSLContextSpi.engineGetSocketFactory(LazySSLContextSpi.java:71)

jx.net.ssl.SSLContext.getSocketFactory(SSLContext.java:294)
jx.net.ssl.SSLSocketFactory.getDefault(SSLSocketFactory.java:122)
jx.net.ssl.HttpsURLConnection.getDefaultSSLSocketFactory(HttpsURLConnection.java:332)

jx.net.ssl.HttpsURLConnection.<init>(HttpsURLConnection.java:289)
sun.net.www.protocol.https.HttpsURLConnectionImpl.<init>(HttpsURLConnectionImpl.java:85)

sun.net.www.protocol.https.Handler.openConnection(Handler.java:62)
sun.net.www.protocol.https.Handler.openConnection(Handler.java:57)
j.net.URL.openConnection(URL.java:979)
o.ii.webupdate.util.UpdateUtil.openConnectionCheckRedirects(UpdateUtil.java:120)

o.ii.webupdate.CheckUpdatesRunnable.getAllAvailableUpdates(CheckUpdatesRunnable.java:475)

o.ii.webupdate.CheckUpdatesRunnable.run(CheckUpdatesRunnable.java:133)
j.lang.Thread.run(Thread.java:745)
====================================
Comment 3 Tomas Pavek 2017-03-01 16:54:51 UTC
Related to bug 226084.