microsoft / microsoft/vscode-cpptools
RAM usage skyrocketing when saving file with infinite recursive template function instantiation
Nessuno ha ancora preso questa issue.
- Lingua principale
- TypeScript
- Stelle
- 6.2k
- Fork
- 1.7k
- Merge medio
- 14h 46m
- PR unite (30g)
- 61
Descrizione
Environment
- OS and Version: Microsoft Windows 10 Pro - 10.0.19045 Build 19045
- VS Code Version: 1.75.1
- C/C++ Extension Version: v1.13.9
Bug Summary and Steps to Reproduce
Bug Summary:
RAM usage of process cpptools-srv.exe ("C/C++ IntelliSense Server for Visual Studio Code") quickly rises infinitely when saving a .cpp-file with the following code snippet:
template<typename... Args>
static constexpr auto fun()
{
return fun<Args..., void>();
}
static constexpr auto value = fun<>(); // (a)
Commenting out line (a) and saving prevents this only after killing the process manually.
Tested in otherwise empty project folder.
Steps to reproduce:
- Create a new folder
- Open folder in VS Code
- Create and save a
.cpp-file with the content shown above.
Configuration and Logs
-------- Diagnostics - 2/13/2023, 8:43:49 PM
Version: 1.13.9
Current Configuration:
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.22000.0",
"compilerPath": "E:/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.34.31933/bin/Hostx64/x64/cl.exe",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "windows-msvc-x64",
"intelliSenseModeIsExplicit": false,
"cStandardIsExplicit": false,
"cppStandardIsExplicit": false,
"mergeConfigurations": false,
"compilerPathIsExplicit": false,
"browse": {
"path": [
"${workspaceFolder}/**"
],
"limitSymbolsToIncludedHeaders": true
}
}
Translation Unit Mappings:
[ D:\Users\LukasK\Desktop\New folder\file.cpp ]:
D:\Users\LukasK\Desktop\New folder\file.cpp
Translation Unit Configurations:
[ D:\Users\LukasK\Desktop\New folder\file.cpp ]: not ready
Process ID: 14216
Memory Usage: 1561 MB
Compiler Path: E:\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\bin\Hostx64\x64\cl.exe
Includes:
E:\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.33.31629\include
E:\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include
E:\Windows Kits\10\Include\10.0.22000.0\um
E:\Windows Kits\10\Include\10.0.22000.0\ucrt
E:\Windows Kits\10\Include\10.0.22000.0\shared
E:\Windows Kits\10\Include\10.0.22000.0\winrt
E:\Windows Kits\10\Include\10.0.22000.0\cppwinrt
Defines:
_DEBUG
UNICODE
_UNICODE
Standard Version: ms_c++17
IntelliSense Mode: windows-msvc-x64
Other Flags:
--using_directory
E:\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.33.31629\lib\x86
--using_directory
E:\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.33.31629\lib\x86\store\references
--using_directory
E:\Windows Kits\10\UnionMetadata\10.0.22000.0
--using_directory
E:\Windows Kits\10\References\10.0.22000.0
--using_directory
C:\Windows\Microsoft.NET\Framework\v4.0.30319
Total Memory Usage: 1561 MB
------- Workspace parsing diagnostics -------
Number of files discovered (not excluded): 5072
Other Extensions
No response
Additional context
No response
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia riproducendo il caso di template ricorsivo fornito in un file .cpp salvato e monitora cpptools-srv.exe mentre IntelliSense lo elabora. Il payload non indica alcun file sorgente o test; il lavoro è completato quando il salvataggio del file non causa più una crescita illimitata della memoria né richiede di terminare manualmente il processo.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- cpp
- Ambito
- compilers, devtools
- Tipo di issue
- Bug
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 25/100