harmony-commits mailing list archives

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

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

Elena Semukhina commented on HARMONY-2982:
------------------------------------------

Yes, we need synchronization when changing resCache otherwise we have the problems showing
up in the stack traces provided in the first comment.

My patches and the last suggestion actually place resCache.put() in synchronized block.
Isn't it enough?

> [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