dart-lang / sdk

The Dart SDK, including the VM, JS and Wasm compilers, analysis, core libraries, and more.
https://dart.dev
BSD 3-Clause "New" or "Revised" License
10.21k stars 1.57k forks source link

Malformed html file causes string index error. #6651

Closed DartBot closed 9 years ago

DartBot commented 11 years ago

This issue was originally filed by Erik.G...@gmail.com


What steps will reproduce the problem?

  1. Create a new basic web app.
  2. Add the bug.html file under the web directory.
  3. Restart the editor.

What is the expected output? What do you see instead?

Modal dialog:

Multiple problems have occurred

In the details: An error has occurred. See error log for more details. String index out of range: -66

What version of the product are you using? On what operating system? Mac OS X 10.8.2 Dart Editor version 0.2.3_r14669 Dart SDK version 0.2.3.0_r14669

Please provide any additional information below.

The editor can end up in a state where it's unusable (all the views crash) and the information provided isn't useful in determining a root cause. I managed to stumble across a stack trace inside the editor which led me to the issue in an html file. Stack traces and the source file in the error message would have made the process significantly easier or at least a pointer to the current location of the error log with the details.


Attachment: bug.html (169 Bytes)

madsager commented 11 years ago

Added Area-Editor, Triaged labels.

clayberg commented 11 years ago

Please provide any associated stack traces.


Set owner to @keertip. Added this to the M3 milestone. Added NeedsInfo label.

danrubel commented 11 years ago

!SESSION 2012-11-28 08:59:18.818 ----------------------------------------------- eclipse.buildId=unknown java.version=1.6.0_37 java.vendor=Apple Inc. BootLoader constants: OS=macosx, ARCH=x86_64, WS=cocoa, NL=en_US Framework arguments: -keyring /Users/danrubel/.eclipse_keyring -showlocation Command-line arguments: -os macosx -ws cocoa -arch x86_64 -consoleLog -data @­user.home/Library/Application Support/DartEditor -keyring /Users/danrubel/.eclipse_keyring -showlocation

!ENTRY com.google.dart.tools.core 4 0 2012-11-28 09:00:30.405 !MESSAGE String index out of range: -66 !STACK 0 java.lang.StringIndexOutOfBoundsException: String index out of range: -66     at java.lang.String.substring(String.java:1937)     at com.google.dart.tools.core.internal.util.LibraryReferenceFinder.processHTML(LibraryReferenceFinder.java:96)     at com.google.dart.tools.core.internal.util.LibraryReferenceFinder.findInHTML(LibraryReferenceFinder.java:46)     at com.google.dart.tools.core.internal.model.delta.DeltaProcessor.updateHtmlMapping(DeltaProcessor.java:1215)     at com.google.dart.tools.core.internal.model.delta.DeltaProcessor.updateCurrentDelta(DeltaProcessor.java:1120)     at com.google.dart.tools.core.internal.model.delta.DeltaProcessor.traverseDelta(DeltaProcessor.java:991)     at com.google.dart.tools.core.internal.model.delta.DeltaProcessor.traverseDelta(DeltaProcessor.java:1012)     at com.google.dart.tools.core.internal.model.delta.DeltaProcessor.processResourceDelta(DeltaProcessor.java:833)     at com.google.dart.tools.core.internal.model.delta.DeltaProcessor.handleResourceChanged(DeltaProcessor.java:318)     at com.google.dart.tools.core.internal.model.delta.DeltaProcessingState$2.run(DeltaProcessingState.java:259)     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)     at java.util.concurrent.FutureTask.run(FutureTask.java:138)     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)     at java.lang.Thread.run(Thread.java:680)

