Skip to content

Conversation

@srujzs
Copy link
Contributor

@srujzs srujzs commented Oct 8, 2025

Fixes dart-lang/sdk#61560

We rely on a pause within a hot reload to pause execution so that we can reregister breakpoints. However, the existing pause mechanism always sends a PauseInterrupted event, which then triggers the client to think this is a normal pause event and not an internal detail. Instead, we should have the ChromeProxyService signal to the debugger that this is an "internal pause" and therefore it should not send a regular pause event and should use a completer to signal the pause is done.

Tests are refactored and updated to correctly check for the events when reregistering breakpoints. Specifically, it checks no other events besides the expected ones are sent.

…ish 25.1.1

Fixes dart-lang/sdk#61560

We rely on a pause within a hot reload to pause execution so that
we can reregister breakpoints. However, the existing pause mechanism
always sends a PauseInterrupted event, which then triggers the
client to think this is a normal pause event and not an internal
detail. Instead, we should have the ChromeProxyService signal to
the debugger that this is an "internal pause" and therefore it should
not send a regular pause event and should use a completer to signal
the pause is done.

Tests are refactored and updated to correctly check for the events
when reregistering breakpoints. Specifically, it checks no other
events besides the expected ones are sent.
@srujzs srujzs requested a review from bkonyi October 9, 2025 03:55
Copy link
Collaborator

@bkonyi bkonyi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, but let's hold off on publishing right away (I'd like to also get #2694 into the next release).

@srujzs srujzs changed the title [DWDS] Don't send PauseInterrupted event during a hot reload and publish 25.1.1 [DWDS] Don't send PauseInterrupted event during a hot reload Oct 9, 2025
@srujzs
Copy link
Contributor Author

srujzs commented Oct 9, 2025

let's hold off on publishing right away (I'd like to also get #2694 into the next release)

Ack, I kept it as the latest wip release.

@auto-submit auto-submit bot merged commit 3ab8fca into dart-lang:main Oct 9, 2025
57 checks passed
bkonyi pushed a commit that referenced this pull request Oct 9, 2025
Fixes dart-lang/sdk#61560

We rely on a pause within a hot reload to pause execution so that we can reregister breakpoints. However, the existing pause mechanism always sends a PauseInterrupted event, which then triggers the client to think this is a normal pause event and not an internal detail. Instead, we should have the ChromeProxyService signal to the debugger that this is an "internal pause" and therefore it should not send a regular pause event and should use a completer to signal the pause is done.

Tests are refactored and updated to correctly check for the events when reregistering breakpoints. Specifically, it checks no other events besides the expected ones are sent.
bkonyi added a commit that referenced this pull request Oct 9, 2025
* [DWDS] Don't send PauseInterrupted event during a hot reload (#2695)

Fixes dart-lang/sdk#61560

We rely on a pause within a hot reload to pause execution so that we can reregister breakpoints. However, the existing pause mechanism always sends a PauseInterrupted event, which then triggers the client to think this is a normal pause event and not an internal detail. Instead, we should have the ChromeProxyService signal to the debugger that this is an "internal pause" and therefore it should not send a regular pause event and should use a completer to signal the pause is done.

Tests are refactored and updated to correctly check for the events when reregistering breakpoints. Specifically, it checks no other events besides the expected ones are sent.

* [ DWDS ] Expose `dtdUri` via `DebugConnection` (#2694)

This is needed to access the DTD instance spawned by DDS.

---------

Co-authored-by: Srujan Gaddam <[email protected]>
copybara-service bot pushed a commit to dart-lang/sdk that referenced this pull request Oct 13, 2025
Revisions updated by `dart tools/rev_sdk_deps.dart`.

ai (https://github.com/dart-lang/ai/compare/59db320..a29274b):
  a29274b  2025-10-09  Greg Spencer  Provide output logs when the process launch fails. (dart-lang/ai#293)
  d33ed02  2025-10-07  Greg Spencer  [Feat] Add hot restart tool (dart-lang/ai#297)

dartdoc (https://github.com/dart-lang/dartdoc/compare/ec2a4fe..98d03ad):
  98d03ad2  2025-10-09  Sarah Zakarias  Bump to 9.0.0 (dart-lang/dartdoc#4116)
  45ba6ede  2025-10-07  Sam Rawlins  Display constructor names in annotations (dart-lang/dartdoc#4115)

ecosystem (https://github.com/dart-lang/ecosystem/compare/96ee861..f4fbac4):
  f4fbac4  2025-10-13  Moritz  Use up to date firehose in publish (dart-lang/ecosystem#376)
  1fe5686  2025-10-10  Moritz  Relax assumptions on workspaces in firehose (dart-lang/ecosystem#375)

shelf (https://github.com/dart-lang/shelf/compare/f30d650..710b8ce):
  710b8ce  2025-10-08  Kevin Moore  shelf_router_generator: update dependencies, SDK (dart-lang/shelf#484)

tools (https://github.com/dart-lang/tools/compare/6866f9b..adf3fe7):
  adf3fe78  2025-10-13  Parker Lougheed  [markdown] Preserve metadata passed to fenced code blocks (dart-lang/tools#2186)
  b435a46b  2025-10-10  Stephen Adams  Fix `SingleMapping.spanFor` to use previous line (dart-lang/tools#2205)
  4c7dae18  2025-10-10  Morgan :)  Fix for skipped tests on Windows. (dart-lang/tools#2204)
  50b4514e  2025-10-09  Morgan :)  Use Event extension type for Windows DirectoryWatcher. (dart-lang/tools#2203)
  a0af8b59  2025-10-08  Morgan :)  Use Event extension type for MacOS DirectoryWatcher. (dart-lang/tools#2201)
  0f50f061  2025-10-08  Morgan :)  Add package-private extension type Event on FileSystemEvent. (dart-lang/tools#2200)
  d67ab97c  2025-10-07  Moritz  [bazel_worker] Upgrade `protobuf` + cleanups (dart-lang/tools#2195)

webdev (https://github.com/dart-lang/webdev/compare/29ba1b1..186bfe7):
  186bfe71  2025-10-09  Ben Konyi  [ DWDS ] Expose `dtdUri` via `DebugConnection` (dart-lang/webdev#2694)
  3ab8fca3  2025-10-09  Srujan Gaddam  [DWDS] Don't send PauseInterrupted event during a hot reload (dart-lang/webdev#2695)
  cdc5cc3c  2025-10-09  jensjoha  Pass script uri for javascript expression compilation (dart-lang/webdev#2682)

Change-Id: Ie78adfec4a8887af1ea3104b50c52ea2fd3bb1d2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/454621
Reviewed-by: Konstantin Shcheglov <[email protected]>
Auto-Submit: Devon Carew <[email protected]>
Commit-Queue: Konstantin Shcheglov <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Hot Reload opens binding.dart at line 845 on every reload (no errors shown)

2 participants