Return-Path: Delivered-To: apmail-harmony-commits-archive@www.apache.org Received: (qmail 92147 invoked from network); 26 Feb 2007 20:06:50 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 26 Feb 2007 20:06:50 -0000 Received: (qmail 38453 invoked by uid 500); 26 Feb 2007 20:06:37 -0000 Delivered-To: apmail-harmony-commits-archive@harmony.apache.org Received: (qmail 38376 invoked by uid 500); 26 Feb 2007 20:06:37 -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 38355 invoked by uid 99); 26 Feb 2007 20:06:37 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 26 Feb 2007 12:06:37 -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, 26 Feb 2007 12:06:27 -0800 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 63BCA714047 for ; Mon, 26 Feb 2007 12:06:07 -0800 (PST) Message-ID: <25074699.1172520367406.JavaMail.jira@brutus> Date: Mon, 26 Feb 2007 12:06:07 -0800 (PST) From: "Naveen Neelakantam (JIRA)" To: commits@harmony.apache.org Subject: [jira] Created: (HARMONY-3242) [drlvm][jit] interface devirtualization bug MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org [drlvm][jit] interface devirtualization bug ------------------------------------------- Key: HARMONY-3242 URL: https://issues.apache.org/jira/browse/HARMONY-3242 Project: Harmony Issue Type: Bug Components: DRLVM Environment: RHEL4, gcc 4.1.0, core2 Reporter: Naveen Neelakantam Attachments: devirt_bug.emconf, devirt_intf_bug.patch When devirtualizing an interface call, the devirtualizer incorrectly moves the ldInterfaceVTable instruction to immediately before function pointer calculation for each guarded virtual call. This is problematic because a single ldInterfaceVTable instruction may be a producer for several function pointer calculations. Moving the ldInterfaceVTable instruction can therefore prevent it from dominating its consumers. This bug will not manifest itself in most situations because global code motion (gcm) is typically run after interface devirtualization. Global code motion will move the ldInterfaceVTable back into a basic block that dominates all of its consumers. So, to observe the bug a new .emconf is needed, one that does not run gcm. I've attached devirt_bug.emconf which is a copy of server.emconf but with gcm removed. I've also attached a patch which fixes the issue (devirt_intf_bug.patch). Instead of moving the ldInterfaceVTable instruction, the patch places a duplicate before each guarded function pointer calculation. Demonstration of bug using devirt_bug.emconf and the DaCapo chart benchmark: >java -showversion -Xem:./devirt_bug.emconf -jar dacapo-2006-10-MR2.jar chart Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software Foundation or its licensors, as applicable. java version "1.5.0" pre-alpha : not complete or compatible svn = r511936, (Feb 26 2007), Linux/ia32/gcc 4.1.0, release build http://incubator.apache.org/harmony ===== DaCapo chart starting ===== Done plotting: ./scratch/javac-tgt-ptr-prf-time.pdf Done plotting: ./scratch/javac-src-ptr-prf-time.pdf SIGSEGV in VM code. Stack trace: Done plotting: ./scratch/javac-dst-ptr-prf-time.pdf Done plotting: ./scratch/javac-tgt-mut-prf-time.pdf Done plotting: ./scratch/javac-src-mut-prf-time.pdf 1: ?? (:-1) read() failed during execution of addr2line 2: ?? (??:-1) read() failed during execution of addr2line 3: ?? (??:-1) read() failed during execution of addr2line 4: ?? (??:-1) read() failed during execution of addr2line 5: ?? (??:-1) read() failed during execution of addr2line 6: ?? (??:-1) read() failed during execution of addr2line 7: ?? (??:-1) read() failed during execution of addr2line 8: ?? (??:-1) read() failed during execution of addr2line 9: ?? (??:-1) read() failed during execution of addr2line 10: ?? (??:-1) read() failed during execution of addr2line 11: ?? (??:-1) read() failed during execution of addr2line 12: ?? (??:-1) read() failed during execution of addr2line 13: ?? (??:-1) read() failed during execution of addr2line 14: ?? (??:-1) read() failed during execution of addr2line 15: ?? (??:-1) read() failed during execution of addr2line 16: ?? (??:-1) read() failed during execution of addr2line 17: ?? (??:-1) read() failed during execution of addr2line 18: ?? (??:-1) read() failed during execution of addr2line 19: ?? (??:-1) read() failed during execution of addr2line 20: ?? (??:-1) read() failed during execution of addr2line 21: ?? (??:-1) read() failed during execution of addr2line 22: ?? (??:-1) read() failed during execution of addr2line 23: ?? (??:-1) 24: IP is 0xA50AADC3 25: java/lang/EMThreadSupport.run()V (EMThreadSupport.java:68) 26: java/lang/EMThreadSupport$1.run()V (EMThreadSupport.java:44) 27: java/lang/Thread.run()V (Thread.java:-1) 28: java/lang/Thread.runImpl()V (Thread.java:-1) read() failed during execution of addr2line 29: ?? (??:-1) read() failed during execution of addr2line 30: ?? (??:-1) read() failed during execution of addr2line 31: ?? (??:-1) read() failed during execution of addr2line 32: ?? (??:-1) read() failed during execution of addr2line 33: ?? (??:-1) read() failed during execution of addr2line 34: ?? (??:-1) read() failed during execution of addr2line 35: ?? (??:-1) read() failed during execution of addr2line 36: ?? (??:-1) read() failed during execution of addr2line 37: ?? (??:-1) read() failed during execution of addr2line 38: ?? (??:-1) read() failed during execution of addr2line 39: ?? (??:-1) Segmentation fault -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.