Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 358970

Summary: u200b character in Java text crashes Eclipse
Product: [Eclipse Project] Platform Reporter: Walter Harley <eclipse>
Component: SWTAssignee: Platform-SWT-Inbox <platform-swt-inbox>
Status: CLOSED DUPLICATE QA Contact:
Severity: normal    
Priority: P3 CC: eclipse.felipe, ericwill, karuzis, tanguy.moal
Version: 3.6.2   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:

Description Walter Harley CLA 2011-09-26 16:12:51 EDT
Trying to view a Java file containing Unicode character \u200b causes an ArrayIndexOutOfBoundsException in SWT, and causes the editor to become unresponsive, unable to draw correctly, and other UI-related problems.

This is also discussed in Bug 314620 but that bug says it's for a slightly different problem, and I don't see a bug for this problem.

This repros in 3.6.1 and 3.6.2.  I have not tried it in 3.7.

Stack trace:

java.lang.ArrayIndexOutOfBoundsException: 1
        at org.eclipse.swt.graphics.TextLayout.computeRuns(TextLayout.java:169)
        at org.eclipse.swt.graphics.TextLayout.getLineCount(TextLayout.java:1157)
        at org.eclipse.swt.custom.StyledTextRenderer.getTextLayout(StyledTextRenderer.java:980)
        at org.eclipse.swt.custom.StyledTextRenderer.getTextLayout(StyledTextRenderer.java:719)
        at org.eclipse.swt.custom.StyledTextRenderer.drawLine(StyledTextRenderer.java:364)
        at org.eclipse.swt.custom.StyledText.handlePaint(StyledText.java:6097)
        at org.eclipse.swt.custom.StyledText$7.handleEvent(StyledText.java:5661)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1282)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1267)
        at org.eclipse.swt.widgets.Control.gtk_expose_event(Control.java:2783)
        at org.eclipse.swt.widgets.Composite.gtk_expose_event(Composite.java:701)
        at org.eclipse.swt.widgets.Canvas.gtk_expose_event(Canvas.java:167)
        at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:1739)
        at org.eclipse.swt.widgets.Control.windowProc(Control.java:4796)
        at org.eclipse.swt.widgets.Display.windowProc(Display.java:4360)
        at org.eclipse.swt.internal.gtk.OS._gtk_main_do_event(Native Method)
        at org.eclipse.swt.internal.gtk.OS.gtk_main_do_event(OS.java:8189)
        at org.eclipse.swt.widgets.Display.eventProc(Display.java:1238)
        at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method)
        at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:2237)
        at org.eclipse.swt.widgets.Shell.setVisible(Shell.java:1997)
        at org.eclipse.swt.widgets.Shell.open(Shell.java:1410)
        at org.eclipse.jface.window.Window.open(Window.java:797)
        at org.eclipse.ui.internal.statushandlers.InternalDialog.open(InternalDialog.java:327)
        at org.eclipse.ui.internal.statushandlers.WorkbenchStatusDialogManagerImpl.doAddStatusAdapter(WorkbenchStatusDialogManagerImpl.java:270)
        at org.eclipse.ui.internal.statushandlers.WorkbenchStatusDialogManagerImpl.addStatusAdapter(WorkbenchStatusDialogManagerImpl.java:197)
        at org.eclipse.ui.statushandlers.WorkbenchStatusDialogManager.addStatusAdapter(WorkbenchStatusDialogManager.java:156)
        at org.eclipse.ui.statushandlers.WorkbenchErrorHandler.showStatusAdapter(WorkbenchErrorHandler.java:101)
        at org.eclipse.ui.statushandlers.WorkbenchErrorHandler.handle(WorkbenchErrorHandler.java:57)
        at org.eclipse.ui.internal.ide.IDEWorkbenchErrorHandler.handle(IDEWorkbenchErrorHandler.java:108)
        at org.eclipse.ui.internal.WorkbenchErrorHandlerProxy.handle(WorkbenchErrorHandlerProxy.java:36)
        at org.eclipse.ui.statushandlers.StatusManager.handle(StatusManager.java:189)
        at org.eclipse.ui.internal.JFaceUtil$3.show(JFaceUtil.java:70)
        at org.eclipse.jface.util.SafeRunnable.handleException(SafeRunnable.java:67)
        at org.eclipse.core.runtime.SafeRunner.handleException(SafeRunner.java:75)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:44)
        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.firePostSelectionChanged(StructuredViewer.java:865)
        at org.eclipse.jface.viewers.StructuredViewer.handlePostSelect(StructuredViewer.java:1205)
        at org.eclipse.jface.viewers.StructuredViewer$5.widgetSelected(StructuredViewer.java:1230)
        at org.eclipse.jface.util.OpenStrategy.firePostSelectionEvent(OpenStrategy.java:251)
        at org.eclipse.jface.util.OpenStrategy.access$5(OpenStrategy.java:245)
        at org.eclipse.jface.util.OpenStrategy$3.run(OpenStrategy.java:419)
        at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
        at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
        at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3515)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3164)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
        at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
        at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
        at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
        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:369)
        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:620)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1408)
        at org.eclipse.equinox.launcher.Main.main(Main.java:1384)
Comment 1 Felipe Heidrich CLA 2011-09-27 16:18:28 EDT
Please try eclipse 3.7, I believe this problem has been fixed. Thank you
Comment 2 Felipe Heidrich CLA 2011-09-27 16:22:25 EDT
(In reply to comment #1)
> Please try eclipse 3.7, I believe this problem has been fixed. Thank you

Sorry, I read my email in the reverse order (I just read note in the original bug).
I don't think this bug was fixed. Read the comments in the bug I reported against pango for details.
Comment 3 Felipe Heidrich CLA 2011-10-03 11:00:08 EDT
*** Bug 359449 has been marked as a duplicate of this bug. ***
Comment 4 Mark Karuzis CLA 2012-03-05 12:18:46 EST
How does this differ from 331453 (which is resolved)?  The stacks look the same...
Comment 5 Walter Harley CLA 2012-03-05 14:48:23 EST
The stacks do look the same.  According to bug 331453 this has been fixed in 3.7.  I have not had a chance to try (my company is still in the process of switching to 3.7).  I would be okay with this being resolved as a dup; I can always reopen if it turns out not to be fixed.
Comment 6 Eric Williams CLA 2016-12-19 16:10:57 EST
(In reply to Walter Harley from comment #5)
> The stacks do look the same.  According to bug 331453 this has been fixed in
> 3.7.  I have not had a chance to try (my company is still in the process of
> switching to 3.7).  I would be okay with this being resolved as a dup; I can
> always reopen if it turns out not to be fixed.

Based on this, marking as duplicate.

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