jiebi/CodeConvo huggingface dataset:
Code change:
} } <ins> /* Used to strip brackets from the markdown link <http://example.com> will be transformed to http://example.com */ export function stripAngleBrackets(link: string) { const bracketMatcher = /^<(.*)>$/; return link.replace(bracketMatcher, '$1'); } </ins> export default class LinkProvider implements vscode.DocumentLinkProvider { private readonly linkPattern = /([((![[^]]*?](s*)([^s()]+?)s*)]|(?:]|[^]])*])(s*)(([^s()]|([^s()]*?))+)s*(".*?")?)/g; private readonly referenceLinkPattern = /([((?:]|[^]])+)][s*?)([^s]]*?)]/g;

Related discussion:
text: <!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Read our guide about submitting issues: --<!-- Search existing issues to avoid creating duplicates. --<!-- Test using the latest Insiders build to see if your issue has already been fixed: --<!-- Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. --<!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.60.0 OS Version: MacOS 10.14.3 Steps to Reproduce: & paste into markdown file <kbd⌘</kbdand click the link .ext)
This is my first go at launching into the vscode code, but hopefully this information may be useful. Perhaps we could update the parsing of the URI schemes in general to strip out the angle brackets when editing markdown? See my findings below for why I'm suggesting this, but I'm also unsure of what problems and side effects doing that may cause. Main points of interest While the Command + Click doesn't follow the web link when you're a Markdown file, it does follow the link in the of the Markdown file. So I think markdown syntax is actually ok In debugging the project a little bit, I found that the link you try to follow that has angle brackets may be trying to or something similar (instead of open a web browser) In the function , I think the scheme of http(s) isn't recognized because of the < brackets in the link portion. See around line 18, where it tries to recognize the scheme, but doesn't recognize it when it tries calling In the file you can add a few new schemes, and then you're able to follow the link just fine. Though, this is probably not the final way the issue should be fixed
Code change:
async function test77735(withOpenedEditor: boolean): Promise<void> { const docUriOriginal = await createRandomFile(); const docUriMoved = docUriOriginal.with({ path: `${docUriOriginal.path}.moved` }); <del> await deleteFile(docUriMoved); // ensure target does not exist </del> <ins> await deleteFile(docUriMoved); </ins> if (withOpenedEditor) { const document = await vscode.workspace.openTextDocument(docUriOriginal);

Related discussion:
text: Looks like a one time fluke, given 30d statistics and 5000+ runs pass rate. <img width="1357" alt="image" src=""
Code change:
import { Schemas } from '../../../../base/common/network.js'; import { IEditorGroupsService } from '../../../services/editor/common/editorGroupsService.js'; import { IEditorService } from '../../../services/editor/common/editorService.js'; <ins> import { forcedExpandRecursively } from './searchActionsTopBar.js'; </ins> //#region Interfaces

Related discussion:
text: to search, then click the that expands the results. :bug: does not expand. Looking into this more, it is because the call for the node isn't working.
I've also seen the same thing with not working. Unsure if this is related, but the repro is the same, but between step 2 and 3, expand the AI results.
This seems to also happen in when in tree mode.
It could be very expensive if expand all would actually expand all tree nodes in an async data tree. It's possible to have infinite deep async trees so in those cases this method would crash. My recommendation would be to create your own implementation for this in the search view. If that does not work the way you would like it to, we could consider alternatives. I think the bulk edit pane has a similar behaviour here:
Code change:
} export interface IMarkTracker { <del> scrollToPreviousMark(): void; </del> <ins> scrollToPreviousMark(scrollPosition?: ScrollPosition, retainSelection?: boolean, skipEmptyCommands?: boolean): void; </ins> scrollToNextMark(): void; selectToPreviousMark(): void; selectToNextMark(): void;

Related discussion:
text: Notice how for the task terminal it jumps all the way to the top on the first ctrl+up, instead of going to the most recently run task: !
When I run the build task and do cmd + up, the window crashes !
That's even worse
the call to get markers here returns undefined !
I bet the markers are getting disposed of, so deleted from the map in but it looks like that wouldn't even happen since we don't set like we should. Could be why I see the renderer process crash?
Code change:
terminal.xterm.write(chunk.buffer, () => pendingWrites.value--); } } else { <ins> didWriteData = true; </ins> this.writeNotice(terminal, localize('runNoOutputForPast', 'Test output is only available for new test runs.')); }

