cmder icon indicating copy to clipboard operation
cmder copied to clipboard

[Bug] cmder loads very slowly under Windows

Open minstyle opened this issue 3 years ago • 168 comments

Version Information

Cmder version: v1.3.21 (1.3.20.151)
Clink: v1.4.11
git: version 2.39.1.windows.1
ConEmu: 221218 [64] Stable

Operating system: Windows 10 Pro 22H2 (Build 19045.2486)

Cmder Edition

Cmder Full (with Git)

Description of the issue

Since the latest Windows 10 update 22H2, it takes 30 seconds or more for cmder to load. It also takes this long when creating new tab windows in cmder. The problem exists with different Windows 10 computers at different work spaces and locations (private, work and Home Office).

How to reproduce

No response

Additional context

No response

Checklist

  • [X] I have read the documentation.
  • [X] I have searched for similar issues and found none that describe my issue.
  • [X] I have reproduced the issue on the latest version of Cmder.
  • [X] I am certain my issues are not related to ConEmu, Clink, or other third-party tools that Cmder uses.

minstyle avatar Jan 18 '23 09:01 minstyle

Same here!

Cmder version: v1.3.21 (1.3.20.151)
Clink: v1.4.10.45c041
git: version 2.39.0.windows.1
ConEmu: 221218 [64] Stable

Operating system: Windows 11 Pro 22H2 (Build 22621.1105)

mpitz avatar Jan 18 '23 09:01 mpitz

Hi, Same here , it takes 20 or more seconds with /f and close to 60 without /f . Also tried adding variable of git location , this improves startup for few seconds.

Elapsed Time: 0:0:22.87 (22.87s total)

Microsoft Windows [Version 10.0.19045.2251] - Windows 10 Pro 22H2 cmder 1.3.20.151

Lari0 avatar Jan 18 '23 22:01 Lari0

I am using Cmder 1.3.21 Mini version, with Windows 10 Pro 22H2 19045.2486, and it takes about 2 seconds to start.

I have git for Windows installed, and Cmder finds it successfully.

chrisant996 avatar Jan 19 '23 01:01 chrisant996

I can not duplicate this.

daxgames avatar Jan 19 '23 04:01 daxgames

I can not duplicate this.

Is there any thing we can do to help you to reproduce this?

WickedSilver avatar Jan 19 '23 08:01 WickedSilver

Don't know if it helps but starting Cmder I can see rotating cmd.exe and findstr.exe in the lower tab:

image

Happens on my Windows 10 Pro private PC and my Windows 11 Pro office PC. On the office PC the startup takes significant more time than on the Win 10 machine.

  • Win 10: 10 sec
  • Win 11: 30 sec

mpitz avatar Jan 19 '23 13:01 mpitz

@mpitz 10 seconds is too long. The difference between home and work pc does not surprise me at all. Work PCs are commonly reported as slower with Cmder.

daxgames avatar Jan 19 '23 13:01 daxgames

@daxgames maybe, but my work PCs has no extra firewall restrictions, I'am admin user. It's like a private PC.

mpitz avatar Jan 19 '23 13:01 mpitz

When I said I can not reproduce this I was in a hurry. The only Windows 10 I have tested on is version 10.0.19044 21H2.2486 and according to Windows Ulpdate is up to date.

I am running Windows 10 on a 8GB Virtualbox VM on an older I5 laptop with slow spindle HDD and even on this older system Cmder starts in 3.68 seconds.

I will try and find another system in my stack of old hardware and see what I have to try and reproduce but if I can't get the version you guys say the issue started at I'm not sure what to do.

daxgames avatar Jan 19 '23 14:01 daxgames

@mpitz I'm just telling you historical experience. It comes up a lot.

daxgames avatar Jan 19 '23 14:01 daxgames

Version mini and full at Microsoft Windows [Version 10.0.22621.1105] is very slow. It was checked on 128 GB RAM, 13700 CPU so hardware should will not be issue here. Older version on laptop is extremaly fast in comparision.

js-compilatrum avatar Jan 19 '23 16:01 js-compilatrum

Here are some ideas to try, to learn more about where the delay is coming from:

  • Try using Task Manager or Process Explorer to observe what processes are using CPU during the 10-30 second delay. For example, it might show that some antivirus system is spending a lot of CPU.
  • Try set PATH to check what the system path looks like. For example, if it has UNC paths in the system PATH then that will make network calls when searching to find executables, and that could introduce delays. Or there might be extra unexpected paths in the PATH that might slow things down.

chrisant996 avatar Jan 19 '23 19:01 chrisant996

Don't know if it helps but starting Cmder I can see rotating cmd.exe and findstr.exe in the lower tab:

image

