harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Pavel Ozhdikhin" <pavel.ozhdik...@gmail.com>
Subject Re: [jira] Created: (HARMONY-3242) [drlvm][jit] interface devirtualization bug
Date Tue, 27 Feb 2007 10:33:03 GMT
Naveen,

Thanks for catching the issue. I've commented in JIRA.

-Pavel


On 2/27/07, Naveen Neelakantam <neelakan@uiuc.edu> wrote:
>
> 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