Skip to content

[Bug] Build and Configure save preset but sometimes do not recognize unsaved changes #4502

Open
@AdamBartosCodasip

Description

@AdamBartosCodasip

Brief Issue Summary

  1. Create a project with presets.json like this:
//Included.json
{
    "version": 4,
    "configurePresets": [
        {
            "name": "included",
            "hidden": true,
            "cacheVariables": {
                "MY_VAR": "boo"
            }
        }
    ]
}
//CMakePresets.json
{
    "version":4,
    "include": [
        "./Included.json"
    ],
    "configurePresets": [
        {            
            "inherits": [
                "included"
            ],
            "name": "_main",
            "hidden": true,
            "generator": "Ninja",
            "binaryDir": "build/debug",
            "cacheVariables": {
                "CMAKE_C_FLAGS": "-O0 -g0"
            }
        }
    ]
}
//CMakeUserPresets.json
{
    "version": 4,
    "configurePresets": [
        {
            "name": "main",
            "inherits": [
                "_main"
            ],
            ...
        }
    ]
}

  1. Build
  2. Change MY_VAR value in Included.json but do not save file
  3. Build again

The file is saved, and MY_VAR sometimes has a new value, but sometimes the old value stays.
You can see it in the console or in the CMakeCache.txt

It is probably because the watcher created in presetsController.ts watchPresetsChange was too slow to expand the preset.

CMake Tools Diagnostics

"os": "linux",
  "vscodeVersion": "1.101.2",
  "cmtVersion": "1.21.35",
  "configurations": [
    {
      "folder": "/home/codasip.com/adam.bartos/codasip/workspaces/11.3.3/base-codasip_urisc",
      "cmakeVersion": "3.29.5",
      "configured": true,
      "generator": "Ninja",
      "usesPresets": true,
      "compilers": {}
    }
  ],
  "cpptoolsIntegration": {
    "isReady": false,
    "hasCodeModel": false,
    "activeBuildType": "",
    "buildTypesSeen": [],
    "requests": [],
    "responses": [],
    "partialMatches": [],
    "targetCount": 0,
    "executablesCount": 0,
    "librariesCount": 0,
    "targets": []
  },
  "settings": [
    {
      "communicationMode": "automatic",
      "useCMakePresets": "auto",
      "configureOnOpen": true
    }
  ]
}

Debug Log

