RVM

DaCapo eclipse fails with Apache Harmony class library

Details

  • Type: Bug Bug
  • Status: Closed Closed
  • Priority: Major Major
  • Resolution: Fixed
  • Affects Version/s: None
  • Fix Version/s: 3.0.1
  • Labels:
    None
  • Environment:
    Jikes RVM r14855 Harmony r681495 prototype configuration SuSE Linux 10.3 x86-64
  • Number of attachments :
    1

Description

Without changing the heap DaCapo eclipse fails with the Harmony class libraries:

GCWarning: Live ratio greater than 1: 2.15
java.lang.reflect.InvocationTargetException
java.lang.reflect.InvocationTargetException
at .<invisible method>(Unknown Source)
at java.lang.Throwable.fillInStackTrace(Throwable.java:131)
at java.lang.Throwable.<init>(Throwable.java:77)
at java.lang.Throwable.<init>(Throwable.java:99)
at java.lang.Exception.<init>(Exception.java:61)
at java.lang.reflect.InvocationTargetException.<init>(InvocationTargetException.java:49)
at java.lang.reflect.VMCommonLibrarySupport.construct(VMCommonLibrarySupport.java:437)
at java.lang.reflect.Constructor.newInstance(Constructor.java:275)
at dacapo.TestHarness.runBenchmark(TestHarness.java:263)
at dacapo.TestHarness.main(TestHarness.java:235)
at Harness.main(Harness.java:5)
Caused by: java.lang.OutOfMemoryError
at .<invisible method>(Unknown Source)
at org.jikesrvm.scheduler.greenthreads.GreenThread.morph(GreenThread.java:478)
at org.jikesrvm.scheduler.greenthreads.GreenThread.yield(GreenThread.java:399)
at org.jikesrvm.scheduler.greenthreads.GreenScheduler.yieldInternal(GreenScheduler.java:637)
at org.jikesrvm.scheduler.Scheduler.yield(Scheduler.java:280)
at org.jikesrvm.mm.mminterface.Handshake.requestAndAwaitCompletion(Handshake.java:72)
at org.jikesrvm.mm.mminterface.CollectorThread.collect(CollectorThread.java:272)
at org.jikesrvm.mm.mmtk.Collection.triggerCollectionStatic(Collection.java:127)
at org.jikesrvm.mm.mmtk.Collection.triggerCollection(Collection.java:79)
at org.mmtk.plan.Plan.poll(Plan.java:917)
at org.mmtk.policy.Space.acquire(Space.java:397)
at org.mmtk.utility.alloc.LargeObjectAllocator.allocSlowOnce(LargeObjectAllocator.java:99)
at org.mmtk.utility.alloc.Allocator.allocSlowInline(Allocator.java:229)
at org.mmtk.utility.alloc.Allocator.allocSlow(Allocator.java:209)
at org.mmtk.utility.alloc.LargeObjectAllocator.alloc(LargeObjectAllocator.java:77)
at org.mmtk.plan.MutatorContext.alloc(MutatorContext.java:188)
at org.mmtk.plan.generational.GenMutator.alloc(GenMutator.java:90)
at org.mmtk.plan.generational.marksweep.GenMSMutator.alloc(GenMSMutator.java:90)
at org.jikesrvm.mm.mminterface.MemoryManager.allocateSpace(MemoryManager.java:743)
at org.jikesrvm.mm.mminterface.MemoryManager.allocateArrayInternal(MemoryManager.java:718)
at org.jikesrvm.mm.mminterface.MemoryManager.allocateArray(MemoryManager.java:684)
at org.jikesrvm.runtime.RuntimeEntrypoints.resolvedNewArray(RuntimeEntrypoints.java:378)
at org.jikesrvm.jni.JNIFunctions.NewByteArray(JNIFunctions.java:4180)
at java.util.zip.ZipFile.inflateEntryImpl2(ZipFile.java:0)
at java.util.zip.ZipFile.getInputStream(ZipFile.java:203)
at java.util.jar.JarFile.getInputStream(JarFile.java:351)
at org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:230)
at java.net.URL.openStream(URL.java:671)
at dacapo.Benchmark.unpackZipFileResource(Benchmark.java:469)
at dacapo.Benchmark.prepare(Benchmark.java:159)
at dacapo.Benchmark.<init>(Benchmark.java:151)
at dacapo.eclipse.EclipseHarness.<init>(EclipseHarness.java:17)
at .<invisible method>(Unknown Source)
at org.jikesrvm.runtime.Reflection.invoke(Reflection.java:132)
at org.jikesrvm.runtime.Reflection.invoke(Reflection.java:45)
at java.lang.reflect.VMCommonLibrarySupport.construct(VMCommonLibrarySupport.java:435)
... 4 more

Running with -Xms54M fixes the problem.

Issue Links

Activity

Hide
Ian Rogers added a comment -

This appears to be a glitch with GenMS other collectors succeed, could an MMTk person have a look.

Show
Ian Rogers added a comment - This appears to be a glitch with GenMS other collectors succeed, could an MMTk person have a look.
Hide
Steve Blackburn added a comment -

OK. The problem is with the PLOS, which is not discontiguous (I'd forgotten this...). The problem appears to be easy enough to reproduce with a benchmark that generates a lot of PLOS data (ie lots of large non-reference arrays).

For those who want a quick and dirty fix, you can simply change the amount of virtual memory dedicated to the PLOS. See the patch below. I'll try to get a proper fix in the head ASAP.

Show
Steve Blackburn added a comment - OK. The problem is with the PLOS, which is not discontiguous (I'd forgotten this...). The problem appears to be easy enough to reproduce with a benchmark that generates a lot of PLOS data (ie lots of large non-reference arrays). For those who want a quick and dirty fix, you can simply change the amount of virtual memory dedicated to the PLOS. See the patch below. I'll try to get a proper fix in the head ASAP.
Hide
Steve Blackburn added a comment -

This problem should have been fixed by r14970.

Ian can you please confirm? If so, we can close this issue.

Show
Steve Blackburn added a comment - This problem should have been fixed by r14970. Ian can you please confirm? If so, we can close this issue.
Hide
Ian Rogers added a comment -

Just trying a prototype build and I still see this warning right at the beginning:

GCWarning: Live ratio greater than 1: 2.16

The run completes though and hopefully we should start to notice this in the Harmony regression test runs. I'll close when we see the sanity tests are passing. Thanks Steve!

Show
Ian Rogers added a comment - Just trying a prototype build and I still see this warning right at the beginning: GCWarning: Live ratio greater than 1: 2.16 The run completes though and hopefully we should start to notice this in the Harmony regression test runs. I'll close when we see the sanity tests are passing. Thanks Steve!
Hide
Ian Rogers added a comment -

We're now passing regression tests, see:
http://jikesrvm.anu.edu.au/cattrack/results/cayenne.anu.edu.au/sanity-harmony/5250/regression_report
we should worry about the GC warning but this seems small with current changes going on.

Show
Ian Rogers added a comment - We're now passing regression tests, see: http://jikesrvm.anu.edu.au/cattrack/results/cayenne.anu.edu.au/sanity-harmony/5250/regression_report we should worry about the GC warning but this seems small with current changes going on.

People

Vote (0)
Watch (1)

Dates

  • Created:
    Updated:
    Resolved: