harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Naveen Neelakantam <neela...@uiuc.edu>
Subject Fwd: [jira] Created: (HARMONY-3242) [drlvm][jit] interface devirtualization bug
Date Mon, 26 Feb 2007 20:09:38 GMT
FYI, fixed a bug in the devirtualizer.

Naveen


Begin forwarded message:

> From: "Naveen Neelakantam (JIRA)" <jira@apache.org>
> Date: February 26, 2007 2:06:07 PM CST
> To: neelakan@uiuc.edu
> Subject: [jira] Created: (HARMONY-3242) [drlvm][jit] interface  
> devirtualization bug
>
> [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 <native code>
>         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)
> <end of stack trace>
> Segmentation fault
>
>
> -- 
> This message is automatically generated by JIRA.
> -
> You can reply to this email to add a comment to the issue online.
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message