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


Reply via email to