Related discussion:
text: This: Now results in 1/2 the minimum contrast requirements which is a soft accessibility issue. It seems like these messages are special vscode messages which use special formatting in the real terminal:
Code change:
terminal.xterm.write(chunk.buffer, () => pendingWrites.value--); } } else { <ins> didWriteData = true; </ins> this.writeNotice(terminal, localize('runNoOutputForPast', 'Test output is only available for new test runs.')); }

Related discussion:
text: There's no separator line between the two components. !
Seeing the seperator: <img width="69" alt="image" src=""
Code change:
*--------------------------------------------------------------------------------------------*/ import { deepStrictEqual, doesNotThrow, equal, ok, strictEqual, throws } from 'assert'; <del> import { commands, ConfigurationTarget, Disposable, env, EnvironmentVariableMutator, EnvironmentVariableMutatorOptions, EnvironmentVariableMutatorType, EventEmitter, ExtensionContext, extensions, ExtensionTerminalOptions, GlobalEnvironmentVariableCollection, Pseudoterminal, Terminal, TerminalDimensions, TerminalExitReason, TerminalOptions, TerminalState, UIKind, Uri, window, workspace } from 'vscode'; </del> <ins> import { commands, ConfigurationTarget, Disposable, env, EnvironmentVariableMutator, EnvironmentVariableMutatorOptions, EnvironmentVariableMutatorType, EventEmitter, ExtensionContext, extensions, ExtensionTerminalOptions, Pseudoterminal, Terminal, TerminalDimensions, TerminalExitReason, TerminalOptions, TerminalState, UIKind, Uri, window, workspace } from 'vscode'; </ins> import { assertNoRpc, poll } from '../utils'; // Disable terminal tests:

Related discussion:
text: For example: Context:
As we anticipate we might need shell scoping as well in the future, use something similar to instead. Updated proposal: One issue with this is that carries optional properties. Hence an alternative could be:
The required would need to be removed when we a second one anyway, we can just treat and the same as
Sorry what do you mean by the "second one"? Mostly I was trying to follow : But I guess we don't have to strictly follow it?
by a second one I mean a second scope, we don't want the user to explicitly enumerate all the scopes to set it which would do.
Updated proposal:
Closing in favor of as these issues were only open to finalize proposed API.
Moving this out of June as it's a feature request.
I was expecting this so it's easier to understand for an API user:
That's what I had initially had , you're the one who recommended that perhaps we should put it inside itself:
API sync also seemed to be in agreement with that, but maybe we should check again.
my mistake, I forgot some of the conversations as this has gone through a few iterations
Based on discussion in API sync, we should probably deprecate existing API and merge it with the scoped one (similar to )
Assigning myself too so it's easier for me to track
When viewing contributions, is it possible to open the preview of the markdown directly instead of the file? ! as opposed to ! I can open preview using: !
since this is an advanced feature I think the raw markdown is more flexible as the user can navigate and copy section of it better. So I don't think this is a necessary change personally
Feedback before finalization: Add an interface implements Add to the Clarify how scoped interacts with the non-scoped collection Don't deprecate
Should we also call out how it's applied in addition to (and after) the global collection? Looks good otherwise
Sure, I have modified the docstrings to append it I plan to have the implementation ready but only merge and adopt it in Python extension next week to avoid multiple iterations.
Code change:
} let ariaLabel = this.ariaLabel; <del> if (!ariaLabel) { </del> <ins> // Only set aria label to the input box placeholder if we actually have an input box. if (!ariaLabel && visibilities.inputBox) { </ins> ariaLabel = this.placeholder || QuickPick.DEFAULT_ARIA_LABEL; // If we have a title, include it in the aria label. if (this.title) {

Related discussion:
text: cc: Type: <bBug</bSteps to reproduce: at least 2 files in VSCode. orca. ctrl+tab to switch to the next open file. In my environment orca announces something similar to the following: Is this the expected behavior? VS Code version: Code - Insiders 1.78.0-insider (, 2023-04-06T05:21:17.374Z) OS version: Linux x64 6.2.8-200.fc37.x8664 Modes: Sandboxed: Yes <details<summarySystem Info</summary </details<details<summaryExtensions (42)</summaryExtensionVersion ------ doxdocgen1.4.0 vscode-markdownlint0.49.0 vscode-eslint2.4.0 EditorConfig0.16.4 copilot1.79. rest-client0.25.1 better-cpp-syntax1.17.2 docomment1.0.0 azure-pipelines1.208.0 vscode-docker1.24.0 csharp1.25.4 vscode-dotnet-runtime1.6.0 vscode-kubernetes-tools1.3.11 remote-containers0.289.0 remote-ssh0.101. remote-ssh-edit0.84.0 azure-account0.11.3 cmake-tools1.13.45 cpptools1.15.1 cpptools-extension-pack1.3.0 makefile-tools0.6.0 powershell2023.3.3 remote-explorer0.5. vsliveshare1.0.5834 oracledevtools21.5.0 fabric8-analytics0.3.6 java1.17. vscode-xml0.25. vscode-yaml1.12.2 sonarlint-vscode3.16.0 cmake0.0.17 intellicode-api-usage-examples0.2.7 vscodeintellicode1.2.30 vscode-boot-dev-pack0.2.1 vscode-spring-boot1.45.0 vscode-java-debug0.49. vscode-java-dependency0.21. vscode-java-pack0.25. vscode-java-test0.38. vscode-maven0.41.
Code change:
} let ariaLabel = this.ariaLabel; <del> if (!ariaLabel) { </del> <ins> // Only set aria label to the input box placeholder if we actually have an input box. if (!ariaLabel && visibilities.inputBox) { </ins> ariaLabel = this.placeholder || QuickPick.DEFAULT_ARIA_LABEL; // If we have a title, include it in the aria label. if (this.title) {

Related discussion:
text: vscode-spring-boot-dashboard0.12.0 vscode-spring-initializr0.11.2 (1 theme extensions excluded) </details<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
This is happening because of the fix for I think it is behaving as designed, though will leave that with
That's a bit weird. Since experience does not visually render a placeholder. So I would not expect it gets read out.
Question is, should it say nothing, or is the aria-label for not correct and it should be ? I'm leaning "nothing" because otherwise they might have to hold down until the actual quick pick option highlighted is read out.
I have a fix out with the "nothing" idea... but would love to know what you folks think before I merge.
In version 1.77, when I press ctrl+tab, orca informs me that the focus has moved to a list box and the name of the next file is read. Imagining the following scenario: two files, a.js and b.js. start editing the a.js file. press ctlr+tab. My screen reader reads the following information: List Box, b.js. In my view this behavior would be sufficient.
It is fixed, thanks.
Code change:
extHost.dispose(); this._extHosts.delete(id); }); <ins> // See https://github.com/microsoft/vscode/issues/194477 // We have observed that sometimes the process sends an exit // event, but does not really exit and is stuck in an endless // loop. In these cases we kill the process forcefully after // a certain timeout. setTimeout(() => { try { process.kill(pid, 0); // will throw if the process doesn't exist anymore. this._logService.error(`Extension host with pid ${pid} still exists, forcefully killing it...`); process.kill(pid); } catch (er) { // ignore, as the process is already gone } }, 1000); </ins> }); return { id }; }