[main] Configuring project: base-codasip_urisc 
[main] Saving open files before configure/build
[presetController] Reading presets file /home/codasip.com/adam.bartos/codasip/workspaces/11.3.3/base-codasip_urisc/cmakebug/CMakePresets.json
[presetController] Reading and validating the presets file "/home/codasip.com/adam.bartos/codasip/workspaces/11.3.3/base-codasip_urisc/cmakebug/CMakePresets.json"
[presetController] Successfully validated /home/codasip.com/adam.bartos/codasip/workspaces/11.3.3/base-codasip_urisc/cmakebug/CMakePresets.json against presets schema
[presetController] Reading presets file /home/codasip.com/adam.bartos/codasip/workspaces/11.3.3/base-codasip_urisc/cmakebug/Included.json
[presetController] Reading and validating the presets file "/home/codasip.com/adam.bartos/codasip/workspaces/11.3.3/base-codasip_urisc/cmakebug/Included.json"
[presetController] Successfully validated /home/codasip.com/adam.bartos/codasip/workspaces/11.3.3/base-codasip_urisc/cmakebug/Included.json against presets schema
[presetController] Expanding presets file /home/codasip.com/adam.bartos/codasip/workspaces/11.3.3/base-codasip_urisc/cmakebug/CMakePresets.json
[preset] Configure preset included: No binaryDir specified, using default value "${sourceDir}/out/build/${presetName}"
[expand] expanded ${sourceDir}/out/build/${presetName}
[presetController] Successfully expanded presets file /home/codasip.com/adam.bartos/codasip/workspaces/11.3.3/base-codasip_urisc/cmakebug/CMakePresets.json
[presetController] Reading presets file /home/codasip.com/adam.bartos/codasip/workspaces/11.3.3/base-codasip_urisc/cmakebug/CMakeUserPresets.json
[driver] Start configure 
[driver] Running pre-configure checks and steps
[presetController] Reading and validating the presets file "/home/codasip.com/adam.bartos/codasip/workspaces/11.3.3/base-codasip_urisc/cmakebug/CMakeUserPresets.json"
[presetController] Successfully validated /home/codasip.com/adam.bartos/codasip/workspaces/11.3.3/base-codasip_urisc/cmakebug/CMakeUserPresets.json against presets schema
[presetController] Expanding presets file /home/codasip.com/adam.bartos/codasip/workspaces/11.3.3/base-codasip_urisc/cmakebug/CMakeUserPresets.json
[presetController] Successfully expanded presets file /home/codasip.com/adam.bartos/codasip/workspaces/11.3.3/base-codasip_urisc/cmakebug/CMakeUserPresets.json
[main] Resolving the selected configure preset
[main] Loading new configure preset into CMake driver
[driver] Switching to configure preset: main
[driver] CMakeDriver configure preset set to main
[cmakefileapi-driver] Configuring using preset
[cmakefileapi-driver] Invoking CMake /home/codasip.com/adam.bartos/Downloads/tools-rhel8/contrib/bin/cmake with arguments ["-DCMAKE_MAKE_PROGRAM=/home/codasip.com/adam.bartos/Downloads/tools-rhel8/contrib/bin/ninja","-DCMAKE_C_FLAGS=-O0 -g0","-DMY_VAR=boo","-DCMAKE_TOOLCHAIN_FILE=/home/codasip.com/adam.bartos/codasip/ide-vscode/artifacts/.artifacts/prebuilt_sdks/769eeed433e1336cd0fd2877584998e8ae945bf6/cmake/codasip_urisc-toolchain.cmake","-S","/home/codasip.com/adam.bartos/codasip/workspaces/11.3.3/base-codasip_urisc/cmakebug","-B","/home/codasip.com/adam.bartos/codasip/workspaces/11.3.3/base-codasip_urisc/cmakebug/build/debug","-G","Ninja"]
[proc] Executing command: /home/codasip.com/adam.bartos/Downloads/tools-rhel8/contrib/bin/cmake -DCMAKE_MAKE_PROGRAM=/home/codasip.com/adam.bartos/Downloads/tools-rhel8/contrib/bin/ninja "-DCMAKE_C_FLAGS=-O0 -g0" -DMY_VAR=boo -DCMAKE_TOOLCHAIN_FILE=/home/codasip.com/adam.bartos/codasip/ide-vscode/artifacts/.artifacts/prebuilt_sdks/769eeed433e1336cd0fd2877584998e8ae945bf6/cmake/codasip_urisc-toolchain.cmake -S /home/codasip.com/adam.bartos/codasip/workspaces/11.3.3/base-codasip_urisc/cmakebug -B /home/codasip.com/adam.bartos/codasip/workspaces/11.3.3/base-codasip_urisc/cmakebug/build/debug -G Ninja
[proc]   with environment: {"ARTIFACTORY_ACCESS_TOKEN":"<>","ARTIFACTORY_BASEURL":"https://artifactory.codasip.com/artifactory","BASHRC_PROFILE_DONE":"1","BASH_FUNC_ml%%":"() {  module ml \"$@\"\n}","BASH_FUNC_module%%":"() {  unset _mlshdbg;\n if [ \"${MODULES_SILENT_SHELL_DEBUG:-0}\" = '1' ]; then\n case \"$-\" in \n *v*x*)\n set +vx;\n _mlshdbg='vx'\n ;;\n *v*)\n set +v;\n _mlshdbg='v'\n ;;\n *x*)\n set +x;\n _mlshdbg='x'\n ;;\n *)\n _mlshdbg=''\n ;;\n esac;\n fi;\n unset _mlre _mlIFS;\n if [ -n \"${IFS+x}\" ]; then\n _mlIFS=$IFS;\n fi;\n IFS=' ';\n for _mlv in ${MODULES_RUN_QUARANTINE:-};\n do\n if [ \"${_mlv}\" = \"${_mlv##*[!A-Za-z0-9_]}\" -a \"${_mlv}\" = \"${_mlv#[0-9]}\" ]; then\n if [ -n \"`eval 'echo ${'$_mlv'+x}'`\" ]; then\n _mlre=\"${_mlre:-}${_mlv}_modquar='`eval 'echo ${'$_mlv'}'`' \";\n fi;\n _mlrv=\"MODULES_RUNENV_${_mlv}\";\n _mlre=\"${_mlre:-}${_mlv}='`eval 'echo ${'$_mlrv':-}'`' \";\n fi;\n done;\n if [ -n \"${_mlre:-}\" ]; then\n eval `eval ${_mlre} /usr/bin/tclsh /usr/share/Modules/libexec/modulecmd.tcl bash '\"$@\"'`;\n else\n eval `/usr/bin/tclsh /usr/share/Modules/libexec/modulecmd.tcl bash \"$@\"`;\n fi;\n _mlstatus=$?;\n if [ -n \"${_mlIFS+x}\" ]; then\n IFS=$_mlIFS;\n else\n unset IFS;\n fi;\n unset _mlre _mlv _mlrv _mlIFS;\n if [ -n \"${_mlshdbg:-}\" ]; then\n set -$_mlshdbg;\n fi;\n unset _mlshdbg;\n return $_mlstatus\n}","BASH_FUNC_scl%%":"() {  if [ \"$1\" = \"load\" -o \"$1\" = \"unload\" ]; then\n eval \"module $@\";\n else\n /usr/bin/scl \"$@\";\n fi\n}","BASH_FUNC_switchml%%":"() {  typeset swfound=1;\n if [ \"${MODULES_USE_COMPAT_VERSION:-0}\" = '1' ]; then\n typeset swname='main';\n if [ -e /usr/share/Modules/libexec/modulecmd.tcl ]; then\n typeset swfound=0;\n unset MODULES_USE_COMPAT_VERSION;\n fi;\n else\n typeset swname='compatibility';\n if [ -e /usr/share/Modules/libexec/modulecmd-compat ]; then\n typeset swfound=0;\n MODULES_USE_COMPAT_VERSION=1;\n export MODULES_USE_COMPAT_VERSION;\n fi;\n fi;\n if [ $swfound -eq 0 ]; then\n echo \"Switching to Modules $swname version\";\n source /usr/share/Modules/init/bash;\n else\n echo \"Cannot switch to Modules $swname version, command not found\";\n return 1;\n fi\n}","BASH_FUNC_which%%":"() {  ( alias;\n eval ${which_declare} ) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot $@\n}","CHROME_DESKTOP":"code.desktop","DBUS_SESSION_BUS_ADDRESS":"unix:path=/run/user/529201136/bus","DESKTOP_SESSION":"plasma","DISPLAY":":0","GDK_BACKEND":"x11","GDK_CORE_DEVICE_EVENTS":"1","GDMSESSION":"plasma","GDM_LANG":"en_US.UTF-8","GITLAB_ACCESS_TOKEN":"","GTK2_RC_FILES":"/etc/gtk-2.0/gtkrc:/home/codasip.com/adam.bartos/.gtkrc-2.0:/home/codasip.com/adam.bartos/.gtkrc-2.0-kde4:/home/codasip.com/adam.bartos/.config/gtkrc-2.0","GTK_RC_FILES":"/etc/gtk/gtkrc:/home/codasip.com/adam.bartos/.gtkrc:/home/codasip.com/adam.bartos/.config/gtkrc","HISTCONTROL":"ignoredups","HISTSIZE":"1000","HOME":"/home/codasip.com/adam.bartos","HOSTNAME":"nb227.user.codasip.com","JAVA_HOME":"/home/codasip.com/adam.bartos/Desktop/adam.bartos/codasip/jdk-11.0.15+10-jre/","KDEDIRS":"/usr","KDE_APPLICATIONS_AS_SCOPE":"1","KDE_FULL_SESSION":"true","KDE_SESSION_UID":"529201136","KDE_SESSION_VERSION":"5","KRB5CCNAME":"KEYRING:persistent:529201136","LANG":"en_US.UTF-8","LESSOPEN":"||/usr/bin/lesspipe.sh %s","LMX_LICENSE_PATH":"license-server.codasip.com%6200","LM_LICENSE_FILE":"1717@licenses01.codasip.com,1717@licenses02.codasip.com,1717@licenses03.codasip.com","LOGNAME":"adam.bartos","MAIL":"/var/spool/mail/adam.bartos","MANPATH":"/home/codasip.com/adam.bartos/.nvm/versions/node/v16.17.1/share/man::","MOCHA_RUN_TIMEOUT":"3h","MODULEPATH":"/etc/scl/modulefiles:/usr/share/Modules/modulefiles:/etc/modulefiles:/usr/share/modulefiles","MODULEPATH_modshare":"/usr/share/Modules/modulefiles:2:/etc/modulefiles:2:/usr/share/modulefiles:2","MODULESHOME":"/usr/share/Modules","MODULES_CMD":"/usr/share/Modules/libexec/modulecmd.tcl","MODULES_RUN_QUARANTINE":"LD_LIBRARY_PATH LD_PRELOAD","NO_AT_BRIDGE":"1","NVM_BIN":"/home/codasip.com/adam.bartos/.nvm/versions/node/v16.17.1/bin","NVM_DIR":"/home/codasip.com/adam.bartos/.nvm","NVM_INC":"/home/codasip.com/adam.bartos/.nvm/versions/node/v16.17.1/include/node","ORIGINAL_XDG_CURRENT_DESKTOP":"KDE","PATH":"/home/codasip.com/adam.bartos/.nvm/versions/node/v16.17.1/bin:/home/codasip.com/adam.bartos/questasim_10.6g/questasim/bin/:/home/codasip.com/adam.bartos/questasim_10.6g/bin/:/usr/local/bin:/home/codasip.com/adam.bartos/.local/bin:/home/codasip.com/adam.bartos/bin:/usr/share/Modules/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin","PWD":"/home/codasip.com/adam.bartos","QT_AUTO_SCREEN_SCALE_FACTOR":"0","SESSION_MANAGER":"local/unix:@/tmp/.ICE-unix/5097,unix/unix:/tmp/.ICE-unix/5097","SHELL":"/bin/bash","SHLVL":"1","SSH_AGENT_PID":"4669","SSH_ASKPASS":"/usr/bin/ksshaskpass","SSH_AUTH_SOCK":"/tmp/ssh-kZ83qCbbbOEL/agent.4620","USER":"adam.bartos","USERNAME":"adam.bartos","VSCODE_CODE_CACHE_PATH":"/home/codasip.com/adam.bartos/.config/Code/CachedData/2901c5ac6db8a986a5666c3af51ff804d05af0d4","VSCODE_CRASH_REPORTER_PROCESS_TYPE":"extensionHost","VSCODE_CWD":"/home/codasip.com/adam.bartos","VSCODE_ESM_ENTRYPOINT":"vs/workbench/api/node/extensionHostProcess","VSCODE_HANDLES_UNCAUGHT_ERRORS":"true","VSCODE_IPC_HOOK":"/run/user/529201136/vscode-bc473bcf-1.10-main.sock","VSCODE_NLS_CONFIG":"{\"userLocale\":\"en-us\",\"osLocale\":\"en-us\",\"resolvedLanguage\":\"en\",\"defaultMessagesFile\":\"/usr/share/code/resources/app/out/nls.messages.json\",\"locale\":\"en-us\",\"availableLanguages\":{}}","VSCODE_PID":"87775","WINDOWPATH":"2","XAUTHORITY":"/run/user/529201136/gdm/Xauthority","XCURSOR_SIZE":"24","XCURSOR_THEME":"breeze_cursors","XDG_CONFIG_DIRS":"/home/codasip.com/adam.bartos/.config/kdedefaults:/etc/xdg:/usr/share/kde-settings/kde-profile/default/xdg","XDG_CURRENT_DESKTOP":"KDE","XDG_DATA_DIRS":"/home/codasip.com/adam.bartos/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share/:/usr/share/","XDG_MENU_PREFIX":"kf5-","XDG_RUNTIME_DIR":"/run/user/529201136","XDG_SEAT":"seat0","XDG_SESSION_DESKTOP":"plasma","XDG_SESSION_ID":"2","XDG_SESSION_TYPE":"x11","XDG_VTNR":"2","_":"/usr/bin/startplasma-x11","which_declare":"declare -f","ELECTRON_RUN_AS_NODE":"1","VSCODE_L10N_BUNDLE_LOCATION":""}
[cmake] -- Configuring done (0.0s)
[cmake] -- Generating done (0.0s)
[main] Resolving the selected build preset
[main] Loading new build preset into CMake driver
[driver] Switching to build preset: __defaultBuildPreset__
[driver] CMakeDriver build preset set to __defaultBuildPreset__
[cmake] -- Build files have been written to: /home/codasip.com/adam.bartos/codasip/workspaces/11.3.3/base-codasip_urisc/cmakebug/build/debug
[cmakefileapi-parser] Read reply folder: /home/codasip.com/adam.bartos/codasip/workspaces/11.3.3/base-codasip_urisc/cmakebug/build/debug/.cmake/api/v1/reply
[cmakefileapi-parser] Found index files: ["cache-v2-090c6f76f116ae22d8d3.json","cmakeFiles-v1-43137f21977d64be9f11.json","codemodel-v2-04783d37fccc906eddef.json","directory-.-f5ebdc15457944623624.json","index-2025-07-02T11-43-57-0349.json","toolchains-v1-9369d80b4607184a50b7.json"]
[main] Resolving the selected test preset
[main] Resolving the selected test preset
[main] Loading new test preset into CMake driver
[driver] Switching to test preset: __defaultTestPreset__
[driver] CMakeDriver test preset set to __defaultTestPreset__
[main] Resolving the selected package preset
[main] Resolving the selected package preset
[main] Loading new package preset into CMake driver
[driver] Switching to package preset: __defaultPackagePreset__
[driver] CMakeDriver package preset set to __defaultPackagePreset__
[ctest] Folder is not found in Test Explorer: /home/codasip.com/adam.bartos/codasip/workspaces/11.3.3/base-codasip_urisc/cmakebug
[main] Resolving the selected workflow preset
[main] Resolving the selected workflow preset
[main] Loading new workflow preset into CMake driver
[driver] Switching to workflow preset: __defaultWorkflowPreset__
[driver] CMakeDriver workflow preset set to __defaultWorkflowPreset__
[extension] [7083] cmake.configure finished (returned 0)

Additional Information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    buga bug in the productmore info neededMore info is needed from the community for us to properly triage and investigate.

    Type

    No type

    Projects

    Status

    Blocked

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions