Return-Path: Delivered-To: apmail-harmony-commits-archive@www.apache.org Received: (qmail 25898 invoked from network); 29 Jan 2007 13:26:11 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 29 Jan 2007 13:26:11 -0000 Received: (qmail 93967 invoked by uid 500); 29 Jan 2007 13:26:17 -0000 Delivered-To: apmail-harmony-commits-archive@harmony.apache.org Received: (qmail 93949 invoked by uid 500); 29 Jan 2007 13:26:17 -0000 Mailing-List: contact commits-help@harmony.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@harmony.apache.org Delivered-To: mailing list commits@harmony.apache.org Received: (qmail 93940 invoked by uid 99); 29 Jan 2007 13:26:17 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 29 Jan 2007 05:26:17 -0800 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests= X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO brutus.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 29 Jan 2007 05:26:09 -0800 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 8C0EF7142F4 for ; Mon, 29 Jan 2007 05:25:49 -0800 (PST) Message-ID: <946975.1170077149571.JavaMail.jira@brutus> Date: Mon, 29 Jan 2007 05:25:49 -0800 (PST) From: "Elena Semukhina (JIRA)" To: commits@harmony.apache.org Subject: [jira] Updated: (HARMONY-2982) [drlvm][smoke tests] Smoke test classloader.StressLoader fails intermittently In-Reply-To: <1080705.1168605507559.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/HARMONY-2982?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Elena Semukhina updated HARMONY-2982: ------------------------------------- Attachment: H-2982.patch It seems that java.net.URLClassLoader implementation is not thread safe. It should take care of synchronization on modification of resCache, which is an IdentityHashMap object. The spec of java.util.IdentityHashMap reads: "Note that this implementation is not synchronized. If multiple threads access this map concurrently, and at least one of the threads modifies the map structurally, it must be synchronized externally." The patch provides synchronization on get/put methods. I also added missed synchronization on the HashMap "extentions" field in the addURL(...) method although it seems that both addURL() methods are not used at all. I ran the classloader.StressLoader test iteratively hundreds of times with the patch and didn't see the failures described in the report. > [drlvm][smoke tests] Smoke test classloader.StressLoader fails intermittently > ----------------------------------------------------------------------------- > > Key: HARMONY-2982 > URL: https://issues.apache.org/jira/browse/HARMONY-2982 > Project: Harmony > Issue Type: Bug > Components: DRLVM > Reporter: Elena Semukhina > Attachments: H-2982.patch > > > I observe two sorts of intermittent failures. They occur in JIT mode. I saw them on linux ia32 build: > 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.