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

Bug 473727

Summary: ASCII Art in Javadoc cause hanging Eclipse when formatting
Product: [Eclipse Project] JDT Reporter: Andreas Höhmann <andreas.hoehmann>
Component: CoreAssignee: JDT-Core-Inbox <jdt-core-inbox>
Status: CLOSED DUPLICATE QA Contact:
Severity: critical    
Priority: P3 CC: daniel_megert, jarthana, mailings, manoj.palat, markus.kell.r, noopur_gupta
Version: 4.5Flags: manoj.palat: review+
Target Milestone: ---   
Hardware: PC   
OS: Windows 7   
See Also: https://git.eclipse.org/r/53580
https://bugs.eclipse.org/bugs/show_bug.cgi?id=474916
Whiteboard:

Description Andreas Höhmann CLA 2015-07-28 04:24:40 EDT
I have the follwing type javadoc ...

/**
 * Dieses Plugin ermöglicht das Rücksetzen von {@link com.siemens.spice.datamodel.application.Characteristic Merkmalen} in Abhängigkeit zu
 * anderen Merkmalsänderungen.
 *
 * <p>
 * <h3>Workflow</h3>
 *
 * <pre>
 * +--------------+       +--------------+        +--------------+         +--------------+
 * |    User      |       |Characteristic|        |     RDP      |         | ProductCstic |
 * +------+-------+       +------+-------+        +------+-------+         +------+-------+
 *        |                      |                       |                        |        
 *        |                      |                       |                        |        
 *        | setValue/setValues   | beforeAssignValue     |                        |        
 *        +--------------------->|---------------------->|                        |        
 *        |                      |                       |                        |        
 *        |                      | beforeClear           |                        |        
 *        |                      |---------------------->|                        |        
 *        |                      |                       |                        |        
 *        |                      | clear (*1)            |                        |        
 *        |                      |----------------------------------------------->|        
 *        |                      |                       |                        |        
 *        |                      |                       | productCsticChanged    |        
 *        |                      |                       |<-----------------------|        
 *        |                      | afterClear (*2)       |                        |        
 *        |                      |---------------------->|                        |        
 *        |                      |                       |                        |        
 *        |                      | setValue[s]/setValue[s]AsString (*3)           |        
 *        |                      |----------------------------------------------->|        
 *        |                      |                       |                        |        
 *        |                      |                       | productCsticChanged    |        
 *        |                      |                       |<-----------------------|        
 *        |                      |                       |                        |        
 *        |                      | afterAssignValue (*4) |                        |        
 *        |                      |---------------------->|                        |        
 *        |                      |                       |                        |        
 *        |                      |                       |                        |        
 *        |                      |                       |                        |        
 *        +                      +                       +                        +        
 * </pre>
 * </p>
 *
 * @author Igor Strasser
 * @author Stephan Dorer
 * @author Andreas Höhmann
 * @since 2.2013.05.0
 */

If I save the file ... then Eclipse hang ...

