Yup, it was the new ObjectProxyCache I committed this morning. Fixed in r5371. From my comments:
"Fixed PermGen issue in build caused by daemon "vulture" thread in new ObjectProxyCache. OPC was not being finalized due to this thread (which must have prevented the entire runtime from being finalized, as the OPC instances weren't using a lot of memory themselves). With the build spinning up 189 runtimes, this quickly led to blown PermGen (though not when running test-interpreted). "Will have to find another way to do the OPC vulture thread. It's not essential (I've simply disabled it); put/getOrCreate also expunge dead entries, and the objects/proxies are held by weak/soft references and will be gc'ed anyway, but in some cases an initial flurry of activity will populate the cache, with little or no subsequent 'put' activity that might trigger cleanup. (I observed this today while debugging.) " Now that this is working, I'm encountering other build failures (in addition to the Win/Jar/Dir/File issues I reported yesterday in JRUBY-1785<http://jira.codehaus.org/browse/JRUBY-1785>). These look like they may also be Windows-specific. In run-junit-precompiled, I get this sequence over and over (hard to tell where the top is): [junit] ... 37 more [junit] Error, could not compile; pass - J-Djruby.jit.logging.verbose=true for more details [junit] java.lang.NullPointerException [junit] at org.jruby.Ruby.runScript(Ruby.java:622) [junit] at org.jruby.Ruby.compileAndLoadFile(Ruby.java:1875) [junit] at org.jruby.runtime.load.ExternalScript.load( ExternalScript.java:49) [junit] at org.jruby.runtime.load.LoadService.smartLoad( LoadService.java:326) [junit] at org.jruby.Ruby$1.load(Ruby.java:1257) [junit] at org.jruby.runtime.load.LoadService.smartLoad( LoadService.java:326) [junit] at org.jruby.runtime.load.LoadService.require( LoadService.java:352) [junit] at org.jruby.RubyKernel.require(RubyKernel.java:677) [junit] at org.jruby.RubyKernelInvoker$require_method_1_0.call(Unknown Source) [junit] at org.jruby.runtime.CallSite$InlineCachingCallSite.call( CallSite.java:158) [junit] at org.jruby.runtime.CallSite$ArgumentBoxingCallSite.call( CallSite.java:103) [junit] at ruby.C_3a_.jruby.trunk.test.__file__(test:1) [junit] at ruby.C_3a_.jruby.trunk.test.load(test) [junit] at org.jruby.Ruby.runScript(Ruby.java:622) [junit] at org.jruby.Ruby.runNormally(Ruby.java:542) [junit] at org.jruby.test.TestRubyBase.eval(TestRubyBase.java:69) [junit] at org.jruby.javasupport.test.TestNativeException.testCauseIsProxied (TestNativeExcep tion.java:48) [junit] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [junit] at sun.reflect.NativeMethodAccessorImpl.invoke( NativeMethodAccessorImpl.java:39) [junit] at sun.reflect.DelegatingMethodAccessorImpl.invoke( DelegatingMethodAccessorImpl.java :25) [junit] at java.lang.reflect.Method.invoke(Method.java:597) [junit] at junit.framework.TestCase.runTest(TestCase.java:154) [junit] at junit.framework.TestCase.runBare(TestCase.java:127) [junit] at junit.framework.TestResult$1.protect(TestResult.java:106) [junit] at junit.framework.TestResult.runProtected(TestResult.java :124) [junit] at junit.framework.TestResult.run(TestResult.java:109) [junit] at junit.framework.TestCase.run(TestCase.java:118) [junit] at junit.framework.TestSuite.runTest(TestSuite.java:208) [junit] at junit.framework.TestSuite.run(TestSuite.java:203) [junit] at junit.framework.TestSuite.runTest(TestSuite.java:208) [junit] at junit.framework.TestSuite.run(TestSuite.java:203) [junit] at junit.framework.TestSuite.runTest(TestSuite.java:208) [junit] at junit.framework.TestSuite.run(TestSuite.java:203) [junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run (JUnitTestRunner. java:421) [junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch (JUnitTestRunn er.java:912) [junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main (JUnitTestRunner .java:743) [junit] java.io.IOException: The filename, directory name, or volume label syntax is incorrect [junit] at java.io.WinNTFileSystem.canonicalize0(Native Method) [junit] at java.io.Win32FileSystem.canonicalize(Win32FileSystem.java :396) [junit] at java.io.File.getCanonicalPath(File.java:559) [junit] at org.jruby.util.JRubyFile.getCanonicalPath(JRubyFile.java :81) [junit] at org.jruby.util.JavaNameMangler.mangleFilenameForClasspath (JavaNameMangler.java:20 ) [junit] at org.jruby.util.JavaNameMangler.mangledFilenameForStartupClasspath (JavaNameMangler .java:48) [junit] at org.jruby.Ruby.tryCompile(Ruby.java:558) [junit] at org.jruby.Ruby.compileAndLoadFile(Ruby.java:1870) [junit] at org.jruby.runtime.load.ExternalScript.load( ExternalScript.java:49) [junit] at org.jruby.runtime.load.LoadService.smartLoad( LoadService.java:326) [junit] at org.jruby.Ruby$1.load(Ruby.java:1257) [junit] at org.jruby.runtime.load.LoadService.smartLoad( LoadService.java:326) [junit] at org.jruby.runtime.load.LoadService.require( LoadService.java:352) [junit] at org.jruby.RubyKernel.require(RubyKernel.java:677) [junit] at org.jruby.RubyKernelInvoker$require_method_1_0.call(Unknown Source) [junit] at org.jruby.runtime.CallSite$InlineCachingCallSite.call( CallSite.java:158) [junit] at org.jruby.runtime.CallSite$ArgumentBoxingCallSite.call( CallSite.java:103) [junit] at ruby.C_3a_.jruby.trunk.test.__file__(test:1) [junit] at ruby.C_3a_.jruby.trunk.test.load(test) [junit] at org.jruby.Ruby.runScript(Ruby.java:622) [junit] at org.jruby.Ruby.runNormally(Ruby.java:542) [junit] at org.jruby.test.TestRubyBase.eval(TestRubyBase.java:69) [junit] at org.jruby.test.TestRaiseException.testRubyExceptionTraceIncludesJavas (TestRaiseEx ception.java:82) [junit] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [junit] at sun.reflect.NativeMethodAccessorImpl.invoke( NativeMethodAccessorImpl.java:39) [junit] at sun.reflect.DelegatingMethodAccessorImpl.invoke( DelegatingMethodAccessorImpl.java :25) [junit] at java.lang.reflect.Method.invoke(Method.java:597) [junit] at junit.framework.TestCase.runTest(TestCase.java:154) [junit] at junit.framework.TestCase.runBare(TestCase.java:127) [junit] at junit.framework.TestResult$1.protect(TestResult.java:106) [junit] at junit.framework.TestResult.runProtected(TestResult.java :124) [junit] at junit.framework.TestResult.run(TestResult.java:109) [junit] at junit.framework.TestCase.run(TestCase.java:118) [junit] at junit.framework.TestSuite.runTest(TestSuite.java:208) [junit] at junit.framework.TestSuite.run(TestSuite.java:203) [junit] at junit.framework.TestSuite.runTest(TestSuite.java:208) [junit] at junit.framework.TestSuite.run(TestSuite.java:203) [junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run (JUnitTestRunner. java:421) [junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch (JUnitTestRunn er.java:912) [junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main (JUnitTestRunner .java:743) [junit] could not compile: file:/C:/jruby/trunk/lib/jruby.jar!/builtin/javasupport.rb because of : "java.io.IOException: The filename, directory name, or volume label syntax is incorrect" [junit] java.lang.RuntimeException: java.io.IOException: The filename, directory name, or volume label syntax is incorrect Looks like a Windows issue... -Bill
