Community
Participate
Working Groups
20030813 Save the following code: -> ArrayIndexOutOfBoundsException thrown --- package p1; public class Foo { private String g() { final synchronized int i[]; for (i= null; i != null; ) { } return toString(); } } java.lang.ArrayIndexOutOfBoundsException at java.lang.Throwable.<init>(Throwable.java) at java.lang.Throwable.<init>(Throwable.java:68) at java.lang.ArrayIndexOutOfBoundsException.<init>(ArrayIndexOutOfBoundsException.java:63) at org.eclipse.jdt.internal.compiler.parser.Parser.pushOnIntStack(Parser.java) at org.eclipse.jdt.internal.compiler.parser.Parser.consumeToken(Parser.java) at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java) at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java) at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.parseStatements(MethodDeclaration.java:95) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.parseMethod(TypeDeclaration.java:719) at org.eclipse.jdt.internal.compiler.Compiler.getMethodBodies(Compiler.java:381) at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:582) at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:172) at org.eclipse.jdt.internal.core.CompilationUnit.buildStructure(CompilationUnit.java:139) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:198) at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:448) at org.eclipse.jdt.internal.core.CompilationUnit.makeConsistent(CompilationUnit.java:881) at org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation(ReconcileWorkingCopyOperation.java:48) at org.eclipse.jdt.internal.core.JavaModelOperation.execute(JavaModelOperation.java:365) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java) at org.eclipse.jdt.internal.core.JavaElement.runOperation(JavaElement.java:484) at org.eclipse.jdt.internal.core.CompilationUnit.reconcile(CompilationUnit.java:994) at org.eclipse.jdt.internal.core.CompilationUnit.reconcile(CompilationUnit.java:970) at org.eclipse.jdt.internal.core.CompilationUnit.reconcile(CompilationUnit.java:963) at org.eclipse.jdt.internal.ui.javaeditor.filebuffers.CompilationUnitDocumentProvider2.saveDocument(CompilationUnitDocumentProvider2.java:800) at org.eclipse.ui.texteditor.AbstractTextEditor$17.execute(AbstractTextEditor.java:3153) at org.eclipse.ui.actions.WorkspaceModifyOperation$1.run(WorkspaceModifyOperation.java:71) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1595) at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:85) at org.eclipse.ui.texteditor.AbstractTextEditor.performSaveOperation(AbstractTextEditor.java:3173) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.performSaveOperation(CompilationUnitEditor.java:785) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.doSave(CompilationUnitEditor.java:849) at org.eclipse.ui.internal.EditorManager$11.run(EditorManager.java:1090) at org.eclipse.ui.internal.EditorManager$8.run(EditorManager.java:960) at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:302) at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:252) at org.eclipse.jface.window.ApplicationWindow$1.run(ApplicationWindow.java:444) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:84) at org.eclipse.jface.window.ApplicationWindow.run(ApplicationWindow.java:441) at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:1636) at org.eclipse.ui.internal.EditorManager.runProgressMonitorOperation(EditorManager.java:966) at org.eclipse.ui.internal.EditorManager.savePart(EditorManager.java:1095) at org.eclipse.ui.internal.WorkbenchPage.savePart(WorkbenchPage.java:2371) at org.eclipse.ui.internal.WorkbenchPage.saveEditor(WorkbenchPage.java:2383) at org.eclipse.ui.internal.SaveAction.run(SaveAction.java:57) at org.eclipse.jface.action.Action.runWithEvent(Action.java:842) at org.eclipse.ui.internal.commands.old.ActionHandler.execute(ActionHandler.java:37) at org.eclipse.ui.internal.commands.old.ContextAndHandlerManager.pressed(ContextAndHandlerManager.java:171) at org.eclipse.ui.internal.commands.old.ContextAndHandlerManager.access$1(ContextAndHandlerManager.java:156) at org.eclipse.ui.internal.commands.old.ContextAndHandlerManager$7.widgetSelected(ContextAndHandlerManager.java:265) at org.eclipse.ui.internal.AcceleratorMenu$2.handleEvent(AcceleratorMenu.java:68) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1680) at org.eclipse.ui.internal.Workbench.run(Workbench.java:1663) at org.eclipse.core.internal.boot.InternalBootLoader.run(InternalBootLoader.java:858) at org.eclipse.core.boot.BootLoader.run(BootLoader.java:461) at java.lang.reflect.AccessibleObject.invokeImpl(Native Method) at java.lang.reflect.AccessibleObject.invokeL(AccessibleObject.java:207) at java.lang.reflect.Method.invoke(Method.java:271) at org.eclipse.core.launcher.Main.basicRun(Main.java:291) at org.eclipse.core.launcher.Main.run(Main.java:747) at org.eclipse.core.launcher.Main.main(Main.java:583)
I will investigate.
The problem is coming from the synchronized modifier. I am investigating a fix.
Fixed and released in HEAD. Regression test added.
Verified.