Community
Participate
Working Groups
I get this error when I am trying to launch a target eclipse from my BETA_JAVA8 workspace: !MESSAGE Background Indexer Crash Recovery !STACK 0 java.lang.VerifyError: (class: org/eclipse/jdt/internal/compiler/parser/Scanner, method: <init> signature: (ZZZJJ[[C[[CZ)V) Expecting to find integer on stack at org.eclipse.jdt.internal.core.search.indexing.AddJarFileToIndex.isValidPackageNameForClass(AddJarFileToIndex.java:282) at org.eclipse.jdt.internal.core.search.indexing.AddJarFileToIndex.execute(AddJarFileToIndex.java:230) at org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobManager.java:405) at java.lang.Thread.run(Thread.java:724) Exception in thread "Java indexing" java.lang.VerifyError: (class: org/eclipse/jdt/internal/compiler/parser/Scanner, method: <init> signature: (ZZZJJ[[C[[CZ)V) Expecting to find integer on stack at org.eclipse.jdt.internal.core.search.indexing.AddJarFileToIndex.isValidPackageNameForClass(AddJarFileToIndex.java:282) at org.eclipse.jdt.internal.core.search.indexing.AddJarFileToIndex.execute(AddJarFileToIndex.java:230) at org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobManager.java:405) at java.lang.Thread.run(Thread.java:724)
If it wasn't clear, this error appears when the target workspace loaded with BETA_JAVA8.
And I also get this: !MESSAGE Unhandled event loop exception !STACK 0 java.lang.NoClassDefFoundError: org.eclipse.jdt.core.JavaConventions (initialization failure) at java.lang.J9VMInternals.initialize(J9VMInternals.java:140) at org.eclipse.jdt.internal.core.util.Util.isValidFolderNameForPackage(Util.java:1744) at org.eclipse.jdt.internal.core.PackageFragmentRoot.computeFolderChildren(PackageFragmentRoot.java:240) at org.eclipse.jdt.internal.core.PackageFragmentRoot.computeChildren(PackageFragmentRoot.java:197) at org.eclipse.jdt.internal.core.PackageFragmentRoot.buildStructure(PackageFragmentRoot.java:154) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:258) at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:521) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:258) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:244) at org.eclipse.jdt.internal.core.JavaElement.getChildren(JavaElement.java:199) at org.eclipse.jdt.ui.StandardJavaElementContentProvider.getPackageFragmentRootContent(StandardJavaElementContentProvider.java:264) at org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider.getPackageFragmentRootContent(PackageExplorerContentProvider.java:231) at org.eclipse.jdt.ui.StandardJavaElementContentProvider.getChildren(StandardJavaElementContentProvider.java:186) at org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider.getChildren(PackageExplorerContentProvider.java:307) at org.eclipse.jface.viewers.AbstractTreeViewer.getRawChildren(AbstractTreeViewer.java:1374) at org.eclipse.jface.viewers.TreeViewer.getRawChildren(TreeViewer.java:391) at org.eclipse.jdt.internal.ui.viewsupport.ProblemTreeViewer.hasFilteredChildren(ProblemTreeViewer.java:265) at org.eclipse.jdt.internal.ui.viewsupport.ProblemTreeViewer.isExpandable(ProblemTreeViewer.java:254) at org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(AbstractTreeViewer.java:2176) at org.eclipse.jface.viewers.AbstractTreeViewer.updatePlus(AbstractTreeViewer.java:2858) at org.eclipse.jface.viewers.TreeViewer.updatePlus(TreeViewer.java:852) at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:849) at org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:823) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:797) at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:644) at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:768) at org.eclipse.jface.viewers.AbstractTreeViewer.handleTreeExpand(AbstractTreeViewer.java:1500) at org.eclipse.jface.viewers.TreeViewer.handleTreeExpand(TreeViewer.java:952) at org.eclipse.jface.viewers.AbstractTreeViewer$4.treeExpanded(AbstractTreeViewer.java:1511) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:132) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1081) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066) at org.eclipse.swt.widgets.Tree.wmNotifyChild(Tree.java:7612) at org.eclipse.swt.widgets.Control.wmNotify(Control.java:5617) at org.eclipse.swt.widgets.Composite.wmNotify(Composite.java:1935) at org.eclipse.swt.widgets.Control.WM_NOTIFY(Control.java:5169) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4667) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4977) at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:2443) at org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:1534) at org.eclipse.swt.widgets.Tree.WM_LBUTTONDOWN(Tree.java:6482) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4647) at org.eclipse.swt.widgets.Tree.windowProc(Tree.java:6005) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4977) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2549) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1113) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:997) at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:138) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:610) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:567) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) 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:354) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) at java.lang.reflect.Method.invoke(Method.java:611) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591) at org.eclipse.equinox.launcher.Main.run(Main.java:1450) at org.eclipse.equinox.launcher.Main.main(Main.java:1426) Caused by: java.lang.VerifyError: JVMVRFY036 stack underflow; class=org/eclipse/jdt/internal/compiler/parser/Scanner, method=<init>(ZZZJJ[[C[[CZ)V, pc=148 at java.lang.J9VMInternals.verifyImpl(Native Method) at java.lang.J9VMInternals.verify(J9VMInternals.java:72) at java.lang.J9VMInternals.initialize(J9VMInternals.java:134) at org.eclipse.jdt.core.JavaConventions.<clinit>(JavaConventions.java:42) at java.lang.J9VMInternals.initializeImpl(Native Method) at java.lang.J9VMInternals.initialize(J9VMInternals.java:200) at org.eclipse.jdt.internal.core.util.Util.isValidFolderNameForPackage(Util.java:1744) at org.eclipse.jdt.internal.core.PackageFragmentRoot.computeFolderChildren(PackageFragmentRoot.java:240) at org.eclipse.jdt.internal.core.PackageFragmentRoot.computeChildren(PackageFragmentRoot.java:197) at org.eclipse.jdt.internal.core.PackageFragmentRoot.buildStructure(PackageFragmentRoot.java:154) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:258) at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:521) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:258) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:244) at org.eclipse.jdt.internal.core.PackageFragmentRoot.getKind(PackageFragmentRoot.java:481) at org.eclipse.jdt.internal.core.PackageFragmentRoot.getSourceAttachmentPath(PackageFragmentRoot.java:595) at org.eclipse.jdt.internal.ui.viewsupport.JavaElementImageProvider.getBaseImageDescriptor(JavaElementImageProvider.java:245) at org.eclipse.jdt.internal.ui.viewsupport.JavaElementImageProvider.getJavaImageDescriptor(JavaElementImageProvider.java:166) at org.eclipse.jdt.internal.ui.viewsupport.JavaElementImageProvider.computeDescriptor(JavaElementImageProvider.java:120) at org.eclipse.jdt.internal.ui.viewsupport.JavaElementImageProvider.getImageLabel(JavaElementImageProvider.java:101) at org.eclipse.jdt.internal.ui.viewsupport.JavaUILabelProvider.getImage(JavaUILabelProvider.java:144) at org.eclipse.jdt.internal.ui.packageview.PackageExplorerLabelProvider.getImage(PackageExplorerLabelProvider.java:140) at org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.getImage(DelegatingStyledCellLabelProvider.java:184) at org.eclipse.jface.viewers.DecoratingStyledCellLabelProvider.getImage(DecoratingStyledCellLabelProvider.java:167) at org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.update(DelegatingStyledCellLabelProvider.java:118) at org.eclipse.jface.viewers.DecoratingStyledCellLabelProvider.update(DecoratingStyledCellLabelProvider.java:134) at org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn.java:152) at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:953) at org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeRunnable.run(AbstractTreeViewer.java:113) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49) at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175) at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:1033) at org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run(StructuredViewer.java:485) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49) at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175) at org.eclipse.jface.viewers.StructuredViewer.updateItem(StructuredViewer.java:2167) at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:848) ... 51 more
Notice the stack 'underflow' - I thought they were not supposed to happen to Java programs?
(In reply to comment #3) > Notice the stack 'underflow' - I thought they were not supposed to happen to > Java programs? Basically, we generate bad code - so anything can happen.
This could be related to my eclipse installation. I remember I was playing around to have the J8 version of JDT/UI in my eclipse. With a fresh eclipse installation, things are back to normal. Will take up the experiment later to take it to conclusion.
Do you have the Scanner.class that the JVM complained against? Do you want to attach it here for analysis?
Created attachment 234522 [details] Scanner.class (In reply to comment #6) > Do you have the Scanner.class that the JVM complained against? > Do you want to attach it here for analysis? Here is it.
Since you offered to analyze it, I am assigning this to you, Stephan. Feel free to bounce it back to back if you wish.
Here's a first observation from comparing the broken class file with good version (happened to be from R4_3_maintenance): This source: public /*static*/ final char[][][][] charArray_length = new char[OptimizedLength][TableSize][InternalTableSize][]; Produces these bytes (OK): 137: aload_0 138: bipush 7 140: bipush 30 142: bipush 6 144: multianewarray #320, 3; //class "[[[[C" 148: putfield #321; //Field charArray_length:[[[[C or (broken): 137: aload_0 138: bipush 7 140: bipush 30 142: bipush 6 144: multianewarray #328, 4; //class "[[[[C" 148: putfield #329; //Field charArray_length:[[[[C The relevant difference being: the argument "4" instructs the VM to pop 4 sizes off the stack, but we pushed only 3 sizes. This looks like a realistic cause for a stack underflow.
I can reproduce using just this snippet: public class C { public final char[][][][] charArray_length = new char[6][7][8][]; public static void main(String... args) { System.out.println("OK"); } } Compile with ecj BETA_JAVA8, trying to run (on IcedTea6) yields: Exception in thread "main" java.lang.VerifyError: (class: C, method: <init> signature: ()V) Expecting to find integer on stack Could not find the main class: C. Program will exit. Bytecode shows the same bogus sequence: 4: aload_0 5: bipush 6 7: bipush 7 9: bipush 8 11: multianewarray <[[[[C> 4 (12) 15: putfield C.charArray_length [[[[C (13) "4" should be "3". BTW, I happened to use ecj-J8-20130707.jar
https://bugs.eclipse.org/bugs/show_bug.cgi?id=409247 and friends tinkered with array allocation code generation. Perhaps something got introduced there.
(In reply to comment #11) > https://bugs.eclipse.org/bugs/show_bug.cgi?id=409247 and friends tinkered > with > array allocation code generation. Perhaps something got introduced there. Actually this fix got release on 7th Aug, can you guys try a more recent vintage ?
(In reply to comment #12) > (In reply to comment #11) > > https://bugs.eclipse.org/bugs/show_bug.cgi?id=409247 and friends tinkered > > with > > array allocation code generation. Perhaps something got introduced there. > > Actually this fix got release on 7th Aug, can you guys try a more recent > vintage ? The code snippet Stephan reduced and produced compiles and runs fine against head of BETA_JAVA8 - Any reason to continue to investigate here ?
(In reply to comment #13) > The code snippet Stephan reduced and produced compiles and runs fine against > head of BETA_JAVA8 - > > Any reason to continue to investigate here ? Perhaps, not. It's quite possible that my workspace had some stale stuff when I released fix for bug 409247.
Same as bug 409247 *** This bug has been marked as a duplicate of bug 409247 ***