IDE freezes if parenthesis entered in search field

Bug #941127 reported by Riley Goodside
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
SikuliX
Fix Released
Critical
RaiMan

Bug Description

Sikuli Version X-1.0rc3 running on Mac OS X Version 10.7.3 - iMac - Intel Core i5

Steps to reproduce:
1. Open Sikuli-IDE
2. Press Cmd-F
3. Type "example(" into search box

The IDE will freeze, preventing you from typing anything further for several seconds. Once it unfreezes, entering any text other than backspacing over the parenthesis mark will result in another temporary freeze. Error text is included below. The IDE appears to be interpreting the text in the search field as an erroneous regular expression, which is nonstandard among OS X GUI applications and unexpected. Even if a regular expression were intended, the freezing and immediate error make it extremely difficult to type.

Temporary workaround:
Always use a backslash before searching for any string containing parentheses. E.g., to search for "example(foo)", search instead for "example\(foo\)".

[BEGIN ERROR TEXT]

Exception in thread "AWT-EventQueue-0" java.util.regex.PatternSyntaxException: Unclosed group near index 8
example(
 ^
 at java.util.regex.Pattern.error(Pattern.java:1713)
 at java.util.regex.Pattern.accept(Pattern.java:1571)
 at java.util.regex.Pattern.group0(Pattern.java:2533)
 at java.util.regex.Pattern.sequence(Pattern.java:1806)
 at java.util.regex.Pattern.expr(Pattern.java:1752)
 at java.util.regex.Pattern.compile(Pattern.java:1460)
 at java.util.regex.Pattern.(Pattern.java:1133)
 at java.util.regex.Pattern.compile(Pattern.java:823)
 at org.sikuli.ide.SikuliPane.search(SikuliPane.java:744)
 at org.sikuli.ide.SikuliIDE$FindAction._find(SikuliIDE.java:1264)
 at org.sikuli.ide.SikuliIDE$FindAction.findStr(SikuliIDE.java:1273)
 at org.sikuli.ide.SikuliIDE$4.keyReleased(SikuliIDE.java:524)
 at java.awt.AWTEventMulticaster.keyReleased(AWTEventMulticaster.java:243)
 at java.awt.Component.processKeyEvent(Component.java:6334)
 at javax.swing.JComponent.processKeyEvent(JComponent.java:2801)
 at java.

awt.Component.processEvent(Component.java:6150)
 at java.awt.Container.processEvent(Container.java:2085)
 at java.awt.Component.dispatchEventImpl(Component.java:4735)
 at java.awt.Container.dispatchEventImpl(Container.java:2143)
 at java.awt.Component.dispatchEvent(Component.java:4565)
 at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1850)
 at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:712)
 at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:990)
 at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:855)
 at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:676)
 at java.awt.Component.dispatchEventImpl(Component.java:4607)
 at java.awt.Container.dispatchEventImpl(Container.java:2143)
 at java.awt.Window.dispatchEventImpl(Window.java:2478)
 at java.awt.Component.dispatchEvent(Component.java:4565)
 at java.awt.EventQueue.dispat

chEventImpl(EventQueue.java:679)
 at java.awt.EventQueue.access$000(EventQueue.java:85)
 at java.awt.EventQueue$1.run(EventQueue.java:638)
 at java.awt.EventQueue$1.run(EventQueue.java:636)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
 at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
 at java.awt.EventQueue$2.run(EventQueue.java:652)
 at java.awt.EventQueue$2.run(EventQueue.java:650)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
 at java.awt.EventQueue.dispatchEvent(EventQueue.java:649)
 at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
 at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
 at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
 at jav

a.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
 at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
 at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Exception in thread "AWT-EventQueue-0" java.util.regex.PatternSyntaxException: Unclosed group near index 8
example(
 ^
 at java.util.regex.Pattern.error(Pattern.java:1713)
 at java.util.regex.Pattern.accept(Pattern.java:1571)
 at java.util.regex.Pattern.group0(Pattern.java:2533)
 at java.util.regex.Pattern.sequence(Pattern.java:1806)
 at java.util.regex.Pattern.expr(Pattern.java:1752)
 at java.util.regex.Pattern.compile(Pattern.java:1460)
 at java.util.regex.Pattern.(Pattern.java:1133)
 at java.util.regex.Pattern.compile(Pattern.java:823)
 at org.sikuli.ide.SikuliPane.search(SikuliPane.java:744)
 at org.sikuli.ide.SikuliIDE$FindAction._find(SikuliIDE.java:1264)
 at org.sikuli.ide.SikuliIDE$FindAction.findStr(SikuliIDE.java:1273)
 at org.sikuli.ide.SikuliIDE$4.keyReleased(SikuliIDE.java:524)

at java.awt.AWTEventMulticaster.keyReleased(AWTEventMulticaster.java:243)
 at java.awt.Component.processKeyEvent(Component.java:6334)
 at javax.swing.JComponent.processKeyEvent(JComponent.java:2801)
 at java.awt.Component.processEvent(Component.java:6150)
 at java.awt.Container.processEvent(Container.java:2085)
 at java.awt.Component.dispatchEventImpl(Component.java:4735)
 at java.awt.Container.dispatchEventImpl(Container.java:2143)
 at java.awt.Component.dispatchEvent(Component.java:4565)
 at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1850)
 at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:712)
 at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:990)
 at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:855)
 at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:676)
 at java.awt.Component.dispatchEventImpl(Component.java:4607

)
 at java.awt.Container.dispatchEventImpl(Container.java:2143)
 at java.awt.Window.dispatchEventImpl(Window.java:2478)
 at java.awt.Component.dispatchEvent(Component.java:4565)
 at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:679)
 at java.awt.EventQueue.access$000(EventQueue.java:85)
 at java.awt.EventQueue$1.run(EventQueue.java:638)
 at java.awt.EventQueue$1.run(EventQueue.java:636)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
 at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
 at java.awt.EventQueue$2.run(EventQueue.java:652)
 at java.awt.EventQueue$2.run(EventQueue.java:650)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
 at java.awt.EventQueue.dispatchEvent(EventQueue.java:649)
 at java.awt.EventDispatchThread.pumpOneEventForFilter

s(EventDispatchThread.java:296)
 at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
 at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
 at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
 at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
 at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

[END OF ERROR TEXT]

Tags: idemenu
RaiMan (raimund-hocke)
Changed in sikuli:
status: New → Confirmed
RaiMan (raimund-hocke)
Changed in sikuli:
status: Confirmed → In Progress
assignee: nobody → RaiMan (raimund-hocke)
milestone: none → x1.0
RaiMan (raimund-hocke)
tags: added: idemenu
removed: ide
RaiMan (raimund-hocke)
Changed in sikuli:
status: In Progress → Fix Committed
RaiMan (raimund-hocke)
Changed in sikuli:
importance: Undecided → High
importance: High → Critical
RaiMan (raimund-hocke)
Changed in sikuli:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.