Call to Ruby class implementing a Java interface fails with
IllegalMonitorStateException
----------------------------------------------------------------------------------------
Key: JRUBY-3100
URL: http://jira.codehaus.org/browse/JRUBY-3100
Project: JRuby
Issue Type: Bug
Components: Core Classes/Modules
Affects Versions: JRuby 1.1.4
Environment: Fedora Linux 9, Sun Java 1.6.0_10, JRuby 1.1.4 or JRuby
trunk, Eclipse RCP 3.4 or 3.4.1
Reporter: Uwe Kubosch
Priority: Critical
I have a ruby class (FlightsEditorContentProvider) implementing a Java
interface (IStructuredContentProvider), and an interface method (inputChanged)
on the Ruby class is called from a Java class (ContentViewer).
ON JRuby 1.1.3 it works fine, but on JRuby 1.1.4 and trunk (2008-10-30) it
fails with the following stack trace. Using the Eclipse debugger and stepping
INTO the call to inputChanged() skips a stack frame in the generated
InterfaceImplXXX object, and shows a call to
JRubyClassLoader(ClassLoader).loadClassInternal(String) line: 320
with the argument "org.jruby.java.MiniJava"
This has stopped our project in its tracks, so I hope you can look at it
quickly. I'll get right onto trying to make a minimal example, but since the
code is run inside the Eclipse RCP framework, "minimal" may still be large.
Maybe you can look at it in the meantime?
InterfaceImpl537587238:-1:in `inputChanged':
java.lang.IllegalMonitorStateException: null (NativeException)
from org/eclipse/jface/viewers/ContentViewer.java:247:in `setInput'
from org/eclipse/jface/viewers/StructuredViewer.java:1603:in `setInput'
from sun/reflect/NativeMethodAccessorImpl.java:-2:in `invoke0'
from sun/reflect/NativeMethodAccessorImpl.java:39:in `invoke'
from sun/reflect/DelegatingMethodAccessorImpl.java:25:in `invoke'
from java/lang/reflect/Method.java:597:in `invoke'
from org/jruby/javasupport/JavaMethod.java:298:in
`invokeWithExceptionHandling'
from org/jruby/javasupport/JavaMethod.java:259:in `invoke'
... 86 levels...
from org/eclipse/equinox/launcher/Main.java:1236:in `run'
from org/eclipse/equinox/launcher/Main.java:1212:in `main'
from <script>:1
Complete Java stackTrace
java.lang.IllegalMonitorStateException
at InterfaceImpl537587238.inputChanged(Unknown Source)
at
org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:247)
at
org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1603)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.jruby.javasupport.JavaMethod.invokeWithExceptionHandling(JavaMethod.java:298)
at org.jruby.javasupport.JavaMethod.invoke(JavaMethod.java:259)
at
org.jruby.java.invokers.InstanceMethodInvoker.call(InstanceMethodInvoker.java:44)
at
org.jruby.internal.runtime.methods.AliasMethod.call(AliasMethod.java:64)
at
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:280)
at
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:116)
at
org.jruby.ast.AttrAssignOneArgNode.interpret(AttrAssignOneArgNode.java:39)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:101)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:68)
at
org.jruby.internal.runtime.methods.DefaultMethod.interpretedCall(DefaultMethod.java:165)
at
org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:142)
at
org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:318)
at
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:310)
at
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:167)
at org.jruby.RubyClass$SpecificArityNew.call(RubyClass.java:561)
at
org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:169)
at
org.jruby.java.proxies.ConcreteJavaProxy$ConcreteNewMethod.call(ConcreteJavaProxy.java:181)
at
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:300)
at
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:157)
at org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:101)
at org.jruby.ast.RootNode.interpret(RootNode.java:126)
at org.jruby.Ruby.evalScriptlet(Ruby.java:234)
at no.datek.jruby.JRubyHelper.newRubyObject(JRubyHelper.java:70)
at
no.datek.aifudis.dispatcher.editors.FlightsEditor.createPartControl(FlightsEditor.java:34)
at
org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:661)
at
org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:428)
at
org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:594)
at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:306)
at
org.eclipse.ui.internal.presentations.PresentablePart.setVisible(PresentablePart.java:180)
at
org.eclipse.ui.internal.presentations.util.PresentablePartFolder.select(PresentablePartFolder.java:270)
at
org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select(LeftToRightTabOrder.java:65)
at
org.eclipse.ui.internal.presentations.util.TabbedStackPresentation.selectPart(TabbedStackPresentation.java:473)
at
org.eclipse.ui.internal.PartStack.refreshPresentationSelection(PartStack.java:1256)
at org.eclipse.ui.internal.PartStack.setSelection(PartStack.java:1209)
at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:1608)
at org.eclipse.ui.internal.PartStack.add(PartStack.java:499)
at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:103)
at org.eclipse.ui.internal.PartStack.add(PartStack.java:485)
at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:112)
at
org.eclipse.ui.internal.EditorSashContainer.addEditor(EditorSashContainer.java:63)
at
org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorAreaHelper.java:217)
at
org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAreaHelper.java:207)
at
org.eclipse.ui.internal.EditorManager.createEditorTab(EditorManager.java:779)
at
org.eclipse.ui.internal.EditorManager.openEditorFromDescriptor(EditorManager.java:678)
at
org.eclipse.ui.internal.EditorManager.openEditor(EditorManager.java:639)
at
org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2817)
at
org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:2729)
at
org.eclipse.ui.internal.WorkbenchPage.access$11(WorkbenchPage.java:2721)
at org.eclipse.ui.internal.WorkbenchPage$10.run(WorkbenchPage.java:2673)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at
org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2668)
at
org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2652)
at
org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2635)
at
no.datek.aifudis.dispatcher.ApplicationWorkbenchWindowAdvisor.postWindowOpen(ApplicationWorkbenchWindowAdvisor.java:39)
at
org.eclipse.ui.internal.WorkbenchWindow.fireWindowOpened(WorkbenchWindow.java:1229)
at
org.eclipse.ui.internal.WorkbenchWindow.open(WorkbenchWindow.java:786)
at
org.eclipse.ui.internal.Workbench$61.runWithException(Workbench.java:3394)
at
org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3378)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3036)
at
org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803)
at
org.eclipse.ui.internal.Workbench$27.runWithException(Workbench.java:1361)
at
org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3378)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3036)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2293)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
at
org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at no.datek.aifudis.dispatcher.Application.start(Application.java:17)
at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:382)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
...internal jruby stack elided...
from
org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:247)
from
org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1603)
from sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
from
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
from
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
from java.lang.reflect.Method.invoke(Method.java:597)
from
org.jruby.javasupport.JavaMethod.invokeWithExceptionHandling(JavaMethod.java:298)
from org.jruby.javasupport.JavaMethod.invoke(JavaMethod.java:259)
from
org.jruby.java.invokers.InstanceMethodInvoker.call(InstanceMethodInvoker.java:44)
from
org.jruby.internal.runtime.methods.AliasMethod.call(AliasMethod.java:64)
from
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:280)
from
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:116)
from
org.jruby.ast.AttrAssignOneArgNode.interpret(AttrAssignOneArgNode.java:39)
from org.jruby.ast.NewlineNode.interpret(NewlineNode.java:101)
from org.jruby.ast.BlockNode.interpret(BlockNode.java:68)
from
org.jruby.internal.runtime.methods.DefaultMethod.interpretedCall(DefaultMethod.java:165)
from
org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:142)
from
org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:318)
from
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:310)
from
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:167)
from org.jruby.RubyClass$SpecificArityNew.call(RubyClass.java:561)
from
org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:169)
from
org.jruby.java.proxies.ConcreteJavaProxy$ConcreteNewMethod.call(ConcreteJavaProxy.java:181)
from
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:300)
from
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:157)
from org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)
from org.jruby.ast.NewlineNode.interpret(NewlineNode.java:101)
from org.jruby.ast.RootNode.interpret(RootNode.java:126)
from org.jruby.Ruby.evalScriptlet(Ruby.java:234)
from no.datek.jruby.JRubyHelper.newRubyObject(JRubyHelper.java:70)
from
no.datek.aifudis.dispatcher.editors.FlightsEditor.createPartControl(FlightsEditor.java:34)
from
org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:661)
from
org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:428)
from
org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:594)
from org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:306)
from
org.eclipse.ui.internal.presentations.PresentablePart.setVisible(PresentablePart.java:180)
from
org.eclipse.ui.internal.presentations.util.PresentablePartFolder.select(PresentablePartFolder.java:270)
from
org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select(LeftToRightTabOrder.java:65)
from
org.eclipse.ui.internal.presentations.util.TabbedStackPresentation.selectPart(TabbedStackPresentation.java:473)
from
org.eclipse.ui.internal.PartStack.refreshPresentationSelection(PartStack.java:1256)
from org.eclipse.ui.internal.PartStack.setSelection(PartStack.java:1209)
from org.eclipse.ui.internal.PartStack.showPart(PartStack.java:1608)
from org.eclipse.ui.internal.PartStack.add(PartStack.java:499)
from org.eclipse.ui.internal.EditorStack.add(EditorStack.java:103)
from org.eclipse.ui.internal.PartStack.add(PartStack.java:485)
from org.eclipse.ui.internal.EditorStack.add(EditorStack.java:112)
from
org.eclipse.ui.internal.EditorSashContainer.addEditor(EditorSashContainer.java:63)
from
org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorAreaHelper.java:217)
from
org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAreaHelper.java:207)
from
org.eclipse.ui.internal.EditorManager.createEditorTab(EditorManager.java:779)
from
org.eclipse.ui.internal.EditorManager.openEditorFromDescriptor(EditorManager.java:678)
from
org.eclipse.ui.internal.EditorManager.openEditor(EditorManager.java:639)
from
org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2817)
from
org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:2729)
from
org.eclipse.ui.internal.WorkbenchPage.access$11(WorkbenchPage.java:2721)
from
org.eclipse.ui.internal.WorkbenchPage$10.run(WorkbenchPage.java:2673)
from
org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
from
org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2668)
from
org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2652)
from
org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2635)
from
no.datek.aifudis.dispatcher.ApplicationWorkbenchWindowAdvisor.postWindowOpen(ApplicationWorkbenchWindowAdvisor.java:39)
from
org.eclipse.ui.internal.WorkbenchWindow.fireWindowOpened(WorkbenchWindow.java:1229)
from
org.eclipse.ui.internal.WorkbenchWindow.open(WorkbenchWindow.java:786)
from
org.eclipse.ui.internal.Workbench$61.runWithException(Workbench.java:3394)
from
org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
from org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
from
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)
from org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3378)
from org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3036)
from
org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803)
from
org.eclipse.ui.internal.Workbench$27.runWithException(Workbench.java:1361)
from
org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
from org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
from
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)
from org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3378)
from org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3036)
from org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2293)
from org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198)
from org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
from
org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
from
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)
from
org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
from no.datek.aifudis.dispatcher.Application.start(Application.java:17)
from
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
from
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
from
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
from
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:382)
from
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
from sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
from
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
from
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
from java.lang.reflect.Method.invoke(Method.java:597)
from org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
from org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
from org.eclipse.equinox.launcher.Main.run(Main.java:1236)
from org.eclipse.equinox.launcher.Main.main(Main.java:1212)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email