"main" #1 prio=6 os_prio=0 tid=0x00000000003be800 nid=0x15b8 runnable [0x00000000022b9000]
   java.lang.Thread.State: RUNNABLE
	at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3797)
	at java.util.regex.Pattern$Curly.match(Pattern.java:4227)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
	at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
	at java.util.regex.Pattern$Loop.match(Pattern.java:4785)
	at java.util.regex.Pattern$GroupTail.match(Pattern.java:4717)
	at java.util.regex.Pattern$BranchConn.match(Pattern.java:4568)
	at java.util.regex.Pattern$Curly.match0(Pattern.java:4279)
	at java.util.regex.Pattern$Curly.match(Pattern.java:4234)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
	at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
	at java.util.regex.Pattern$Loop.match(Pattern.java:4785)
	at java.util.regex.Pattern$GroupTail.match(Pattern.java:4717)
	at java.util.regex.Pattern$BranchConn.match(Pattern.java:4568)
	at java.util.regex.Pattern$Curly.match0(Pattern.java:4272)
	at java.util.regex.Pattern$Curly.match(Pattern.java:4234)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
	at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
	at java.util.regex.Pattern$Loop.match(Pattern.java:4785)
	at java.util.regex.Pattern$GroupTail.match(Pattern.java:4717)
	at java.util.regex.Pattern$BranchConn.match(Pattern.java:4568)
	at java.util.regex.Pattern$Curly.match0(Pattern.java:4272)
	at java.util.regex.Pattern$Curly.match(Pattern.java:4234)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
	at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
	at java.util.regex.Pattern$Loop.match(Pattern.java:4785)
	at java.util.regex.Pattern$GroupTail.match(Pattern.java:4717)
	at java.util.regex.Pattern$BranchConn.match(Pattern.java:4568)
	at java.util.regex.Pattern$Curly.match0(Pattern.java:4272)
	at java.util.regex.Pattern$Curly.match(Pattern.java:4234)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
	at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
	at java.util.regex.Pattern$Loop.match(Pattern.java:4785)
	at java.util.regex.Pattern$GroupTail.match(Pattern.java:4717)
	at java.util.regex.Pattern$BranchConn.match(Pattern.java:4568)
	at java.util.regex.Pattern$Curly.match0(Pattern.java:4272)
	at java.util.regex.Pattern$Curly.match(Pattern.java:4234)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
	at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
	at java.util.regex.Pattern$Loop.match(Pattern.java:4785)
	at java.util.regex.Pattern$GroupTail.match(Pattern.java:4717)
	at java.util.regex.Pattern$BranchConn.match(Pattern.java:4568)
	at java.util.regex.Pattern$Curly.match0(Pattern.java:4272)
	at java.util.regex.Pattern$Curly.match(Pattern.java:4234)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
	at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
	at java.util.regex.Pattern$Loop.match(Pattern.java:4785)
	at java.util.regex.Pattern$GroupTail.match(Pattern.java:4717)
	at java.util.regex.Pattern$BranchConn.match(Pattern.java:4568)
	at java.util.regex.Pattern$Curly.match0(Pattern.java:4272)
	at java.util.regex.Pattern$Curly.match(Pattern.java:4234)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
	at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
	at java.util.regex.Pattern$Loop.match(Pattern.java:4785)
	at java.util.regex.Pattern$GroupTail.match(Pattern.java:4717)
	at java.util.regex.Pattern$BranchConn.match(Pattern.java:4568)
	at java.util.regex.Pattern$Curly.match0(Pattern.java:4272)
	at java.util.regex.Pattern$Curly.match(Pattern.java:4234)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
	at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
	at java.util.regex.Pattern$Loop.match(Pattern.java:4785)
	at java.util.regex.Pattern$GroupTail.match(Pattern.java:4717)
	at java.util.regex.Pattern$BranchConn.match(Pattern.java:4568)
	at java.util.regex.Pattern$Curly.match0(Pattern.java:4272)
	at java.util.regex.Pattern$Curly.match(Pattern.java:4234)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
	at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
	at java.util.regex.Pattern$Loop.matchInit(Pattern.java:4804)
	at java.util.regex.Pattern$Prolog.match(Pattern.java:4741)
	at java.util.regex.Pattern$Curly.match0(Pattern.java:4279)
	at java.util.regex.Pattern$Curly.match(Pattern.java:4234)
	at java.util.regex.Pattern$Loop.match(Pattern.java:4794)
	at java.util.regex.Pattern$GroupTail.match(Pattern.java:4717)
	at java.util.regex.Pattern$BranchConn.match(Pattern.java:4568)
	at java.util.regex.Pattern$Curly.match0(Pattern.java:4272)
	at java.util.regex.Pattern$Curly.match(Pattern.java:4234)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
	at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
	at java.util.regex.Pattern$Loop.match(Pattern.java:4785)
	at java.util.regex.Pattern$GroupTail.match(Pattern.java:4717)
	at java.util.regex.Pattern$BranchConn.match(Pattern.java:4568)
	at java.util.regex.Pattern$Curly.match0(Pattern.java:4272)
	at java.util.regex.Pattern$Curly.match(Pattern.java:4234)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
	at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
	at java.util.regex.Pattern$Loop.match(Pattern.java:4785)
	at java.util.regex.Pattern$GroupTail.match(Pattern.java:4717)
	at java.util.regex.Pattern$BranchConn.match(Pattern.java:4568)
	at java.util.regex.Pattern$Curly.match0(Pattern.java:4272)
	at java.util.regex.Pattern$Curly.match(Pattern.java:4234)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
	at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
	at java.util.regex.Pattern$Loop.match(Pattern.java:4785)
	at java.util.regex.Pattern$GroupTail.match(Pattern.java:4717)
	at java.util.regex.Pattern$BranchConn.match(Pattern.java:4568)
	at java.util.regex.Pattern$Curly.match0(Pattern.java:4272)
	at java.util.regex.Pattern$Curly.match(Pattern.java:4234)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
	at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
	at java.util.regex.Pattern$Loop.match(Pattern.java:4785)
	at java.util.regex.Pattern$GroupTail.match(Pattern.java:4717)
	at java.util.regex.Pattern$BranchConn.match(Pattern.java:4568)
	at java.util.regex.Pattern$Curly.match0(Pattern.java:4272)
	at java.util.regex.Pattern$Curly.match(Pattern.java:4234)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
	at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
	at java.util.regex.Pattern$Loop.match(Pattern.java:4785)
	at java.util.regex.Pattern$GroupTail.match(Pattern.java:4717)
	at java.util.regex.Pattern$BranchConn.match(Pattern.java:4568)
	at java.util.regex.Pattern$Curly.match0(Pattern.java:4272)
	at java.util.regex.Pattern$Curly.match(Pattern.java:4234)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
	at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
	at java.util.regex.Pattern$Loop.match(Pattern.java:4785)
	at java.util.regex.Pattern$GroupTail.match(Pattern.java:4717)
	at java.util.regex.Pattern$BranchConn.match(Pattern.java:4568)
	at java.util.regex.Pattern$Ques.match(Pattern.java:4181)
	at java.util.regex.Pattern$Curly.match0(Pattern.java:4272)
	at java.util.regex.Pattern$Curly.match(Pattern.java:4234)
	at java.util.regex.Pattern$Curly.match0(Pattern.java:4272)
	at java.util.regex.Pattern$Curly.match(Pattern.java:4234)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
	at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
	at java.util.regex.Pattern$Loop.match(Pattern.java:4785)
	at java.util.regex.Pattern$GroupTail.match(Pattern.java:4717)
	at java.util.regex.Pattern$BranchConn.match(Pattern.java:4568)
	at java.util.regex.Pattern$Curly.match0(Pattern.java:4279)
	at java.util.regex.Pattern$Curly.match(Pattern.java:4234)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
	at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
	at java.util.regex.Pattern$Loop.match(Pattern.java:4785)
	at java.util.regex.Pattern$GroupTail.match(Pattern.java:4717)
	at java.util.regex.Pattern$BranchConn.match(Pattern.java:4568)
	at java.util.regex.Pattern$Curly.match0(Pattern.java:4272)
	at java.util.regex.Pattern$Curly.match(Pattern.java:4234)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
	at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
	at java.util.regex.Pattern$Loop.match(Pattern.java:4785)
	at java.util.regex.Pattern$GroupTail.match(Pattern.java:4717)
	at java.util.regex.Pattern$BranchConn.match(Pattern.java:4568)
	at java.util.regex.Pattern$Curly.match0(Pattern.java:4272)
	at java.util.regex.Pattern$Curly.match(Pattern.java:4234)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
	at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
	at java.util.regex.Pattern$Loop.match(Pattern.java:4785)
	at java.util.regex.Pattern$GroupTail.match(Pattern.java:4717)
	at java.util.regex.Pattern$BranchConn.match(Pattern.java:4568)
	at java.util.regex.Pattern$Curly.match0(Pattern.java:4272)
	at java.util.regex.Pattern$Curly.match(Pattern.java:4234)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
	at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
	at java.util.regex.Pattern$Loop.matchInit(Pattern.java:4801)
	at java.util.regex.Pattern$Prolog.match(Pattern.java:4741)
	at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
	at java.util.regex.Pattern$Loop.matchInit(Pattern.java:4804)
	at java.util.regex.Pattern$Prolog.match(Pattern.java:4741)
	at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
	at java.util.regex.Pattern$BranchConn.match(Pattern.java:4568)
	at java.util.regex.Pattern$GroupTail.match(Pattern.java:4717)
	at java.util.regex.Pattern$Curly.match0(Pattern.java:4272)
	at java.util.regex.Pattern$Curly.match(Pattern.java:4234)
	at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4602)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4602)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4602)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4602)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4602)
	at java.util.regex.Pattern$Branch.match(Pattern.java:4602)
	at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3798)
	at java.util.regex.Pattern$Start.match(Pattern.java:3461)
	at java.util.regex.Matcher.search(Matcher.java:1248)
	at java.util.regex.Matcher.find(Matcher.java:637)
	at org.eclipse.jdt.internal.formatter.CommentsPreparator.handleHtml(CommentsPreparator.java:629)
	at org.eclipse.jdt.internal.formatter.CommentsPreparator.endVisit(CommentsPreparator.java:619)
	at org.eclipse.jdt.core.dom.TagElement.accept0(TagElement.java:282)
	at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711)
	at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782)
	at org.eclipse.jdt.core.dom.Javadoc.accept0(Javadoc.java:205)
	at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711)
	at org.eclipse.jdt.internal.formatter.DefaultCodeFormatter.prepareComments(DefaultCodeFormatter.java:365)
	at org.eclipse.jdt.internal.formatter.DefaultCodeFormatter.prepareFormattedCode(DefaultCodeFormatter.java:195)
	at org.eclipse.jdt.internal.formatter.DefaultCodeFormatter.format(DefaultCodeFormatter.java:155)
	at org.eclipse.jdt.internal.formatter.DefaultCodeFormatter.format(DefaultCodeFormatter.java:139)
	at org.eclipse.jdt.internal.corext.util.CodeFormatterUtil.reformat(CodeFormatterUtil.java:288)
	at org.eclipse.jdt.internal.corext.util.CodeFormatterUtil.reformat(CodeFormatterUtil.java:351)
	at org.eclipse.jdt.internal.corext.fix.CodeFormatFix.createCleanUp(CodeFormatFix.java:69)
	at org.eclipse.jdt.internal.ui.fix.CodeFormatCleanUp.createFix(CodeFormatCleanUp.java:67)
	at org.eclipse.jdt.internal.corext.fix.CleanUpRefactoring.calculateChange(CleanUpRefactoring.java:809)
	at org.eclipse.jdt.internal.corext.fix.CleanUpPostSaveListener.saved(CleanUpPostSaveListener.java:396)
	at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider$5.run(CompilationUnitDocumentProvider.java:1598)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider.notifyPostSaveListeners(CompilationUnitDocumentProvider.java:1593)
	at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider.commitWorkingCopy(CompilationUnitDocumentProvider.java:1380)
	at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider$4.execute(CompilationUnitDocumentProvider.java:1458)
	at org.eclipse.ui.editors.text.TextFileDocumentProvider$DocumentProviderOperation.run(TextFileDocumentProvider.java:132)
	at org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation.execute(WorkspaceModifyDelegatingOperation.java:70)
	at org.eclipse.ui.actions.WorkspaceModifyOperation$1.run(WorkspaceModifyOperation.java:108)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2241)
	at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:130)
	- locked <0x00000000f07c9978> (a org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation)
	at org.eclipse.ui.internal.editors.text.WorkspaceOperationRunner.run(WorkspaceOperationRunner.java:75)
	at org.eclipse.ui.internal.editors.text.WorkspaceOperationRunner.run(WorkspaceOperationRunner.java:65)
	at org.eclipse.ui.editors.text.TextFileDocumentProvider.executeOperation(TextFileDocumentProvider.java:456)
	at org.eclipse.ui.editors.text.TextFileDocumentProvider.saveDocument(TextFileDocumentProvider.java:772)
	at org.eclipse.ui.texteditor.AbstractTextEditor.performSave(AbstractTextEditor.java:5076)
	at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.performSave(CompilationUnitEditor.java:1244)
	at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.doSave(CompilationUnitEditor.java:1298)
	- locked <0x00000000a27d2cf8> (a org.eclipse.jdt.internal.core.CompilationUnit)
	at org.eclipse.ui.texteditor.AbstractTextEditor$TextEditorSavable.doSave(AbstractTextEditor.java:7209)
	at org.eclipse.ui.Saveable.doSave(Saveable.java:216)
	at org.eclipse.ui.internal.SaveableHelper.doSaveModel(SaveableHelper.java:357)
	at org.eclipse.ui.internal.SaveablesList$3.run(SaveablesList.java:665)
	at org.eclipse.ui.internal.SaveableHelper$5.run(SaveableHelper.java:285)
	at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:463)
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:371)
	at org.eclipse.ui.internal.WorkbenchWindow$14.run(WorkbenchWindow.java:2156)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2152)
	at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:293)
	at org.eclipse.ui.internal.SaveablesList.saveModels(SaveablesList.java:675)
	at org.eclipse.ui.internal.SaveablesList.saveModels(SaveablesList.java:632)
	at org.eclipse.ui.internal.SaveablesList.promptForSaving(SaveablesList.java:617)
	at org.eclipse.ui.internal.SaveablesList.promptForSavingIfNecessary(SaveablesList.java:449)
	at org.eclipse.ui.internal.SaveablesList.preCloseParts(SaveablesList.java:405)
	at org.eclipse.ui.internal.SaveablesList.preCloseParts(SaveablesList.java:355)
	at org.eclipse.ui.internal.SaveablesList.preCloseParts(SaveablesList.java:350)
	at org.eclipse.ui.internal.WorkbenchWindow$7.save(WorkbenchWindow.java:587)
	at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.savePart(PartServiceImpl.java:1342)
	at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.closePart(StackRenderer.java:1277)
	at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.access$4(StackRenderer.java:1260)
	at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer$10.mouseUp(StackRenderer.java:1114)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:220)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4362)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1113)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4180)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3769)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1127)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1018)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:654)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:598)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:139)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:669)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:608)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1515)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1488)
Comment 1 Andreas Höhmann CLA 2015-07-28 04:26:50 EDT
If I change the ">" and "<" into "^" ... it works.

/**
 * Dieses Plugin ermöglicht das Rücksetzen von {@link com.siemens.spice.datamodel.application.Characteristic Merkmalen} in Abhängigkeit zu
 * anderen Merkmalsänderungen.
 *
 * <p>
 * <h3>Workflow</h3>
 *
 * <pre>
 * +--------------+       +--------------+        +--------------+         +--------------+
 * |    User      |       |Characteristic|        |     RDP      |         | ProductCstic |
 * +------+-------+       +------+-------+        +------+-------+         +------+-------+
 *        |                      |                       |                        |
 *        |                      |                       |                        |
 *        | setValue/setValues   | beforeAssignValue     |                        |
 *        +--------------------->|----------------------^|                        |
 *        |                      |                       |                        |
 *        |                      | beforeClear           |                        |
 *        |                      |----------------------^|                        |
 *        |                      |                       |                        |
 *        |                      | clear (*1)            |                        |
 *        |                      |-----------------------------------------------^|
 *        |                      |                       |                        |
 *        |                      |                       | productCsticChanged    |
 *        |                      |                       |^-----------------------|
 *        |                      | afterClear (*2)       |                        |
 *        |                      |----------------------^|                        |
 *        |                      |                       |                        |
 *        |                      | setValue[s]/setValue[s]AsString (*3)           |
 *        |                      |-----------------------------------------------^|
 *        |                      |                       |                        |
 *        |                      |                       | productCsticChanged    |
 *        |                      |                       |^-----------------------|
 *        |                      |                       |                        |
 *        |                      | afterAssignValue (*4) |                        |
 *        |                      |----------------------^|                        |
 *        |                      |                       |                        |
 *        |                      |                       |                        |
 *        |                      |                       |                        |
 *        +                      +                       +                        +
 * </pre>
 * </p>
 *
 * @author Igor Strasser
 * @author Stephan Dorer
 * @author Andreas Höhmann
 * @since 2.2013.05.0
 */
