harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mikhail Markov (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HARMONY-2982) [classlib][net ] java.net.URLClassLoader implementation is not thread safe.
Date Thu, 15 Feb 2007 12:04:05 GMT

    [ https://issues.apache.org/jira/browse/HARMONY-2982?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12473362
] 

Mikhail Markov commented on HARMONY-2982:
-----------------------------------------

I understand this but don't like it as it relies on a particular implementation of IdentityHashMap.
Probably it'll work ok with current implementation but if we start modifying IdentityHashMap
code your suggested approach could possibly fail (for example, if get() is working somewhere
in the middle of put() call and return non-null result.

Perhaps it's the right time to discuss this on the mailing list to get others opinion?

> [classlib][net ] java.net.URLClassLoader implementation is not thread safe.
> ---------------------------------------------------------------------------
>
>                 Key: HARMONY-2982
>                 URL: https://issues.apache.org/jira/browse/HARMONY-2982
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib
>            Reporter: Elena Semukhina
>         Attachments: H-2982.patch, H-2982_1.patch
>
>
> The DRLVM smoke test classloader.StressLoader fails intermittently on both Linux and
Windows.
> To reproduce the failure you should run the test iteratively in the following way:
> while true; do $DRLVM -cp <path to smoke test classes> classloader.StressLoader;
done
> I observe two sorts of intermittent failures: 
> 1. java.lang.NullPointerException
> 	at java.net.URLClassLoader.explore(URLClassLoader.java:1200)
> 	at java.net.URLClassLoader.findResourceImpl(URLClassLoader.java:809)
> 	at java.net.URLClassLoader$5.run(URLClassLoader.java:667)
> 	at java.net.URLClassLoader$5.run(URLClassLoader.java)
> 	at java.security.AccessController.doPrivilegedImpl(Unknown Source)
> 	at java.security.AccessController.doPrivileged(Unknown Source)
> 	at java.net.URLClassLoader.findResource(URLClassLoader.java:665)
> 	at java.lang.ClassLoader$BootstrapLoader.findResource(Unknown Source)
> 	at java.lang.ClassLoader.getResource(Unknown Source)
> 	at java.lang.ClassLoader.getResourceAsStream(Unknown Source)
> 	at java.lang.ClassLoader.getSystemResourceAsStream(Unknown Source)
> 	at classloader.LogLoader.loadClass(Unknown Source)
> 	at classloader.StressLoader.run(Unknown Source)
> 2. java.lang.ArrayIndexOutOfBoundsException
> 	at java.util.IdentityHashMap.rehash(IdentityHashMap.java:501)
> 	at java.util.IdentityHashMap.put(IdentityHashMap.java:463)
> 	at java.net.URLClassLoader.findResourceImpl(URLClassLoader.java:720)
> 	at java.net.URLClassLoader$5.run(URLClassLoader.java:667)
> 	at java.net.URLClassLoader$5.run(URLClassLoader.java)
> 	at java.security.AccessController.doPrivilegedImpl(Unknown Source)
> 	at java.security.AccessController.doPrivileged(Unknown Source)
> 	at java.net.URLClassLoader.findResource(URLClassLoader.java:665)
> 	at java.lang.ClassLoader$BootstrapLoader.findResource(Unknown Source)
> 	at java.lang.ClassLoader.getResource(Unknown Source)
> 	at java.lang.ClassLoader.getResourceAsStream(Unknown Source)
> 	at java.lang.ClassLoader.getSystemResourceAsStream(Unknown Source)
> 	at classloader.LogLoader.loadClass(Unknown Source)
> 	at classloader.StressLoader.run(Unknown Source)
> java.lang.ArrayIndexOutOfBoundsException
> 	at java.util.IdentityHashMap.rehash(IdentityHashMap.java:501)
> 	at java.util.IdentityHashMap.put(IdentityHashMap.java:463)
> 	at java.net.URLClassLoader.findResourceImpl(URLClassLoader.java:720)
> 	at java.net.URLClassLoader$5.run(URLClassLoader.java:667)
> 	at java.net.URLClassLoader$5.run(URLClassLoader.java)
> 	at java.security.AccessController.doPrivilegedImpl(Unknown Source)
> 	at java.security.AccessController.doPrivileged(Unknown Source)
> 	at java.net.URLClassLoader.findResource(URLClassLoader.java:665)
> 	at java.lang.ClassLoader$BootstrapLoader.findResource(Unknown Source)
> 	at java.lang.ClassLoader.getResource(Unknown Source)
> 	at java.lang.ClassLoader.getResourceAsStream(Unknown Source)
> 	at java.lang.ClassLoader.getSystemResourceAsStream(Unknown Source)
> 	at classloader.LogLoader.loadClass(Unknown Source)
> 	at classloader.StressLoader.run(Unknown Source)
> java.lang.ArrayIndexOutOfBoundsException
> 	at java.util.IdentityHashMap.rehash(IdentityHashMap.java:501)
> 	at java.util.IdentityHashMap.put(IdentityHashMap.java:463)
> 	at java.net.URLClassLoader.findResourceImpl(URLClassLoader.java:720)
> 	at java.net.URLClassLoader$5.run(URLClassLoader.java:667)
> 	at java.net.URLClassLoader$5.run(URLClassLoader.java)
> 	at java.security.AccessController.doPrivilegedImpl(Unknown Source)
> 	at java.security.AccessController.doPrivileged(Unknown Source)
> 	at java.net.URLClassLoader.findResource(URLClassLoader.java:665)
> 	at java.lang.ClassLoader$BootstrapLoader.findResource(Unknown Source)
> 	at java.lang.ClassLoader.getResource(Unknown Source)
> 	at java.lang.ClassLoader.getResourceAsStream(Unknown Source)
> 	at java.lang.ClassLoader.getSystemResourceAsStream(Unknown Source)
> 	at classloader.LogLoader.loadClass(Unknown Source)
> 	at classloader.StressLoader.run(Unknown Source)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message