microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
164.66k stars 29.44k forks source link

Wrapping `prepareStackTrace` can cause slowdown and eventual stack overflow #184926

Closed thecrypticace closed 1 year ago

thecrypticace commented 1 year ago

Type: Performance Issue

Background

In PR #175339 a change was introduced to ensure that the custom prepareStackTrace handling doesn't disappear after re-assignment. The implementation of this is, however, prone to slowdowns and stack overflows.

For example, code that does the following results in double wrapping of the error handler:

let original = Error.prepareStackTrace;
Error.prepareStackTrace = (, stack) => stack;
let stack = new Error.stack();
Error.prepareStackTrace = original;

On the last line where prepareStackTrace is restored to the original handler the wrapping happens again. This effectively makes the code act as if it was defined like so:

let original_handler = Error.prepareStackTrace;

let handler_1 = function (error, stackTrace) {
    prepareStackTraceAndFindExtension(error, stackTrace);
    return orginal_handler(error, stackTrace);
};

Error.prepareStackTrace = function (error, stackTrace) {
    prepareStackTraceAndFindExtension(error, stackTrace);
    return handler_1(error, stackTrace);
};

With every single assignment/restoration the problem gets worse, almost as if the code was defined like so:

let current_handler = Error.prepareStackTrace;

for (let i = 0; i < 1000; ++i) {
    let old_handler = current_handler;
    current_handler function (error, stackTrace) {
        prepareStackTraceAndFindExtension(error, stackTrace);
        return old_handler(error, stackTrace);
    };
}

Error.prepareStackTrace = current_handler;

Over time when using extensions, saving files, formatting code, etc… this can result in tens of thousands of calls to prepareStackTraceAndFindExtension slowing down any code that uses new Error().stack. Eventually, the function nesting/stack will be so great as to cause a stack overflow. This can make the extension host unresponsive until it's explicitly restarted.

Real world impact

It's not uncommon for packages to use Error.prepareStackTrace in locating dependencies for files in addition to using it when displaying stack traces in code when compling TypeScript, ESM, etc… to regular JS on the fly.

For example, this happens a lot when using prettier-plugin-tailwindcss in conjunction with the Prettier extension for VS Code. The reason being is that:

  1. The extension loads Prettier plugins into the same "context" / process as the extension host.
  2. The prettier-plugin-tailwindcss plugin indirectly uses code that calls Error.prepareStackTrace whenever loading the config (through the use of jiti) as well as when clearing the existing cached config.

Disclaimer: I'm one of the maintainers of prettier-plugin-tailwindcss. Hi! :)

Proposal

I'd suggest attaching a unique Symbol to the wrapped function as a marker to detect wrapped error handlers. This would allow the code to bail early and only wrap functions as necessary.

Such a solution is definitely not perfect. For example the following code, if run repeatedly, will still cause wrapping that could eventually overflow the stack:

let original = Error.prepareStackTrace;
Error.prepareStackTrace = (...args) => {
    return do_something_else(original(...args));
};
let stack = new Error.stack;

But for the common case of get/set/restore the symbol approach would work out fine. I'm not 100% sold on this approach but it's the best I could some up with. If you have another solution I'd love to hear it!


VS Code version: Code 1.79.0 (b380da4ef1ee00e224a15c1d4d9793e27c2b6302, 2023-06-07T14:31:03.317Z) OS version: Darwin arm64 22.5.0 Modes:

System Info |Item|Value| |---|---| |CPUs|Apple M1 Max (10 x 24)| |GPU Status|2d_canvas: enabled
canvas_oop_rasterization: disabled_off
direct_rendering_display_compositor: disabled_off_ok
gpu_compositing: enabled
metal: disabled_off
multiple_raster_threads: enabled_on
opengl: enabled_on
rasterization: enabled
raw_draw: disabled_off_ok
video_decode: enabled
video_encode: enabled
vulkan: disabled_off
webgl: enabled
webgl2: enabled
webgpu: enabled| |Load (avg)|7, 5, 5| |Memory (System)|64.00GB (0.44GB free)| |Process Argv|--crash-reporter-id b79f983b-eaba-441e-a013-28ba051aba76| |Screen Reader|no| |VM|0%|
Process Info ``` CPU % Mem MB PID Process 18 197 39157 code main 5 66 39160 gpu-process 0 0 39162 utility-network-service 0 328 39163 window [1] (~/Desktop/todos.md — tailwindcss ●) 0 66 39287 ptyHost 51 131 39288 shared-process 0 66 39289 fileWatcher [1] 0 328 39290 extensionHost [1] 0 66 39349 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /Users/jordanpittman/.vscode/extensions/kisstkondoros.vscode-gutter-preview-0.30.0/dist/server.js --node-ipc --clientProcessId=39290) 0 66 39350 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /Users/jordanpittman/.vscode/extensions/redhat.vscode-yaml-1.13.0/dist/languageserver.js --node-ipc --clientProcessId=39290) 0 66 39351 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /Users/jordanpittman/.vscode/extensions/mtxr.sqltools-0.27.1/dist/languageserver.js --node-ipc --clientProcessId=39290) 0 393 39368 /Users/jordanpittman/.vscode/extensions/rust-lang.rust-analyzer-0.3.1541-darwin-arm64/server/rust-analyzer 0 0 39558 /Users/jordanpittman/.rustup/toolchains/nightly-aarch64-apple-darwin/libexec/rust-analyzer-proc-macro-srv 0 131 40101 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node --max-old-space-size=3072 /System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/node_modules/typescript/lib/tsserver.js --serverMode partialSemantic --useInferredProjectPerProjectRoot --disableAutomaticTypingAcquisition --cancellationPipeName /var/folders/vc/pgvvgs_j0sdc_zx10y_s0yxw0000gn/T/vscode-typescript501/ccc53a1ba9e5569ff679/tscancellation-bb3ec27ee1e77c9f9673.tmp* --globalPlugins @astrojs/ts-plugin,typescript-svelte-plugin,@vsintellicode/typescript-intellicode-plugin,ms-vsintellicode-typescript,typescript-vue-plugin-forward --pluginProbeLocations /Users/jordanpittman/.vscode/extensions/astro-build.astro-vscode-2.0.18-darwin-arm64,/Users/jordanpittman/.vscode/extensions/svelte.svelte-vscode-107.5.1,/Users/jordanpittman/.vscode/extensions/visualstudioexptteam.vscodeintellicode-1.2.30,/Users/jordanpittman/.vscode/extensions/visualstudioexptteam.vscodeintellicode-1.2.30,/Users/jordanpittman/.vscode/extensions/vue.vscode-typescript-vue-plugin-1.6.5 --locale en --noGetErrOnBackgroundUpdate --validateDefaultNpmLocation --useNodeIpc) 0 197 40102 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node --max-old-space-size=3072 /System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/node_modules/typescript/lib/tsserver.js --useInferredProjectPerProjectRoot --enableTelemetry --cancellationPipeName /var/folders/vc/pgvvgs_j0sdc_zx10y_s0yxw0000gn/T/vscode-typescript501/ccc53a1ba9e5569ff679/tscancellation-08a6056ed46ebe23ad5b.tmp* --globalPlugins @astrojs/ts-plugin,typescript-svelte-plugin,@vsintellicode/typescript-intellicode-plugin,ms-vsintellicode-typescript,typescript-vue-plugin-forward --pluginProbeLocations /Users/jordanpittman/.vscode/extensions/astro-build.astro-vscode-2.0.18-darwin-arm64,/Users/jordanpittman/.vscode/extensions/svelte.svelte-vscode-107.5.1,/Users/jordanpittman/.vscode/extensions/visualstudioexptteam.vscodeintellicode-1.2.30,/Users/jordanpittman/.vscode/extensions/visualstudioexptteam.vscodeintellicode-1.2.30,/Users/jordanpittman/.vscode/extensions/vue.vscode-typescript-vue-plugin-1.6.5 --locale en --noGetErrOnBackgroundUpdate --validateDefaultNpmLocation --useNodeIpc) 0 66 40115 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/node_modules/typescript/lib/typingsInstaller.js --globalTypingsCacheLocation /Users/jordanpittman/Library/Caches/typescript/5.1 --enableTelemetry --typesMapLocation /System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/node_modules/typescript/lib/typesMap.json --validateDefaultNpmLocation) 0 66 40104 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /Users/jordanpittman/.vscode/extensions/kisstkondoros.vscode-codemetrics-1.26.1/dist/server.js --node-ipc --clientProcessId=39290) 0 66 40105 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /Users/jordanpittman/.vscode/extensions/sburg.vscode-javascript-booster-14.0.1/dist/server/server.js --node-ipc --clientProcessId=39290) 0 66 40106 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /Users/jordanpittman/.vscode/extensions/statelyai.stately-vscode-1.14.3/dist/server.js --node-ipc --clientProcessId=39290) 0 66 40112 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /Users/jordanpittman/.vscode/extensions/visualstudioexptteam.intellicode-api-usage-examples-0.2.7/dist/server/server.js --node-ipc --clientProcessId=39290) 0 66 40113 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /Users/jordanpittman/.vscode/extensions/bradlc.vscode-tailwindcss-0.9.11/dist/tailwindServer.js --node-ipc --clientProcessId=39290) 0 131 43146 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /Users/jordanpittman/.vscode/extensions/vue.volar-1.6.4/server.js --node-ipc --clientProcessId=39290) 0 66 43147 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /Users/jordanpittman/.vscode/extensions/vue.volar-1.6.4/server.js --node-ipc --clientProcessId=39290) 0 66 43725 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/markdown-language-features/server/dist/node/workerMain --node-ipc --clientProcessId=39290) 100 524 44095 window [2] (~/Desktop/vscode-2.md — vscode) 0 66 44097 fileWatcher [2] 1 328 44098 extensionHost [2] 0 66 44136 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /Users/jordanpittman/.vscode/extensions/kisstkondoros.vscode-gutter-preview-0.30.0/dist/server.js --node-ipc --clientProcessId=44098) 0 66 44137 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /Users/jordanpittman/.vscode/extensions/redhat.vscode-yaml-1.13.0/dist/languageserver.js --node-ipc --clientProcessId=44098) 0 66 44138 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /Users/jordanpittman/.vscode/extensions/mtxr.sqltools-0.27.1/dist/languageserver.js --node-ipc --clientProcessId=44098) 0 1180 44149 /Users/jordanpittman/.vscode/extensions/rust-lang.rust-analyzer-0.3.1549-darwin-arm64/server/rust-analyzer 0 0 76882 /Users/jordanpittman/.rustup/toolchains/nightly-aarch64-apple-darwin/libexec/rust-analyzer-proc-macro-srv 0 852 45760 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /Users/jordanpittman/.vscode/extensions/vue.volar-1.6.4/server.js --node-ipc --clientProcessId=44098) 0 66 45761 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /Users/jordanpittman/.vscode/extensions/vue.volar-1.6.4/server.js --node-ipc --clientProcessId=44098) 0 131 45886 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node --max-old-space-size=3072 /System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/node_modules/typescript/lib/tsserver.js --serverMode partialSemantic --useInferredProjectPerProjectRoot --disableAutomaticTypingAcquisition --cancellationPipeName /var/folders/vc/pgvvgs_j0sdc_zx10y_s0yxw0000gn/T/vscode-typescript501/573789fec0787e914f6a/tscancellation-23c493e6d22cc806a047.tmp* --globalPlugins @astrojs/ts-plugin,typescript-svelte-plugin,@vsintellicode/typescript-intellicode-plugin,ms-vsintellicode-typescript,typescript-vue-plugin-forward --pluginProbeLocations /Users/jordanpittman/.vscode/extensions/astro-build.astro-vscode-2.0.18-darwin-arm64,/Users/jordanpittman/.vscode/extensions/svelte.svelte-vscode-107.5.1,/Users/jordanpittman/.vscode/extensions/visualstudioexptteam.vscodeintellicode-1.2.30,/Users/jordanpittman/.vscode/extensions/visualstudioexptteam.vscodeintellicode-1.2.30,/Users/jordanpittman/.vscode/extensions/vue.vscode-typescript-vue-plugin-1.6.5 --locale en --noGetErrOnBackgroundUpdate --validateDefaultNpmLocation --useNodeIpc) 0 852 45887 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node --max-old-space-size=3072 /System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/node_modules/typescript/lib/tsserver.js --useInferredProjectPerProjectRoot --enableTelemetry --cancellationPipeName /var/folders/vc/pgvvgs_j0sdc_zx10y_s0yxw0000gn/T/vscode-typescript501/573789fec0787e914f6a/tscancellation-ec78fc81c78e26529a6d.tmp* --globalPlugins @astrojs/ts-plugin,typescript-svelte-plugin,@vsintellicode/typescript-intellicode-plugin,ms-vsintellicode-typescript,typescript-vue-plugin-forward --pluginProbeLocations /Users/jordanpittman/.vscode/extensions/astro-build.astro-vscode-2.0.18-darwin-arm64,/Users/jordanpittman/.vscode/extensions/svelte.svelte-vscode-107.5.1,/Users/jordanpittman/.vscode/extensions/visualstudioexptteam.vscodeintellicode-1.2.30,/Users/jordanpittman/.vscode/extensions/visualstudioexptteam.vscodeintellicode-1.2.30,/Users/jordanpittman/.vscode/extensions/vue.vscode-typescript-vue-plugin-1.6.5 --locale en --noGetErrOnBackgroundUpdate --validateDefaultNpmLocation --useNodeIpc) 0 66 45899 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/node_modules/typescript/lib/typingsInstaller.js --globalTypingsCacheLocation /Users/jordanpittman/Library/Caches/typescript/5.1 --enableTelemetry --typesMapLocation /System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/node_modules/typescript/lib/typesMap.json --validateDefaultNpmLocation) 0 66 45888 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /Users/jordanpittman/.vscode/extensions/kisstkondoros.vscode-codemetrics-1.26.1/dist/server.js --node-ipc --clientProcessId=44098) 0 66 45889 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /Users/jordanpittman/.vscode/extensions/sburg.vscode-javascript-booster-14.0.1/dist/server/server.js --node-ipc --clientProcessId=44098) 0 66 45890 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /Users/jordanpittman/.vscode/extensions/statelyai.stately-vscode-1.14.3/dist/server.js --node-ipc --clientProcessId=44098) 0 66 45895 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /Users/jordanpittman/.vscode/extensions/visualstudioexptteam.intellicode-api-usage-examples-0.2.7/dist/server/server.js --node-ipc --clientProcessId=44098) 0 66 72893 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/json-language-features/server/dist/node/jsonServerMain --node-ipc --clientProcessId=44098) 0 66 73118 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/css-language-features/server/dist/node/cssServerMain --node-ipc --clientProcessId=44098) 0 66 77378 electron-nodejs (/System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin) --ms-enable-electron-run-as-node /System/Volumes/Data/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/markdown-language-features/server/dist/node/workerMain --node-ipc --clientProcessId=44098) 1 131 80166 window ```
Workspace Info ``` | Window (~/Desktop/vscode-2.md — vscode) | Window (~/Desktop/todos.md — tailwindcss ●) | Folder (vscode): 11766 files | File types: ts(4366) json(1007) o(848) timestamp(282) js(264) d(241) | css(238) rmeta(191) lock(106) vscodeignore(86) | Conf files: package.json(105) tsconfig.json(48) github-actions(23) | launch.json(20) tasks.json(13) settings.json(9) | dockerfile(2) devcontainer.json(2) gulp.js(2) | jsconfig.json(1) makefile(1) webpack.config.js(1) | Launch Configs: node(15) extensionHost(10) chrome(5) msedge(2) | Folder (tailwindcss): more than 22493 files | File types: o(7973) json(1385) timestamp(1117) d(1019) rmeta(862) | html(548) bin(490) svg(441) rlib(403) lock(176) | Conf files: package.json(22) github-actions(5) webpack.config.js(2) | launch.json(1) settings.json(1) | Launch Configs: lldb; ```
Extensions (157) Extension|Author (truncated)|Version ---|---|--- language-x86-64-assembly|13x|3.0.0 vscode-file-peek|abi|1.0.1 calculate|aca|2.1.0 vscode-base64|ada|0.1.0 vscode-caniuse|aka|0.5.4 hugofy|akm|0.1.1 copy-relative-path|ale|0.0.2 jest-snippets|and|1.9.1 vscode-color|ans|0.4.5 vscode-zipfs|arc|3.0.0 vscode-ast-explorer|ari|1.2.1 swagger-viewer|Arj|3.1.2 astro-vscode|ast|2.0.18 insertnumbers|Asu|0.9.1 vscode-mjml|att|1.6.0 amvim|aui|1.36.0 tailwind-docs|aus|2.0.0 vagrant|bbe|0.5.0 color-info|bie|0.7.2 markdown-mermaid|bie|1.18.1 vscode-intelephense-client|bme|1.9.5 mermaid-markdown-syntax-highlighting|bpr|1.5.2 htmltagwrap|bra|0.0.9 vscode-tailwindcss|bra|0.9.11 better-toml|bun|0.3.2 npm-intellisense|chr|1.4.4 path-intellisense|chr|2.8.4 glsl-canvas|cir|0.2.15 disableligatures|Coe|0.0.10 vscode-dash|dee|2.4.0 mjml-syntax|dig|0.0.1 gitlens|eam|13.6.0 permute-lines|ear|1.1.0 EditorConfig|Edi|0.16.4 json-tools|eri|1.0.2 prettier-vscode|esb|9.13.0 vscode-statusbar-debugger|fab|2.1.0 git-project-manager|fel|1.8.2 file-icons|fil|1.0.29 url-encode|fle|1.1.0 code-runner|for|0.12.0 docker-explorer|for|0.1.7 codespaces|Git|1.14.7 copilot|Git|1.88.132 vscode-codeql|Git|1.8.5 vscode-pull-request-github|Git|0.66.0 go|gol|0.38.0 gc-excelviewer|Gra|4.2.57 terraform|has|2.26.1 vscode-test-explorer|hbe|2.21.1 headwind|hey|1.7.0 vscode-power-mode|hoo|3.0.2 rest-client|hum|0.25.1 composer|ika|0.8.0 vscode-computercraft|Jac|1.1.1 yuml|Jai|3.5.1 elixir-ls|Jak|0.14.7 search-node-modules|jas|1.3.0 vscode-text-pastry|jkj|1.3.1 php-cs-fixer|jun|0.3.9 shopify-liquid-preview|kir|2.1.0 vscode-codemetrics|kis|1.26.1 vscode-gutter-preview|kis|0.30.0 graphql-for-vscode|kum|1.15.3 mjml-snippets|kvn|1.1.0 computercraft-extension-pack|lem|1.0.2 vscode-autohotkey-plus-plus|mar|3.3.0 rainbow-csv|mec|3.7.0 php-constructor|Meh|0.1.2 php-namespace-resolver|Meh|1.1.9 openapi-lint|mer|1.2.0 vscode-antlr4|mik|2.3.1 dotenv|mik|1.0.1 terraform-snippets|min|2.1.0 ecdc|mit|1.8.0 vscode-apache|mrm|1.2.0 vscode-duplicate|mrm|1.2.1 vscode-azureresourcegroups|ms-|0.7.5 vscode-docker|ms-|1.25.1 isort|ms-|2022.8.0 python|ms-|2023.10.0 vscode-pylance|ms-|2023.6.10 jupyter|ms-|2023.5.1001582324 jupyter-keymap|ms-|1.1.2 jupyter-renderers|ms-|1.0.15 vscode-jupyter-cell-tags|ms-|0.1.8 vscode-jupyter-slideshow|ms-|0.1.5 remote-containers|ms-|0.295.0 remote-ssh|ms-|0.102.0 remote-ssh-edit|ms-|0.86.0 remote-wsl|ms-|0.79.4 vscode-remote-extensionpack|ms-|0.24.0 azure-account|ms-|0.11.5 cpptools|ms-|1.15.4 hexeditor|ms-|1.9.11 remote-explorer|ms-|0.4.0 remote-server|ms-|1.2.1 test-adapter-converter|ms-|0.1.8 sqltools|mtx|0.27.1 php-docblocker|nei|2.7.0 language-liquid|nei|0.1.1 incrementor|nms|1.0.3 lsp-inspector-webview|oct|0.0.2 laravel-blade|one|1.34.0 laravel5-snippets|one|1.17.0 vscode-twoslash-queries|Ort|1.1.0 advanced-new-file|pat|1.2.2 polacode|pnp|0.3.4 prisma|Pri|4.15.0 goasm|qui|0.0.5 tcl|ras|0.1.0 java|red|1.19.0 vscode-commons|red|0.0.6 vscode-yaml|red|1.13.0 postcss|ric|2.0.0 nunjucks|ron|0.3.1 rust-analyzer|rus|0.3.1549 laravel-artisan|rya|0.0.31 partial-diff|ryu|1.4.3 vscode-javascript-booster|sbu|14.0.1 fortnite-vscode-theme|sdr|1.3.0 vue-vscode-extensionpack|sdr|0.2.0 vue-vscode-snippets|sdr|3.1.1 vscode-fileutils|sle|3.10.1 shader|sle|1.1.5 stately-vscode|sta|1.14.3 dot|Ste|0.0.1 lua|sum|3.6.21 svelte-vscode|sve|107.5.1 sass-indented|syl|1.8.26 language-stylus|sys|1.16.0 ayu|tea|1.0.5 vscode-status-bar-format-toggle|tom|3.1.1 vscode-input-sequence|tom|0.2.0 sort-lines|Tyr|1.10.1 vscode-mdx|uni|1.3.0 errorlens|use|3.11.1 vscode-lldb|vad|1.9.2 vscode-bnf|Val|0.0.1 intellicode-api-usage-examples|Vis|0.2.7 vscodeintellicode|Vis|1.2.30 gitdoc|vsl|0.1.0 vscode-mermaid-preview|vst|1.6.3 volar|Vue|1.6.4 vscode-typescript-vue-plugin|Vue|1.6.5 gitblame|wad|10.2.0 vscode-todo-highlight|way|1.0.5 twig|wha|1.0.2 change-case|wma|1.0.0 vscode-jumpy|wma|0.3.1 JavaScriptSnippets|xab|1.8.0 viml|Xad|2.2.0 php-debug|xde|1.32.1 vscode-mdx-preview|xyc|0.3.3 vscode-snippets-shopify-content-schema|You|1.3.1 markdown-all-in-one|yzh|3.5.1 vscode-caddyfile-syntax|zam|1.0.4 (11 theme extensions excluded)
A/B Experiments ``` vsliv368:30146709 vsreu685:30147344 python383cf:30185419 vspor879:30202332 vspor708:30202333 vspor363:30204092 vslsvsres303:30308271 vserr242cf:30382550 pythontb:30283811 vsjup518:30340749 pythonptprofiler:30281270 vsdfh931:30280409 vshan820:30294714 vstes263cf:30335440 vscod805:30301674 binariesv615:30325510 bridge0708:30335490 bridge0723:30353136 cmake_vspar411:30581797 vsaa593:30376534 pythonvs932:30410667 cppdebug:30492333 vsclangdf:30486550 c4g48928:30535728 dsvsc012cf:30540253 pynewext54:30695312 azure-dev_surveyonecf:30548226 2e4cg342:30602488 pyind779:30671433 f6dab269:30613381 pythonsymbol12:30671437 showlangstatbar:30737416 vsctsb:30748421 pythonms35:30701012 a2ce3375:30757347 24365598:30736109 pythonfmttext:30731395 pythoncmv:30756943 fixshowwlkth:30730052 hidesbindicator:30760978 pythongtdpath:30739704 i26e3531:30763805 dh2dc718:30763024 pythonnosmt12:30757131 ```
jrieken commented 1 year ago

@thecrypticace Thanks for this and the great analysis

hasokeric commented 1 year ago

I hope this solves all the slowness issues! You are a legend.

jrieken commented 1 year ago

This ships with 1.80.0-insiders. Anyone is invited to give this a try and report back if the fix does what we want it to do ;-)

Aanhane commented 1 year ago

I am running 1.79.1 and after your invite @jrieken , I've installed 1.80.0-insiders. Happy to report that for me at least, prettier-plugin-tailwindcss is not acting up and saves are consistently fast in the hour that I've used it so far. I've exported my React Profile 1:1 to the insider installation and loaded the same project that was giving issues. Staying on 1.80.0 because it was driving me nuts, so great job on this fix, it made my day 🎉 .

sumeetadur commented 1 year ago

Thanks @jrieken I've started using 1.80.0-insiders and the fix is working as expected 🤩