Happens on my Windows 10 Pro private PC and my Windows 11 Pro office PC. On the office PC the startup takes significant more time than on the Win 10 machine.

  • Win 10: 10 sec
  • Win 11: 30 sec

Absolutely the same here for me on Win 10 with cmder mini. I also tried to observe Task manager, but nothing significant there... Any idea what could cause it?

Dzoukr avatar Jan 20 '23 10:01 Dzoukr

What does set PATH report? For this, please copy/paste the actual text, not a screenshot (screenshots are images, so the text is not accessible, and trying to transcribe it into actual text is a time-consuming and error-prone process).

I ask because I see multiple findstr calls in the .bat and .cmd scripts that are part of Cmder, and many of them involve trying to analyze the %PATH% variable. It could potentially be possible for certain content in the %PATH% to lead to various problems, so examining the %PATH% can be a constructive diagnostic step.

chrisant996 avatar Jan 20 '23 18:01 chrisant996

Same. I extracted cmder.zip on a fresh install of Win10 22H2, and it takes up to 50sec to start.

image

andrej-dyck avatar Jan 22 '23 09:01 andrej-dyck

  1. Found a system and got Windows 10 22H2 installed.
  2. Downloaded Cmder Full 1.3.21 from the cmder.app web site.
    • The version file in the archive says it is 1.3.20.151 and not 1.3.21. See #2818.
  3. I unziped and ran cmder.exe.
    • Launch speed seemed normal to me for a first launch.
    • Git for windows did its initial install thing.
  4. I added /t to the cmd::Cmder task, saved and relaunched. Had to do this twice for some reason???
  5. Cmder started in less than 2 seconds. image
  6. Hardware is an older Intel i7 with 512Gb SSD and 16 GB RAM.

I cannot reproduce this issue.

I would love to see the output of path commands as requested above.

daxgames avatar Jan 22 '23 15:01 daxgames

Here's some debug-output:

DEBUG(init.bat): Env Var - CMDER_ROOT=C:\<redacted-path>\Cmder

DEBUG(init.bat): Env Var - debug_output=1

DEBUG(init.bat): Looking for Git install root...

DEBUG(:read_version): Env Var - git_executable=C:\<redacted-path>\Cmder\vendor\git-for-windows\cmd\git.exe

DEBUG(:read_version): Env Var - GIT_VERSION_VENDORED=2.39.0.windows.1

DEBUG(:validate_version): ARGV[1]=VENDORED, ARGV[2]=2.39.0.windows.1

DEBUG(:parse_version): ARGV[1]=VENDORED, ARGV[2]=2.39.0.windows.1

DEBUG(:validate_version): Found Git Version for VENDORED: 2.39.0.windows.1

DEBUG(:read_version): Env Var - git_executable=C:\<redacted-path>\git-2.39.0\cmd\git.exe

DEBUG(:read_version): Env Var - GIT_VERSION_USER=2.39.0.windows.2

DEBUG(:get_user_git_version): get_user_git_version GIT_VERSION_USER: 2.39.0.windows.2

DEBUG(:validate_version): ARGV[1]=USER, ARGV[2]=2.39.0.windows.2

DEBUG(:parse_version): ARGV[1]=USER, ARGV[2]=2.39.0.windows.2

DEBUG(:validate_version): Found Git Version for USER: 2.39.0.windows.2

DEBUG(:compare_versions): Comparing:

DEBUG(:compare_versions): USER: 2.39.0.windows.2

DEBUG(:compare_versions): VENDORED: 2.39.0.windows.1

DEBUG(:compare_git_versions): campare versions_result: 1

DEBUG(init.bat): Using found Git '2.39.0.windows.2' from 'C:\<redacted-path>\git-2.39.0...

DEBUG(init.bat): Using Git from 'C:\<redacted-path>\git-2.39.0...

DEBUG(:enhance_path): Env Var INSIDE PATH C:\\<redacted-path>\\git-2.39.0\\cmd - found=1

DEBUG(:enhance_path): Env Var BEGIN PATH C:\\<redacted-path>\\git-2.39.0\\cmd - found=1

DEBUG(:enhance_path): Env Var INSIDE PATH C:\\<redacted-path>\\git-2.39.0\\mingw64\\bin - found=1

DEBUG(:enhance_path): Env Var END PATH C:\\<redacted-path>\\git-2.39.0\\mingw64\\bin - found=1

DEBUG(:enhance_path): Env Var INSIDE PATH C:\\<redacted-path>\\git-2.39.0\\usr\\bin - found=1

DEBUG(:enhance_path): Env Var END PATH C:\\<redacted-path>\\git-2.39.0\\usr\\bin - found=1

DEBUG(init.bat): Env Var - GIT_INSTALL_ROOT=C:\<redacted-path>\git-2.39.0

DEBUG(init.bat): Found Git in: 'C:\<redacted-path>\git-2.39.0'

DEBUG(:enhance_path): Env Var INSIDE PATH C:\\<redacted-path>\\Cmder\\vendor\\bin - found=0

DEBUG(:enhance_path): Env Var END PATH C:\\<redacted-path>\\Cmder\\vendor\\bin - found=0

DEBUG(:enhance_path): Appending 'C:\<redacted-path>\Cmder\vendor\bin'

DEBUG(:enhance_path): END Env Var - PATH=C:\<redacted-path>\Cmder\vendor\conemu-maximus5\ConEmu\Scripts;C:\<redacted-path>\Cmder\vendor\conemu-maximus5;C:\<redacted-path>\Cmder\vendor\conemu-maximus5\ConEmu;C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\wbin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files\dotnet\;C:\Program Files\Docker\Docker\resources\bin;;C:\<redacted-path>\git-2.39.0\bin;C:\<redacted-path>\git-2.39.0\cmd;C:\<redacted-path>\git-2.39.0\mingw64\bin;C:\<redacted-path>\git-2.39.0\usr\bin;C:\<redacted-path>\Gradle\gradle-7.6\bin;C:\<redacted-path>\Haskell\ghc-8.10.4\bin;C:\<redacted-path>\Java\jdk-17.0.2\bin;C:\<redacted-path>\JetBrains\scripts;C:\<redacted-path>\Kubernetes\bin;C:\<redacted-path>\Make\bin;C:\<redacted-path>\Maven\apache-maven-3.6.3\bin;C:\<redacted-path>\Node\node-18.13.0;C:\<redacted-path>\PHP\php-8.1.3;C:\<redacted-path>\PHP\composer;C:\<redacted-path>\Python\python-3.8.1;C:\<redacted-path>\Terraform;;C:\Users\<redacted>\AppData\Local\Microsoft\WindowsApps;C:\Users\<redacted>\.dotnet\tools;C:\<redacted-path>\Cmder\vendor\bin

DEBUG(:enhance_path): Env Var C:\\<redacted-path>\\Cmder\\vendor\\bin - found=1

DEBUG(:enhance_path_recursive): Env Var - add_path=

DEBUG(:enhance_path_recursive): Env Var - position=append

DEBUG(:enhance_path_recursive): Env Var - depth=0

DEBUG(:enhance_path_recursive): Env Var - max_depth=1

DEBUG(:enhance_path): Env Var INSIDE PATH C:\\<redacted-path>\\Cmder - found=0

DEBUG(:enhance_path): Env Var END PATH C:\\<redacted-path>\\Cmder - found=0

DEBUG(:enhance_path): Appending 'C:\<redacted-path>\Cmder'

DEBUG(:enhance_path): END Env Var - PATH=C:\<redacted-path>\Cmder\vendor\conemu-maximus5\ConEmu\Scripts;C:\<redacted-path>\Cmder\vendor\conemu-maximus5;C:\<redacted-path>\Cmder\vendor\conemu-maximus5\ConEmu;C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\wbin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files\dotnet\;C:\Program Files\Docker\Docker\resources\bin;;C:\<redacted-path>\git-2.39.0\bin;C:\<redacted-path>\git-2.39.0\cmd;C:\<redacted-path>\git-2.39.0\mingw64\bin;C:\<redacted-path>\git-2.39.0\usr\bin;C:\<redacted-path>\Gradle\gradle-7.6\bin;C:\<redacted-path>\Haskell\ghc-8.10.4\bin;C:\<redacted-path>\Java\jdk-17.0.2\bin;C:\<redacted-path>\JetBrains\scripts;C:\<redacted-path>\Kubernetes\bin;C:\<redacted-path>\Make\bin;C:\<redacted-path>\Maven\apache-maven-3.6.3\bin;C:\<redacted-path>\Node\node-18.13.0;C:\<redacted-path>\PHP\php-8.1.3;C:\<redacted-path>\PHP\composer;C:\<redacted-path>\Python\python-3.8.1;C:\<redacted-path>\Terraform;;C:\Users\<redacted>\AppData\Local\Microsoft\WindowsApps;C:\Users\<redacted>\.dotnet\tools;C:\<redacted-path>\Cmder\vendor\bin;C:\<redacted-path>\Cmder

DEBUG(:enhance_path): Env Var C:\\<redacted-path>\\Cmder - found=1

DEBUG(init.bat): Env Var - HOME=C:\Users\<redacted>

DEBUG(init.bat): Calling - C:\<redacted-path>\Cmder\config\user_profile.cmd

Elapsed Time: 0:0:45.32 (45.32s total)

andrej-dyck avatar Jan 22 '23 18:01 andrej-dyck

