Change:
Type: <bBug</bWait for Breakpoint is stuck on ! VS Code version: Code 1.86.0 (Universal) (, 2024-01-31T10:29:15.765Z) OS version: Darwin arm64 23.2.0 Modes: <details<summarySystem Info</summary </details<details<summaryExtensions (57)</summaryExtensionVersion ------ acorn0.7.0 vscode-sql-formatter1.4.4 TabOut0.2.2 tsl-problem-matcher0.6.2 indent-jump1.0.1 ruff2024.10.0 vscode-markdownlint0.54.0 vscode-eslint2.4.4 gitlens14.7.0 prettier-vscode10.1.0 hadolint1.1.2 shell-format7.2.5 vscode-github-actions0.26.2 vscode-pull-request-github0.80.0 go0.40.3 terraform2.29.3 vscode-test-explorer2.21.1 git-graph1.30.0 dotenv1.0.1 autoflake-extension1.0.4 black-formatter2024.0.0 debugpy2024.0.0 python2024.0.1 vscode-pylance2023.12.1 jupyter2024.1.0 jupyter-keymap1.1.2 jupyter-renderers1.0.17 vscode-jupyter-cell-tags0.1.8 vscode-jupyter-slideshow0.1.5 remote-containers0.338.1 remote-ssh0.108.0 remote-ssh-edit0.86.0 cmake-tools1.16.32 cpptools1.18.5 cpptools-extension-pack1.3.0 makefile-tools0.8.22 remote-explorer0.4.1 test-adapter-converter0.1.9 vscode-marketplace-extension-browser0.0.7 vsliveshare1.0.5905 cuelang0.0.1 autodocstring0.6.1 excalidraw-editor3.7.2 vscode-yaml1.14.0 rust-analyzer0.3.1831 cody-ai1.4.0 sourcery1.15.0 code-spell-checker3.0.1 vscode-rust-test-adapter0.11.0 even-better-toml0.19.2 typos-vscode0.1.12 tiltfile0.0.3 shellcheck0.35.0 vscode-mermaid-editor0.19.1 cmake0.0.17 vscode-lldb1.10.0 vscode-open-in-github1.3.6 (1 theme extensions excluded) </details<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
Please try in case one of your extensions is the cause.
This probably need to be reported on that extension. Are you debugging Python code when you get the problem?
Yep this is python code.. can this issue be moved there, or do I need to recreate it?
I suggest leaving it here for one of the VS Code team to move.
Pinging who steered PR
Are any of your breakpoints set in files that are inaccessible? That "Loading..." is shown while reading files where breakpoints are set in in order to show the line preview during selection.
Some are in third party libraries and some are in notebooks but they are all accessible. !
Seems to have resolved itself now but I'm not sure how ...
It'd be nice to be able to load descriptions asnychronously, that would solve the issue or at least show what single breakpoint location is being slow to load
what's the best way to verify this?
I don't know of a way to verify this since it requires a breakpoint in a file on a filesystem that is very slow to read from. Probably just have to code review it: the change was to individually load the sources so that we don't have the entire select box in a "loading" state waiting on the longest file read.
I can actually repro on stable in conjunction with a pylance perf issue. Does not repro on insiders

Discussion:
private createTriggerBreakpointInput(container: HTMLElement) { const breakpoints = this.debugService.getModel().getBreakpoints().filter(bp => bp !== this.breakpoint); <ins> const breakpointOptions: ISelectOptionItem[] = [ { text: nls.localize('noTriggerByBreakpoint', 'None'), isDisabled: true }, ...breakpoints.map(bp => ({ text: `${this.labelService.getUriLabel(bp.uri, { relative: true })}: ${bp.lineNumber}`, description: nls.localize('triggerByLoading', 'Loading...') })), ]; </ins> const index = breakpoints.findIndex((bp) => this.breakpoint?.triggeredBy === bp.getId()); <del> let select = 0; if (index > -1) { select = index + 1; } Promise.all(breakpoints.map(async (bp): Promise<ISelectOptionItem> => ({ text: `${this.labelService.getUriLabel(bp.uri, { relative: true })}: ${bp.lineNumber}`, description: await this.textModelService.createModelReference(bp.uri).then(ref => { </del> <ins> for (const [i, bp] of breakpoints.entries()) { this.textModelService.createModelReference(bp.uri).then(ref => { </ins> try { <del> return ref.object.textEditorModel.getLineContent(bp.lineNumber).trim(); </del> <ins> breakpointOptions[i + 1].description = ref.object.textEditorModel.getLineContent(bp.lineNumber).trim(); </ins> } finally { ref.dispose(); } <del> }, () => undefined), }))).then(breakpoints => { selectBreakpointBox.setOptions([ { text: nls.localize('noTriggerByBreakpoint', 'None') }, ...breakpoints ], select); }); </del> <ins> }).catch(() => { breakpointOptions[i + 1].description = nls.localize('noBpSource', 'Could not load source.'); }); } </ins> <del> const selectBreakpointBox = this.selectBreakpointBox = new SelectBox([{ text: nls.localize('triggerByLoading', 'Loading...'), isDisabled: true }], 0, this.contextViewService, defaultSelectBoxStyles, { ariaLabel: nls.localize('selectBreakpoint', 'Select breakpoint') }); </del> <ins> const selectBreakpointBox = this.selectBreakpointBox = new SelectBox(breakpointOptions, index + 1, this.contextViewService, defaultSelectBoxStyles, { ariaLabel: nls.localize('selectBreakpoint', 'Select breakpoint') }); </ins> selectBreakpointBox.onDidSelect(e => { if (e.index === 0) { this.triggeredByBreakpointInput = undefined;