!ENTRY org.eclipse.ui.workbench 4 0 2012-11-28 09:00:42.322 !MESSAGE String index out of range: -66 !STACK 0 java.lang.StringIndexOutOfBoundsException: String index out of range: -66     at java.lang.String.substring(String.java:1937)     at com.google.dart.tools.core.internal.util.LibraryReferenceFinder.processHTML(LibraryReferenceFinder.java:96)     at com.google.dart.tools.core.internal.util.LibraryReferenceFinder.findInHTML(LibraryReferenceFinder.java:46)     at com.google.dart.tools.core.internal.model.DartProjectImpl$3.visit(DartProjectImpl.java:445)     at org.eclipse.core.internal.resources.Resource$1.visitElement(Resource.java:65)     at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82)     at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86)     at org.eclipse.core.internal.watson.ElementTreeIterator.iterate(ElementTreeIterator.java:127)     at org.eclipse.core.internal.resources.Resource.accept(Resource.java:75)     at com.google.dart.tools.core.internal.model.DartProjectImpl.getHtmlMapping(DartProjectImpl.java:436)     at com.google.dart.tools.core.internal.model.DartLibraryImpl.buildStructure(DartLibraryImpl.java:919)     at com.google.dart.tools.core.internal.model.OpenableElementImpl.generateInfos(OpenableElementImpl.java:480)     at com.google.dart.tools.core.internal.model.DartElementImpl.openWhenClosed(DartElementImpl.java:563)     at com.google.dart.tools.core.internal.model.DartElementImpl.getElementInfo(DartElementImpl.java:331)     at com.google.dart.tools.core.internal.model.DartElementImpl.getElementInfo(DartElementImpl.java:316)     at com.google.dart.tools.core.internal.model.DartElementImpl.getChildren(DartElementImpl.java:267)     at com.google.dart.tools.core.internal.model.DartModelManager.create(DartModelManager.java:441)     at com.google.dart.tools.core.internal.model.DartModelManager.create(DartModelManager.java:520)     at com.google.dart.tools.core.DartCore.create(DartCore.java:337)     at com.google.dart.tools.debug.ui.internal.util.LaunchUtils.getDartLibraries(LaunchUtils.java:227)     at com.google.dart.tools.debug.ui.internal.util.LaunchUtils.isLaunchableWith(LaunchUtils.java:429)     at com.google.dart.tools.debug.ui.internal.dartium.DartiumLaunchShortcut.testSimilar(DartiumLaunchShortcut.java:142)     at com.google.dart.tools.debug.ui.internal.util.AbstractLaunchShortcut.getAssociatedLaunchConfigurations(AbstractLaunchShortcut.java:73)     at com.google.dart.tools.debug.ui.internal.util.LaunchUtils.getExistingLaunchesFor(LaunchUtils.java:267)     at com.google.dart.tools.debug.ui.internal.util.LaunchUtils.getLaunchFor(LaunchUtils.java:317)     at com.google.dart.tools.debug.ui.launch.DartRunAction.selectionChanged(DartRunAction.java:141)     at org.eclipse.ui.internal.AbstractSelectionService.fireSelection(AbstractSelectionService.java:156)     at org.eclipse.ui.internal.AbstractSelectionService.setActivePart(AbstractSelectionService.java:282)     at org.eclipse.ui.internal.WWinPartService.updateActivePart(WWinPartService.java:135)     at org.eclipse.ui.internal.WWinPartService.access$0(WWinPartService.java:125)     at org.eclipse.ui.internal.WWinPartService$WWinListener.partDeactivated(WWinPartService.java:50)     at org.eclipse.ui.internal.PartListenerList2$4.run(PartListenerList2.java:115)     at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)     at org.eclipse.core.runtime.Platform.run(Platform.java:888)     at org.eclipse.ui.internal.PartListenerList2.fireEvent(PartListenerList2.java:55)     at org.eclipse.ui.internal.PartListenerList2.firePartDeactivated(PartListenerList2.java:113)     at org.eclipse.ui.internal.PartService.firePartDeactivated(PartService.java:242)     at org.eclipse.ui.internal.PartService.setActivePart(PartService.java:300)     at org.eclipse.ui.internal.WorkbenchPagePartList.fireActivePartChanged(WorkbenchPagePartList.java:57)     at org.eclipse.ui.internal.PartList.setActivePart(PartList.java:136)     at org.eclipse.ui.internal.WorkbenchPage.setActivePart(WorkbenchPage.java:3636)     at org.eclipse.ui.internal.WorkbenchPage.requestActivation(WorkbenchPage.java:3159)     at org.eclipse.ui.internal.PartPane.requestActivation(PartPane.java:279)     at org.eclipse.ui.internal.PartPane.handleEvent(PartPane.java:237)     at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)     at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4125)     at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1457)     at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1480)     at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1461)     at org.eclipse.swt.widgets.Shell.setActiveControl(Shell.java:1547)     at org.eclipse.swt.widgets.Control.sendFocusEvent(Control.java:3290)     at org.eclipse.swt.widgets.Display.checkFocus(Display.java:646)     at org.eclipse.swt.widgets.Shell.makeFirstResponder(Shell.java:1233)     at org.eclipse.swt.widgets.Display.windowProc(Display.java:5578)     at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)     at org.eclipse.swt.widgets.Widget.callSuper(Widget.java:220)     at org.eclipse.swt.widgets.Widget.windowSendEvent(Widget.java:2092)     at org.eclipse.swt.widgets.Shell.windowSendEvent(Shell.java:2255)     at org.eclipse.swt.widgets.Display.windowProc(Display.java:5532)     at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)     at org.eclipse.swt.widgets.Display.applicationSendEvent(Display.java:4986)     at org.eclipse.swt.widgets.Display.applicationProc(Display.java:5135)     at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native Method)     at org.eclipse.swt.internal.cocoa.NSApplication.sendEvent(NSApplication.java:128)     at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3607)     at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2696)     at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660)     at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494)     at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674)     at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)     at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667)     at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)     at com.google.dart.tools.deploy.DartIDEApplication.start(DartIDEApplication.java:70)     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:344)     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:622)     at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)     at org.eclipse.equinox.launcher.Main.run(Main.java:1410)

!ENTRY org.eclipse.jface 4 2 2012-11-28 09:00:42.329 !MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jface". !STACK 0 java.lang.StringIndexOutOfBoundsException: String index out of range: -66     at java.lang.String.substring(String.java:1937)     at com.google.dart.tools.core.internal.util.LibraryReferenceFinder.processHTML(LibraryReferenceFinder.java:96)     at com.google.dart.tools.core.internal.util.LibraryReferenceFinder.findInHTML(LibraryReferenceFinder.java:46)     at com.google.dart.tools.core.internal.model.DartProjectImpl$3.visit(DartProjectImpl.java:445)     at org.eclipse.core.internal.resources.Resource$1.visitElement(Resource.java:65)     at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82)     at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86)     at org.eclipse.core.internal.watson.ElementTreeIterator.iterate(ElementTreeIterator.java:127)     at org.eclipse.core.internal.resources.Resource.accept(Resource.java:75)     at com.google.dart.tools.core.internal.model.DartProjectImpl.getHtmlMapping(DartProjectImpl.java:436)     at com.google.dart.tools.core.internal.model.DartLibraryImpl.buildStructure(DartLibraryImpl.java:919)     at com.google.dart.tools.core.internal.model.OpenableElementImpl.generateInfos(OpenableElementImpl.java:480)     at com.google.dart.tools.core.internal.model.DartElementImpl.openWhenClosed(DartElementImpl.java:563)     at com.google.dart.tools.core.internal.model.DartElementImpl.getElementInfo(DartElementImpl.java:331)     at com.google.dart.tools.core.internal.model.DartElementImpl.getElementInfo(DartElementImpl.java:316)     at com.google.dart.tools.core.internal.model.DartElementImpl.getChildren(DartElementImpl.java:267)     at com.google.dart.tools.ui.internal.util.DartModelUtil.addAllCus(DartModelUtil.java:970)     at com.google.dart.tools.ui.internal.util.DartModelUtil.addAllCus(DartModelUtil.java:964)     at com.google.dart.tools.ui.internal.util.DartModelUtil.getAllCompilationUnits(DartModelUtil.java:413)     at com.google.dart.tools.ui.internal.actions.CleanUpAction.collectCompilationUnits(CleanUpAction.java:199)     at com.google.dart.tools.ui.internal.actions.CleanUpAction.getCompilationUnits(CleanUpAction.java:79)     at com.google.dart.tools.ui.internal.actions.CleanUpAction.isEnabled(CleanUpAction.java:213)     at com.google.dart.tools.ui.internal.actions.CleanUpAction.selectionChanged(CleanUpAction.java:113)     at com.google.dart.tools.ui.actions.SelectionDispatchAction.dispatchSelectionChanged(SelectionDispatchAction.java:254)     at com.google.dart.tools.ui.actions.SelectionDispatchAction.selectionChanged(SelectionDispatchAction.java:210)     at org.eclipse.jface.viewers.Viewer$2.run(Viewer.java:164)     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.Viewer.fireSelectionChanged(Viewer.java:162)     at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2188)     at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1211)     at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1241)     at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:239)     at org.eclipse.jface.util.OpenStrategy.access$4(OpenStrategy.java:233)     at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:403)     at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)     at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4125)     at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1457)     at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1480)     at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1465)     at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1270)     at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3971)     at org.eclipse.swt.widgets.Display.applicationNextEventMatchingMask(Display.java:4872)     at org.eclipse.swt.widgets.Display.applicationProc(Display.java:5223)     at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)     at org.eclipse.swt.widgets.Widget.callSuper(Widget.java:220)     at org.eclipse.swt.widgets.Widget.mouseDownSuper(Widget.java:1092)     at org.eclipse.swt.widgets.Tree.mouseDownSuper(Tree.java:2047)     at org.eclipse.swt.widgets.Widget.mouseDown(Widget.java:1084)     at org.eclipse.swt.widgets.Control.mouseDown(Control.java:2519)     at org.eclipse.swt.widgets.Tree.mouseDown(Tree.java:2004)     at org.eclipse.swt.widgets.Display.windowProc(Display.java:5468)     at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)     at org.eclipse.swt.widgets.Widget.callSuper(Widget.java:220)     at org.eclipse.swt.widgets.Widget.windowSendEvent(Widget.java:2092)     at org.eclipse.swt.widgets.Shell.windowSendEvent(Shell.java:2255)     at org.eclipse.swt.widgets.Display.windowProc(Display.java:5532)     at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)     at org.eclipse.swt.widgets.Display.applicationSendEvent(Display.java:4986)     at org.eclipse.swt.widgets.Display.applicationProc(Display.java:5135)     at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native Method)     at org.eclipse.swt.internal.cocoa.NSApplication.sendEvent(NSApplication.java:128)     at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3607)     at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2696)     at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660)     at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494)     at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674)     at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)     at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667)     at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)     at com.google.dart.tools.deploy.DartIDEApplication.start(DartIDEApplication.java:70)     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:344)     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:622)     at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)     at org.eclipse.equinox.launcher.Main.run(Main.java:1410)


Added Triaged label.

danrubel commented 11 years ago

Set owner to @danrubel. Added Started label.

danrubel commented 11 years ago

https://codereview.chromium.org/11414205/


Added Fixed label.

clayberg commented 11 years ago

Removed this from the M3 milestone. Added this to the M2 milestone.