Comment 2 Noopur Gupta CLA 2015-07-28 05:10:06 EDT
(In reply to Andreas Höhmann from comment #0)
> I have the follwing type javadoc ...
> 
> /**
>  * Dieses Plugin ermöglicht das Rücksetzen von {@link
> com.siemens.spice.datamodel.application.Characteristic Merkmalen} in
> Abhängigkeit zu
>  * anderen Merkmalsänderungen.
>  *
>  * <p>
>  * <h3>Workflow</h3>
>  *
>  * <pre>
>  * +--------------+       +--------------+        +--------------+        
> +--------------+
>  * |    User      |       |Characteristic|        |     RDP      |         |
> ProductCstic |
>  * +------+-------+       +------+-------+        +------+-------+        
> +------+-------+
>  *        |                      |                       |                  
> |        
>  *        |                      |                       |                  
> |        
>  *        | setValue/setValues   | beforeAssignValue     |                  
> |        
>  *        +--------------------->|---------------------->|                  
> |        
>  *        |                      |                       |                  
> |        
>  *        |                      | beforeClear           |                  
> |        
>  *        |                      |---------------------->|                  
> |        
>  *        |                      |                       |                  
> |        
>  *        |                      | clear (*1)            |                  
> |        
>  *        |                     
> |----------------------------------------------->|        
>  *        |                      |                       |                  
> |        
>  *        |                      |                       |
> productCsticChanged    |        
>  *        |                      |                      
> |<-----------------------|        
>  *        |                      | afterClear (*2)       |                  
> |        
>  *        |                      |---------------------->|                  
> |        
>  *        |                      |                       |                  
> |        
>  *        |                      | setValue[s]/setValue[s]AsString (*3)     
> |        
>  *        |                     
> |----------------------------------------------->|        
>  *        |                      |                       |                  
> |        
>  *        |                      |                       |
> productCsticChanged    |        
>  *        |                      |                      
> |<-----------------------|        
>  *        |                      |                       |                  
> |        
>  *        |                      | afterAssignValue (*4) |                  
> |        
>  *        |                      |---------------------->|                  
> |        
>  *        |                      |                       |                  
> |        
>  *        |                      |                       |                  
> |        
>  *        |                      |                       |                  
> |        
>  *        +                      +                       +                  
> +        
>  * </pre>
>  * </p>
>  *
>  * @author Igor Strasser
>  * @author Stephan Dorer
>  * @author Andreas Höhmann
>  * @since 2.2013.05.0
>  */
> 
> If I save the file ... then Eclipse hang ...

It can be reproduced in Eclipse 4.5 by trying to format (Ctrl+Shift+F) a file containing a type with given Javadoc.
Comment 3 Dani Megert CLA 2015-07-28 10:20:00 EDT
Is this a regression compared to 4.4?
Comment 4 Timo Kinnunen CLA 2015-07-28 12:08:42 EDT
The problem is in the HTML_TAG_PATTERN regexp in org.eclipse.jdt.internal.formatter.CommentsPreparator. If we break that regexp down and isolate whitespace handling we find these subpatterns:

		String h = "[ \\t]";
		String v = "[\\r\\n]";
		String oneH = h + "+";
		String oneV = v + "+";
		String anyH = h + "*";
		String optAsterisk = "\\*?";
		String ws1 = oneH;
		String ws2 = oneV + anyH + optAsterisk;
		String ws = "(?:" + ws1 + "|" + ws2 + ")";
		String anyWS = ws + "*";
		String oneWS = ws + "+";

In other words, there is a backtracking repeating pattern (anyH) inside a backtracking repeating pattern (anyWS), which is poison for regexp engines. Worse, both branches of ws also contain the anyH pattern raising the number of potential paths to be checked further.

The fix is to disallow backtracking inside the ws pattern as the patterns containing it already take care of backtracking. So change the following subpatterns to possessive:

		String oneH = h + "++";
		String oneV = v + "++";
		String anyH = h + "*+";
Comment 5 Jay Arthanareeswaran CLA 2015-07-29 03:06:58 EDT
Please take a look. Thanks!
Comment 6 Noopur Gupta CLA 2015-07-29 04:04:43 EDT
(In reply to Dani Megert from comment #3)
> Is this a regression compared to 4.4?

Yes. It works well with Eclipse 4.4.2.
Comment 7 Mateusz Matela CLA 2015-08-06 16:43:42 EDT
*** Bug 474309 has been marked as a duplicate of this bug. ***
Comment 8 Eclipse Genie CLA 2015-08-11 13:02:45 EDT
New Gerrit change created: https://git.eclipse.org/r/53580
Comment 9 Mateusz Matela CLA 2015-08-11 13:11:31 EDT
(In reply to Timo Kinnunen from comment #4)
> The fix is to disallow backtracking inside the ws pattern as the patterns
> containing it already take care of backtracking.
Thank you for the analysis, Timo. It'd probably take me some time to figure this out :)
Comment 10 Jay Arthanareeswaran CLA 2015-08-13 07:11:11 EDT
+1 for 4.5.1
Comment 11 Jay Arthanareeswaran CLA 2015-08-13 11:33:36 EDT
The hudson build failed, the failure looks unrelated, though.
Comment 12 Mateusz Matela CLA 2015-08-13 17:43:28 EDT
(In reply to Jay Arthanareeswaran from comment #11)
> The hudson build failed, the failure looks unrelated, though.

Bug 474916 takes a more complete approach to the regex problems, so I guess it's a good thing this merge failed.
Comment 13 Markus Keller CLA 2015-08-25 06:11:54 EDT
Let's do this via bug 474916.

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