Skip to content

fix(debugger): removing a breakpoint while running no longer resurrects it on the next session - #23

Merged
ClarionLive merged 2 commits into
ClarionLive:mainfrom
geircodes:fix/breakpoint-removed-while-running-persists
Aug 21, 2026
Merged

fix(debugger): removing a breakpoint while running no longer resurrects it on the next session#23
ClarionLive merged 2 commits into
ClarionLive:mainfrom
geircodes:fix/breakpoint-removed-while-running-persists

Conversation

@geircodes

Copy link
Copy Markdown

_pending (the pad's own breakpoint staging list, re-sent wholesale to the engine on the next StartSession()) and _svc.Breakpoints (the engine's confirmed, live list) are two separate lists. OnGutterBpRemoved only trimmed _pending in the NOT-running branch — while a session is live, removing a breakpoint (via the editor gutter or the pane's X) only told the live engine, leaving the stale entry in _pending. Starting a new session later re-sends that stale _pending list, silently re-planting the breakpoint the user thought they'd deleted.

Fix: _pending is now trimmed unconditionally, regardless of run state.

Verified live: removed a breakpoint mid-session, started a fresh session — before the fix the "removed" breakpoint came back and was hit again; after, it stays gone.

Geir Ståle Eidissen and others added 2 commits July 23, 2026 15:52
…rionLive#19, ClarionLive#21)

BuildSymbols previously rejected nameRef == 0 as invalid, silently dropping
_main's definition (its record legitimately points at pool offset 0) and
leaving stack frames in _main mis-bound to the preceding module's last
symbol, with a phantom SELF local appearing. Also adds a name-recovery
heuristic for GROUP members whose nameRef is zeroed by the compiler despite
a valid pool string existing (e.g. StringTheory.Value), recovering ~99.5%
of confirmed cases by reading backward from a known-good neighbor.

Adds temporary diagnostic CLI commands (scanrva, scanname, typemembers,
typechain, poolback, scanmissingnames, surveymissingnames) used to
investigate both issues, plus related locals/stack-walker/eval fixes and
debugger.html/webview tweaks.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ts it on the next session

_pending (the pad's own breakpoint staging list, resent wholesale to the
engine on the next StartSession) and _svc.Breakpoints (the engine's
confirmed, live list) are separate. Removing a breakpoint while a session
is running only talked to the live engine, never trimming _pending — so a
breakpoint removed mid-session silently came back the next time a session
was started, since StartSession() re-sends the stale _pending entry. Now
_pending is trimmed unconditionally, regardless of run state.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@geircodes
geircodes force-pushed the fix/breakpoint-removed-while-running-persists branch from d4b5b83 to 46e7dd8 Compare July 27, 2026 14:12
ClarionLive pushed a commit that referenced this pull request Aug 21, 2026
…#19, #21)

Lands the commit shared by PRs #23, #24 and #25 on its own, so each of those
three collapses to just its unique commit instead of carrying ~1100 duplicated
lines.

Fixes:
  - #19 phantom SELF local in main() — BuildSymbols' `nameRef < 1` guard dropped
    _main's definition record (which legitimately points at pool offset 0),
    leaving _main a symbol-less hole that stack frames mis-bound to the previous
    module's last method. Adds ResolveSymbolVerified, cross-checking a candidate
    against the +0x1C line table rather than the non-comparable +0x28 moduleIdx.
  - #21 (unnamed+N) GROUP members, e.g. StringTheory.Value — recovers the name by
    reading backward in the symbol pool from the group's smallest-mNameRef member,
    with duplicate / '@' / '$' rejection. ~99.5% of confirmed cases.

Also carries temporary diagnostic CLI commands used in the investigation, related
locals/stack-walker/eval fixes, and debugger.html/webview tweaks.

Original author: Geir Stale Eidissen <ML-DEV-GSE@ml.no>
Verified: ClarionDbg.Cli + ClarionDebugger.Addin build clean (0 warnings).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@ClarionLive
ClarionLive merged commit 7ff1989 into ClarionLive:main Aug 21, 2026
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.

2 participants