Related discussion:
text: over the last week I have seen zombie processes running at full CPU load when trying to debug them (via SIGUSR1) they die analysed a crash dump and sees that this is because the EH is already in the process of shutting down the previous point matches the observation that no window reports its EH as having crashed <img width="1290" alt="Screenshot 2023-09-29 at 13 31 34" src=""
Can you take a process sample from the OS activity monitor, I hope the native stack can give a clue to what is happening.
Just happening. This is the command line of such an EH
This the process sample
Not sure about the part. Does this mean we run the EH under development or not?
It looks like we set that for all local EH process launches. Just having inspect-port doesn't put the process in debug mode. What you can do is use the "Debug: Attach to Process" command and select that process. This will fail, since the debugger won't then know what port it's listening on (if --inspect-port isn't given in the args, it always listens on 9229, and js-debug assumes that is what happens). But, then you can . AFter doing so you could grab a performance profile using the edge/chrome devtools on edge://inspect, or by attaching to that using an attach-type launch config VS Code and using the "take performance profile" command -- if the spin sample you recorded above isn't enough for Deepak to figure out what's going on.
Does that use SIGUSR1? Asking cos I have tried that first and sending the signal kills the process. From the crash dumps we do know that the process already was shutting down
Attaching the symbolicated sample Going from the top, indicates the EH process is already in the shutdown phase and has started to destroy the . At this point, connecting via a debugger is not possible since the agent host will stop receiving connections due to the following , so we cannot get perf profile from these processes. Moving further down most of the sample time is spent in which the environment gets deleted, this flushes the pending tasks in the libuv event loop but one thing to note is that entering JS via these tasks is not allowed due to the . But there are GC tasks being executed and which can enter JS.
Code change:
extHost.dispose(); this._extHosts.delete(id); }); <ins> // See https://github.com/microsoft/vscode/issues/194477 // We have observed that sometimes the process sends an exit // event, but does not really exit and is stuck in an endless // loop. In these cases we kill the process forcefully after // a certain timeout. setTimeout(() => { try { process.kill(pid, 0); // will throw if the process doesn't exist anymore. this._logService.error(`Extension host with pid ${pid} still exists, forcefully killing it...`); process.kill(pid); } catch (er) { // ignore, as the process is already gone } }, 1000); </ins> }); return { id }; }