Note that this behavior I had first experiened on Windows 10 22H1 when I updated Cmder from an older version. I don't know which version I had before, but with that, the startup-time was 1-2sec.

andrej-dyck avatar Jan 22 '23 18:01 andrej-dyck

Same problem here when I started Cmder today after I haven't used it for 2-3 weeks:

2023-01-22_19-49-34

Output of set PATH:

Path=E:\Tools\Cmder\vendor\git-for-windows\cmd;E:\Tools\Cmder\vendor\conemu-maximus5\ConEmu\Scripts;E:\Tools\Cmder\vendor\conemu-maximus5;E:\Tools\Cmder\vendor\conemu-maximus5\ConEmu;C:\Program Files\Java\jdk1.8.0_361\bin;C:\Program Files\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;E:\Tools\Alacritty;E:\Tools\apache-ant-1.10.5\bin;C:\Users\*MyUsername*\AppData\Local\bin\NASM;D:\Program Files\CMake\bin;E:\Programme\Video\Konvertieren\FFmpeg;E:\Programme\Dokumente\AtomPortable\Tools\Node.js;E:\Tools\Cmder\vendor\git-for-windows\usr\bin;E:\Tools\Cmder\vendor\git-for-windows\bin;E:\Tools\Cmder;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Crucial\Crucial Storage Executive;C:\Program Files\dotnet\;C:\Program Files\gs\gs9.56.1\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Users\*MyUsername*\.cargo\bin;E:\Program Files\Python\Python37\Scripts\;E:\Program Files\Python\Python37\;C:\Users\*MyUsername*\AppData\Local\Microsoft\WindowsApps;E:\Tools\Cmder\vendor\git-for-windows\mingw64\bin;E:\Tools\Cmder\vendor\bin
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
path_position=append

d4k0 avatar Jan 22 '23 18:01 d4k0

@d4k0 While this probably isn't responsible for the delay, that PATH variable has several duplicates:

  • 3 copies of c:\windows
  • 3 copies of c:\windows\system32
  • 2 copies of c:\windows\system32\openssh
  • 3 copies of c:\windows\system32\wbem
  • 3 copies of c:\windows\system32\windowspowershell\v1.0

Repeated directories can slow down launching programs, by searching the directories multiple times. Cleaning up the variable might be generally useful, but the duplicate directories probably aren't causing 40 seconds of slowdown, so the cause is probably something else yet to be discovered.

In the meantime, if you clean that up, make a backup copy of the contents of the PATH variable first, so that it can be restored if something goes wrong while cleaning it up.

chrisant996 avatar Jan 22 '23 19:01 chrisant996

Can someone try downgrading to an older version of Cmder or ConEmu, and see if the problem goes away?

If downgrading ConEmu resolves the problem, then the issue is likely something in ConEmu, not Cmder.

If downgrading ConEmu doesn't resolve the problem, but downgrading Cmder resolves the problem, then there would be a possibility that the issue might be due to some recent change in the Cmder scripts.

chrisant996 avatar Jan 22 '23 19:01 chrisant996

I'll try it tomorrow. 👍

andrej-dyck avatar Jan 22 '23 19:01 andrej-dyck

@DRSDavidSoft @daxgames cmder init debug logging can show elapsed time of the whole init. Is there a way to see times along the way, to help identify where delays occur?

chrisant996 avatar Jan 22 '23 19:01 chrisant996

@andrej-dyck is there really something in your path worth redacting?

daxgames avatar Jan 22 '23 19:01 daxgames

@andrej-dyck is there really something in your path worth redacting?

Yes. But all paths only use the English letters and some use a space in-between words.

andrej-dyck avatar Jan 22 '23 19:01 andrej-dyck

@chrisant996 not currently

daxgames avatar Jan 22 '23 19:01 daxgames

@chrisant996 I have an older version of mini that i haven't updated in a while and that used to work fine(1.3.16.1035 with conemu 210912). Problem manifests same as with a freshly downloaded version.

@daxgames I've cleaned my path and that didn't help, so that's not it. I'm also unable to replicate this in a fresh VM with an up to date W10. Tricky. I was going to ask the same as @chrisant996 about a timestamped log file...

Hlsgs avatar Jan 22 '23 20:01 Hlsgs

Looking at what it would take to add timestamps to the log.can't guarantee anything. My Bengals are playing and I am watching that. GO BENGALS - WOD-DEY!

296951 avatar Jan 22 '23 20:01 296951

@Hlsgs Slowness is USUALLY something on the host that is inspecting every API call, usually some Antivirus or Data Loss Prevention security tool. We see this mostly on corporate managed systems.

296951 avatar Jan 22 '23 20:01 296951

Has anyone tried using /f on the Conemu task?

296951 avatar Jan 22 '23 20:01 296951