Skip to content

Defer activation reparse while parsing and rethrow UI failures - #1666

Merged
vogella merged 1 commit into
masterfrom
defer-activation-reparse
Oct 13, 2026
Merged

vogella merged 1 commit into
masterfrom
defer-activation-reparse

Conversation

@vogella

@vogella vogella commented Oct 11, 2026

Copy link
Copy Markdown
Contributor

Activating the WindowBuilder editor while a parse was running, for example after the open file was rewritten from outside and the editor was reopened, started a nested parse that disposed the outer parse's model. The outer parse then failed in UndoManager.setRoot with a NullPointerException on m_componentsTree, which is the error users saw on the Design page. UndoManager.activate() now waits for the running parse, as the buffer-change refresh already does. The real error stayed hidden because ExecutionUtils.runRethrowUI() never rethrew inside the IDE: SWT hands a syncExec runnable's exception to the display's exception handler, which the workbench uses to log and continue. runRethrowUI() now rethrows the exception in the calling thread, so a failing design refresh is reported as itself instead of as a follow-up NPE.

Activating the editor while a parse was running started a nested parse
that disposed the outer parse's model. The outer parse then failed with
a NullPointerException in UndoManager.setRoot, which hid the real error.
UndoManager.activate() now waits for the running parse, as the
buffer-change refresh already does.

ExecutionUtils.runRethrowUI() did not rethrow in the IDE, because SWT
hands a syncExec runnable's exception to the display's exception
handler, which the workbench uses to log the exception and continue.
The exception is now caught in the runnable and rethrown in the caller.

Assisted-by: multiple AI agents and layers of automated tooling 🤖
@github-actions

Copy link
Copy Markdown

Test Results

     4 files  ±0       4 suites  ±0   2h 24m 1s ⏱️ + 33m 37s
 7 020 tests +1   6 990 ✅ +2  30 💤 ±0  0 ❌  - 1 
23 684 runs  +4  23 588 ✅ +5  96 💤 ±0  0 ❌  - 1 

Results for commit 933f158. ± Comparison against base commit caf7a7f.

@vogella
vogella merged commit 68c0afe into master Oct 13, 2026
8 checks passed
@ptziegler
ptziegler deleted the defer-activation-reparse branch October 14, 2026 19:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant