PowerShell / PowerShellEditorServices

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

Memory leak until the system freezes #2171

Open DarkLite1 opened 2 months ago

DarkLite1 commented 2 months ago

Prerequisites

Summary

Every time the extension "PowerShell v2024.3.2 (pre-release)" is enabled, the memory usage goes up until the system freezes. When disabling the extension, there is no issue. Same issue with the release version "Powershell 2024.2.2".

Also reported here.

PowerShell Version

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

Editor Version

vs code 1.92.1
eaa41d57266683296de7d118f574d0c2652e1fc4
x64

Name             : ConsoleHost
Version          : 7.4.4
InstanceId       : b1eb55a6-5f37-4759-bc50-59721354e6d5
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : en-US
CurrentUICulture : en-US
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerEnabled  : True
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

PowerShell Editor Services Version

The one built-in to "PowerShell v2024.3.2 (pre-release)" and "Powershell 2024.2.2".

Steps to Reproduce

Every time the extension "PowerShell v2024.3.2 (pre-release)" is enabled, the memory usage goes up until the system freezes. When disabling the extension, there is no issue. Same issue with the release version "Powershell 2024.2.2".

Simply enable the extension, open VS Code and wait for the RAM to be fully consumed. No coding required.

Visuals

Screenshot 2024-08-14 090503 Screenshot 2024-08-14 085556 Screenshot 2024-08-14 085522 Screenshot 2024-08-14 085436 Screenshot 2024-08-14 085401 Screenshot 2024-08-14 085357

Logs

1723619554-68a1cfd5-1a3e-43e5-9fc4-7e8fa8a133561723619552104.zip

andyleejordan commented 2 months ago

Hi, can you try setting "enable script analysis on open files only" and let me know if it's still reproduces? We often see a large memory increase like this when a user has opened a folder that contains many thousands of PowerShell scripts (such as your home folder) and the default setting to analyze them all just takes a lot of memory.

DarkLite1 commented 2 months ago

Thank you @andyleejordan , that seems to solve the issue. Very annoying... Thx for the workaround.

I'll leave this one open as I think this should never happen, a freezing system because of a setting that is not set.

andyleejordan commented 2 months ago

@SydneyhSmith @SeeminglyScience what do we think about changing this setting to be enabled by default? I think it would fix more issues than it would cause.

SydneyhSmith commented 2 months ago

I would be interested to test that out in preview and see if there is unexpected behavior

JustinGrote commented 2 months ago

My two cents would be to not make it default behavior, but have an upper limit of files being analyzed where it pops up a warning and offers to turn off the setting, the upper limit being another setting thats configurable, maybe start at 500 or something.

DarkLite1 commented 2 months ago

My two cents would be to not make it default behavior, but have an upper limit of files being analyzed where it pops up a warning and offers to turn off the setting, the upper limit being another setting thats configurable, maybe start at 500 or something.

Or simply check the memory consumption once in a while for pwsh.exe process launched by the extension. If it goes above 2 GB, something is definitely wrong.

JustinGrote commented 2 months ago

My two cents would be to not make it default behavior, but have an upper limit of files being analyzed where it pops up a warning and offers to turn off the setting, the upper limit being another setting thats configurable, maybe start at 500 or something.

Or simply check the memory consumption once in a while for pwsh.exe process launched by the extension. If it goes above 2 GB, something is definitely wrong.

Not necessarily, since scripts run in there and the REPL runs in there, I could very well be running a script that consumes 2GB, the extension process is not used simply for extension purposes (though we often wish it would, this is necessary to provide ISE-like behavior)

andyleejordan commented 2 months ago

My two cents would be to not make it default behavior, but have an upper limit of files being analyzed where it pops up a warning and offers to turn off the setting, the upper limit being another setting thats configurable, maybe start at 500 or something.

You know, I would happily accept a PR for this 🤠

JustinGrote commented 2 months ago

@andyleejordan I'll put it on the very long to-do list :)