Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 415312 - VerifyError when launching with BETA_JAVA8
Summary: VerifyError when launching with BETA_JAVA8
Status: RESOLVED DUPLICATE of bug 409247
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 4.3   Edit
Hardware: PC Windows 7
: P3 normal (vote)
Target Milestone: BETA J8   Edit
Assignee: Andrew Clement CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-08-19 03:17 EDT by Jay Arthanareeswaran CLA
Modified: 2013-08-20 08:03 EDT (History)
3 users (show)

See Also:


Attachments
Scanner.class (30.97 KB, application/x-zip-compressed)
2013-08-19 06:00 EDT, Jay Arthanareeswaran CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jay Arthanareeswaran CLA 2013-08-19 03:17:40 EDT
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)
Comment 1 Jay Arthanareeswaran CLA 2013-08-19 03:22:31 EDT
If it wasn't clear, this error appears when the target workspace loaded with BETA_JAVA8.
Comment 2 Jay Arthanareeswaran CLA 2013-08-19 04:13:48 EDT
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
Comment 3 Jay Arthanareeswaran CLA 2013-08-19 04:17:53 EDT
Notice the stack 'underflow' - I thought they were not supposed to happen to Java programs?
Comment 4 Srikanth Sankaran CLA 2013-08-19 04:24:59 EDT
(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.
Comment 5 Jay Arthanareeswaran CLA 2013-08-19 04:46:33 EDT
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.
Comment 6 Stephan Herrmann CLA 2013-08-19 05:51:31 EDT
Do you have the Scanner.class that the JVM complained against?
Do you want to attach it here for analysis?
Comment 7 Jay Arthanareeswaran CLA 2013-08-19 06:00:33 EDT
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.
Comment 8 Srikanth Sankaran CLA 2013-08-19 06:02:41 EDT
Since you offered to analyze it, I am assigning this to you, Stephan.
Feel free to bounce it back to back if you wish.
Comment 9 Stephan Herrmann CLA 2013-08-19 06:40:31 EDT
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.
Comment 10 Stephan Herrmann CLA 2013-08-19 06:52:58 EDT
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
Comment 11 Srikanth Sankaran CLA 2013-08-19 07:18:38 EDT
https://bugs.eclipse.org/bugs/show_bug.cgi?id=409247 and friends tinkered with
array allocation code generation. Perhaps something got introduced there.
Comment 12 Srikanth Sankaran CLA 2013-08-19 07:20:26 EDT
(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 ?
Comment 13 Srikanth Sankaran CLA 2013-08-19 10:33:07 EDT
(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 ?
Comment 14 Jay Arthanareeswaran CLA 2013-08-19 10:35:09 EDT
(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.
Comment 15 Srikanth Sankaran CLA 2013-08-20 08:03:25 EDT
Same as bug 409247

*** This bug has been marked as a duplicate of bug 409247 ***