Related discussion:
text: I think the error calls ` are from these callsites eventually leading to . At this point, I expect the process to abort and the main process should be able to reap the utility process but that is not happening. There is another data point looking back at the screenshot from , the zombie EH processes are titled and not in the process explorer. We resolve the pids to respective titles based on a map maintained in the main process, the process explorer gets it periodically via the following and the utility process related values are populated from . We default to when the pid map no longer has an entry for the process which can only happen when got invoked which inturn suggests that the main process did receive an exit or crash signal from these EH hosts. can you check the main process logs next time if it has any of the following entries for the corresponding zombie EH pid to validate this data
I attempted to setup a similar flow based on the stack with base Electron app but the utility process are cleaned up as expected. I can make a change in the destruction phase of the utility process to signal termination of isolate so that tasks which require to enter JS will not do so and I hope that resolves the long running draintask. I won't be able to make a new insiders build with this change until I am back from vacation but I can provide a custom electron build for local testing with OSS. would that help to validate incase you face similar issue with OSS as well ?
Ah, my bad, skimmed over that part. Disregard. (Yes, it sends SIGUSR1 on unix)
I am seeing this for which is currently spinning forever. Samples for this one
i think i have the same issue on my mac. It happens from time to time and my workaround is simply killing vscode and then reopen it. But sometimes i don't realize it until my Mac has run out of battery, which can be quite annoying. <img width="963" alt="CleanShot 2023-10-09 at 19 46 49 src=""!
Having the exact same issue. utility-process is running at 100% all the time on M1 Max, very annoying.
This bug might also exist in Linux build of vscode: ! (6% 16 cores = 96%) Command line of "utility-process" is: eu-stack of main thread of this process: Noticed that is also inside sampling.
Code change:
extHost.dispose(); this._extHosts.delete(id); }); <ins> // See https://github.com/microsoft/vscode/issues/194477 // We have observed that sometimes the process sends an exit // event, but does not really exit and is stuck in an endless // loop. In these cases we kill the process forcefully after // a certain timeout. setTimeout(() => { try { process.kill(pid, 0); // will throw if the process doesn't exist anymore. this._logService.error(`Extension host with pid ${pid} still exists, forcefully killing it...`); process.kill(pid); } catch (er) { // ignore, as the process is already gone } }, 1000); </ins> }); return { id }; }

Related discussion:
text: Manually sampling with eu-stack running every second, for one minute. (And might related to and )
Sorry if I'm hijacking the thread but would uninstalling Node and installing Bun solve this problem? Doesn't sound like it's a VSCode bug, right?
Thanks for the logs , the stack does look related. I wouldn't be surprised if the issue is also present on Linux since the shutdown path is same for both.
Similar issue on my M1 Max, sometimes I observe even 3/4 zombie processes running in the background and have to kill them manually from process manager to stop them from draining battery. 2 more samples for such process:
Checked log and it looks weird. : However, PID still exists and is running at 100%.
Another hang process today with log: "Extension host with pid started" "Extension host with pid exiting with code 0" "Extension host with pid exited with code: 0, signal: unknown."
Is there any temp workaround? any script or bash command that we can run to identify and kill those pid? I am interested to do it manually, because i have a M2 and i am rebooting my macbook after some hours because get soooo slow
Restarting VS Code should already "fix" the problem because the extension host is a child process of the application. At least that does the job for me. Are you observing a different behavior? Note that "Reload Window" does not kill the zombie process (according to my observation).
Please help by posting the list of installed extensions. I am looking for similarities between our setups as this is possibly caused by an extension. This is my list To get this list run or . Please do the same and post your results here. Thanks
Thanks for looking into this! I am also facing this issue quite frequently. Here are my installed extensions:
Thanks everyone. Looks like the intersection is
code --list-extensions
Yep, I'm using those extensions too. Here's the full list:
is not a very good workaround: what if the process exits, but another innocent process just takes this PID?
It probably cannot do that as the pid is still taken? I agree it's not a great workaround, but until the root cause is clear it does solve the issue where a cpu is occupied.
Code change:
import { NotebookTextModel } from 'vs/workbench/contrib/notebook/common/model/notebookTextModel'; import { ICellDto2, INotebookEditorModel, INotebookLoadOptions, IResolvedNotebookEditorModel, NotebookCellsChangeType, NotebookData } from 'vs/workbench/contrib/notebook/common/notebookCommon'; import { INotebookSerializer, INotebookService, SimpleNotebookProviderInfo } from 'vs/workbench/contrib/notebook/common/notebookService'; <ins> import { ILifecycleService } from 'vs/workbench/services/lifecycle/common/lifecycle'; </ins> import { IFileWorkingCopyManager } from 'vs/workbench/services/workingCopy/common/fileWorkingCopyManager'; import { IStoredFileWorkingCopy, IStoredFileWorkingCopyModel, IStoredFileWorkingCopyModelContentChangedEvent, IStoredFileWorkingCopyModelFactory, IStoredFileWorkingCopySaveEvent, StoredFileWorkingCopyState } from 'vs/workbench/services/workingCopy/common/storedFileWorkingCopy'; import { IUntitledFileWorkingCopy, IUntitledFileWorkingCopyModel, IUntitledFileWorkingCopyModelContentChangedEvent, IUntitledFileWorkingCopyModelFactory } from 'vs/workbench/services/workingCopy/common/untitledFileWorkingCopy';

Related discussion:
text: off the hot exit and auto save settings an interactive window, run a cell vscode :bug: confirmation pop-up to save the IW