PowerShell / PowerShellEditorServices

A common platform for PowerShell development support in any editor or application!
MIT License
631 stars 215 forks source link

Unreasonably enormous memory usage with Kate on Windows since 3.8 #2063

Open alex-martin-img1 opened 1 year ago

alex-martin-img1 commented 1 year ago

Prerequisites

Steps to reproduce

I don't know what exactly triggers this and narrowing it down isn't easy, but here's some possible steps:

  1. Install Kate 23.08 on x64 Windows, using traditional installation.
  2. Unpack PowerShellEditorServices somewhere convenient.
  3. Create a PowerShell script like this:
    mkdir -ErrorAction SilentlyContinue $env:TEMP/pses-qdls
    & 'C:/PATH/TO/PSES/PowerShellEditorServices/Start-EditorServices.ps1' -BundledModulesPath C:/PATH/TO/PSES -LogPath $env:TEMP/pses-qdls/logs.log -SessionDetailsPath $env:TEMP/pses-qdls/session.json -FeatureFlags @() -AdditionalModules @() -HostName 'qdls' -HostProfileId 'qdls' -HostVersion 0.0.0 -Stdio -LogLevel Normal
  4. Enable Kate's LSP client: Toggle on Settings > Configure Kate > Plugins > LSP Client, then apply.
  5. Go to the Settings > Configure Kate > LSP Client > User Server Settings and add a block like this:
    {
       "servers": {
            "powershell": {
                "command": ["pwsh", "-NoLogo", "-NoProfile", "-Command", "$PSStyle.OutputRendering = 'PlainText'; & C:/PATH/TO/PowerShellLanguageServer.ps1"],
                "highlightingModeRegex": "^PowerShell$"
            }
       }
    }
  6. Open Task Manager and watch the memory usage of the pwsh process Kate spawns as you browse around a large PowerShell project. Make sure you have a build of the project on $PSModulePath so PSES sees its functions etc.

Expected behavior

Reasonable memory usage.

Actual behavior

Memory usage of multiple Gbytes after running for a few minutes.

Error details

No response

Environment data

PS$> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      7.3.6
PSEdition                      Core
GitCommitId                    7.3.6
OS                             Microsoft Windows 10.0.19043
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

Version

3.10.0, 3.9.0, 3.8.7; 3.7.3 not affected

Visuals

No response

alex-martin-img1 commented 1 year ago

Here's the contents of my global (non-project-specific) $PSModulePath.

alex-martin-img1 commented 1 year ago

I thought I had a suspect after fiddling around with setting a project root, but I can't seem to reproduce the issue with that setting off now, either. I'm thinking this might be nasty to try to repro.