slachiewicz / caliper

Automatically exported from code.google.com/p/caliper
Apache License 2.0
0 stars 0 forks source link

Worker exited without producing data, IllegalAccessError when trying to run the worker process manually #275

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
C:\jdk\bin\java -Didea.launcher.port=7532 "-Didea.launcher.bin.path=C:\Program 
Files (x86)\JetBrains\IntelliJ IDEA 12.1.4\bin" -Dfile.encoding=UTF-8 
-classpath 
"C:\jdk\jre\lib\alt-rt.jar;C:\jdk\jre\lib\alt-string.jar;C:\jdk\jre\lib\charsets
.jar;C:\jdk\jre\lib\deploy.jar;C:\jdk\jre\lib\javaws.jar;C:\jdk\jre\lib\jce.jar;
C:\jdk\jre\lib\jsse.jar;C:\jdk\jre\lib\management-agent.jar;C:\jdk\jre\lib\plugi
n.jar;C:\jdk\jre\lib\resources.jar;C:\jdk\jre\lib\rt.jar;C:\jdk\jre\lib\ext\dnsn
s.jar;C:\jdk\jre\lib\ext\localedata.jar;C:\jdk\jre\lib\ext\sunjce_provider.jar;D
:\dev\alm\integers\build\classes\generated;D:\dev\alm\integers\lib\annotations.j
ar;D:\dev\alm\integers\lib\junit.jar;D:\dev\alm\integers\lib\caliper-1.0-beta-SN
APSHOT-all.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA 
12.1.4\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain 
com.google.caliper.runner.CaliperMain com.almworks.integers.DlsBenchmark 
--verbose

Experiment selection:
  Instruments:   [allocation, runtime]
  User parameters:   {addSize=[100, 1000, 10000, 100000, 1000000]}
  Virtual machines:  [default]
  Selection type:    Full cartesian product

This selection yields 20 experiments.
<Output from dry run>
Starting experiment 1 of 20: {instrument=allocation, benchmarkMethod=dlsRemove, 
vm=default, parameters={addSize=100}}à The worker exited without producing 
data. It has likely crashed. Run with --verbose to see output.

I've inserted println statements in the beginning my @BeforeExperiment and 
@Benchmark methods, I marked them here as <Output from dry run>. 

I checked the command line for the child (worker) process and tried to run it 
manually in the command line, then I get this exception:
Exception in thread "main" java.lang.IllegalAccessError: tried to access class 
com.google.inject.multibindings.Multibinder$RealMultibinder from class 
com.google.inject.multibindings.Multibinder$RealMultibinder$$FastClassByGuice$$9
4efefc8
        at com.google.inject.multibindings.Multibinder$RealMultibinder$$FastClassByGuice$$94efefc8.invoke(<generated>)
        at com.google.inject.internal.cglib.reflect.$FastMethod.invoke(FastMethod.java:53)
        at com.google.inject.internal.SingleMethodInjector$1.invoke(SingleMethodInjector.java:56)
        at com.google.inject.internal.SingleMethodInjector.inject(SingleMethodInjector.java:90)
        at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:110)
        at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:75)
        at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:73)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024)
        at com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:73)
        at com.google.inject.internal.Initializer$InjectableReference.get(Initializer.java:147)
        at com.google.inject.internal.Initializer.injectAll(Initializer.java:92)
        at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:173)
        at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:109)
        at com.google.inject.Guice.createInjector(Guice.java:95)
        at com.google.inject.Guice.createInjector(Guice.java:83)
        at com.google.caliper.worker.WorkerMain.main(WorkerMain.java:38)

Full command line for the worker process:

C:\jdk\jre\bin\java 
-javaagent:C:\Users\igor\.IntelliJIdea12\system\groovyHotSwap\gragent.jar 
-Dfile.encoding=UTF-8 -Xmx3g -Xms3g -cp 
"C:\jdk\jre\lib\ext\dnsns.jar;C:\jdk\jre\lib\ext\localedata.jar;C:\jdk\jre\lib\e
xt\sunjce_provider.jar;C:\jdk\jre\lib\alt-rt.jar;C:\jdk\jre\lib\alt-string.jar;C
:\jdk\jre\lib\charsets.jar;C:\jdk\jre\lib\deploy.jar;C:\jdk\jre\lib\javaws.jar;C
:\jdk\jre\lib\jce.jar;C:\jdk\jre
\lib\jsse.jar;C:\jdk\jre\lib\management-agent.jar;C:\jdk\jre\lib\plugin.jar;C:\j
dk\jre\lib\resources.jar;C:\jdk\jre\lib\rt.jar;D:\dev\alm\integers\build\classes
\generated;D:\dev\alm\integers\lib\annotations.jar
;D:\dev\alm\integers\lib\junit.jar;D:\dev\alm\integers\lib\caliper-1.0-beta-SNAP
SHOT-all.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA 
12.1.4\lib\idea_rt.jar;C:\Users\igor\.IntelliJIdea12\system\groovyHotSwap\gragen
t.jar" -Xbatch -XX:CICompilerCount=1 -XX:+UseParallelGC 
-Dsun.reflect.inflationThreshold=0 
-javaagent:D:\dev\alm\integers\lib\caliper-1.0-beta-SNAPSHOT-all.jar 
-Xbootclasspath/a:D:\dev\alm\integers\lib\caliper-1.0-beta-SNAPSHOT-all.jar 
-XX:+PrintFlagsFinal -XX:+PrintCompilation -XX:+PrintGC 
com.google.caliper.worker.WorkerMain 
{"workerClassName":"com.google.caliper.worker.MacrobenchmarkAllocationWorker","w
orkerOptions":{"trackAllocations":"true"},"benchmarkSpec":{"className":"com.almw
orks.integers.DlsBenchmark","methodName":"dlsRemove","parameters":{"addSize":"10
0"}},"methodParameterClassNames":[],"port":57244}

OS: Win 7; JVM: 
java version "1.6.0_34"
Java(TM) SE Runtime Environment (build 1.6.0_34-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.9-b04, mixed mode)

Original issue reported on code.google.com by ios...@gmail.com on 10 Sep 2013 at 9:34

GoogleCodeExporter commented 9 years ago
The IllegalAccessError suggests that you're running in some environment that is 
hostile to the reflection/bytecode manipulation used by Guice.  The Groovy java 
agent is probably the thing that looks most suspicious.  Do you get a similar 
error running caliper without that agent?

Original comment by gak@google.com on 10 Sep 2013 at 6:04