Designer: Code editor extremely slow if typing alphanumerics

Hello!
I’m testing out an upgrade from Ignition 7.3.4 to 7.5.6. The problem I’m facing is that the code editor (Python) in the Designer is now inpractically slow, if typing any letters or numbers. Otherwise it works fine: For example, cut and paste and hitting Enter key repeatedly.

The effect is significant, I can’t use the code editor for programming, only for text block handling.

My OS is Xubuntu and this problem reproduces with both, Java 6 and Java 7 equally.

A possibly userful lead I got, is that every time I break the execution of the Designer, the stack (of the thread likely in question) looks like below. Seems like a race condition of some sort:

Cheers,
cgz

Thread [AWT-EventQueue-0] (Suspended)	
	Unsafe.park(boolean, long) line: not available [native method]	
	LockSupport.park(Object) line: 156	
	AbstractQueuedSynchronizer$ConditionObject.await() line: 1987	
	SunToolkit.awtLockWait() line: 248	
	XToolkit.getCurrentServerTime() line: 1189	
	XClipboard.setContentsNative(Transferable) line: 69	
	XClipboard(SunClipboard).setContents(Transferable, ClipboardOwner) line: 93	
	CodeEditorFactory$1(CodeEditor).selectionChanged(SelectionEvent) line: not available	
	DefaultSelectionModel.fireSelectionChangeEvent(int, int, int, int) line: not available	
	DefaultSelectionModel.setSelection(int, int) line: not available	
	CodeEditorFactory$1(CodeEditor).a(int, int, boolean, boolean) line: not available	
	CodeEditorFactory$1(CodeEditor).select(int, int, boolean) line: not available	
	CodeEditorFactory$1(CodeEditor).select(int, int) line: not available	
	CodeEditor$p_.insertUpdate(DocumentEvent) line: not available	
	SyntaxDocument(AbstractDocument).fireInsertUpdate(DocumentEvent) line: 185	
	SyntaxDocument.fireInsertUpdate(DocumentEvent) line: not available	
	SyntaxDocument(AbstractDocument).handleInsertString(int, String, AttributeSet) line: 734	
	SyntaxDocument(AbstractDocument).insertString(int, String, AttributeSet) line: 693	
	SyntaxDocument(PlainDocument).insertString(int, String, AttributeSet) line: 114	
	a.insertStringAtCaret(CodeEditor, String, boolean, boolean) line: not available	
	CodeEditorFactory$1(CodeEditor).c(String) line: not available	
	CodeEditorFactory$1(CodeEditor).b(String) line: not available	
	CodeEditorFactory$1(CodeEditor).insertChar(String) line: not available	
	InputHandler$bb_.actionPerformed(ActionEvent) line: not available	
	DefaultInputHandler(InputHandler).executeAction(Action, Object, String) line: not available	
	DefaultInputHandler(InputHandler).keyTyped(KeyEvent) line: not available	
	CodeEditorFactory$1(CodeEditor).processKeyEvent(KeyEvent) line: not available	
	CodeEditorFactory$1(Component).processEvent(AWTEvent) line: 6067	
	CodeEditorFactory$1(Container).processEvent(AWTEvent) line: 2039	
	CodeEditorFactory$1(Component).dispatchEventImpl(AWTEvent) line: 4653	
	CodeEditorFactory$1(Container).dispatchEventImpl(AWTEvent) line: 2097	
	CodeEditorFactory$1(Component).dispatchEvent(AWTEvent) line: 4481	
	DefaultKeyboardFocusManager(KeyboardFocusManager).redispatchEvent(Component, AWTEvent) line: 1836	
	DefaultKeyboardFocusManager.dispatchKeyEvent(KeyEvent) line: 712	
	DefaultKeyboardFocusManager.preDispatchKeyEvent(KeyEvent) line: 990	
	DefaultKeyboardFocusManager.typeAheadAssertions(Component, AWTEvent) line: 855	
	DefaultKeyboardFocusManager.dispatchEvent(AWTEvent) line: 676	
	ScriptPlayground(Component).dispatchEventImpl(AWTEvent) line: 4525	
	ScriptPlayground(Container).dispatchEventImpl(AWTEvent) line: 2097	
	ScriptPlayground(Window).dispatchEventImpl(AWTEvent) line: 2482	
	ScriptPlayground(Component).dispatchEvent(AWTEvent) line: 4481	
	EventQueue.dispatchEventImpl(AWTEvent, Object) line: 648	
	EventQueue.access$000(EventQueue, AWTEvent, Object) line: 84	
	EventQueue$1.run() line: 607	
	EventQueue$1.run() line: 605	
	AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not available [native method]	
	AccessControlContext$1.doIntersectionPrivilege(PrivilegedAction<T>, AccessControlContext, AccessControlContext) line: 87	
	AccessControlContext$1.doIntersectionPrivilege(PrivilegedAction<T>, AccessControlContext) line: 98	
	EventQueue$2.run() line: 621	
	EventQueue$2.run() line: 619	
	AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not available [native method]	
	AccessControlContext$1.doIntersectionPrivilege(PrivilegedAction<T>, AccessControlContext, AccessControlContext) line: 87	
	EventQueue.dispatchEvent(AWTEvent) line: 618	
	EventDispatchThread.pumpOneEventForFilters(int) line: 269	
	EventDispatchThread.pumpEventsForFilter(int, Conditional, EventFilter) line: 184	
	EventDispatchThread.pumpEventsForHierarchy(int, Conditional, Component) line: 174	
	EventDispatchThread.pumpEvents(int, Conditional) line: 169	
	EventDispatchThread.pumpEvents(Conditional) line: 161	
	EventDispatchThread.run() line: 122

I have a feeling this is some sort of undesired interplay with Swing and Xfce (which we do not test on or support).

As you probably guessed, this is not a problem on any OSes that we have tested on. Have you tried another window manager? You might also see if OpenJDK performs any differently.

1 Like