#16309·chef

Local mode Windows stacktrace: node file DACL write fails

Author: darkn3rdCreated Aug 19, 2026Updated Aug 20, 2026
LabelsStatus: Untriaged

Description

chef-zero's local-mode node store unconditionally attempts to set an owner/DACL on every node file it writes whenever ChefUtils.windows? is true, with no config flag to disable it. On filesystems that don't support Windows security-descriptor operations, notably VirtualBox shared folders (VBoxSF) used for host/guest sync, this call fails outright with Chef::Exceptions::Win32APIError ("Incorrect function"), aborting the run before any recipes converge. This makes local-mode testing against Windows guests using standard VirtualBox synced folders effectively broken.

Chef Version

  • Chef Client 18.11.11

Platform Version

Windows guest VM (any recent Windows 10/11 or Server release should reproduce), running under VirtualBox via Vagrant, using a default VBoxSF synced folder for the Chef repo/node path.

Replication Case

  1. Create the two files below in a new directory
    • Cookbook
    bash
    mkdir cookbooks nodes
    pushd cookbooks chef generate cookbook repro
    cat <<EOF > ./repro/recipes/default.rb
    log "hello from chef-zero local mode" do
      level :info
    end
    EOF
    popd
    • Vagrantfile
    bash
    cat <<EOF > Vagrantfile
    Vagrant.configure("2") do |config|
      config.vm.box = "gusztavvargadr/windows-11"
      config.vm.provision "chef_zero" do |chef|
        chef.cookbooks_path = "cookbooks"
        chef.nodes_path     = "nodes"
    
        chef.add_recipe "repro"
    
        chef.log_level = :debug
        chef.formatter = "doc"
        chef.arguments = "--chef-license accept-silent"
      end
    end
    EOF
  2. Download and run the Run vagrant up against a Windows guest box using the default synced folder for the Chef repo path:
    bash
    vagrant up --no-provision
  3. Provision the guest system using chef-zero local mode
    bash
    vagrant provision 2>&1 | tee vagrant_run.log
  4. chef_zero provisioning attempts to write node data via chef-zero's local-mode repository store, which fails

The files created

ruby
# ./Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "gusztavvargadr/windows-11"
  config.vm.provision "chef_zero" do |chef|
    chef.cookbooks_path = "cookbooks"
    chef.nodes_path     = "nodes"

    chef.add_recipe "repro"

    chef.log_level = :debug
    chef.formatter = "doc"
    chef.arguments = "--chef-license accept-silent"
  end
end
ruby
# ./cookbooks/repro/recipes/default.rb
log "hello from chef-zero local mode" do
  level :info
end

Client Output

log
[2026-08-19T14:50:15-07:00] ERROR: #<Chef::Exceptions::Win32APIError: Incorrect function.
---- Begin Win32 API output ----
System Error Code: 1
System Error Message: Incorrect function.
---- End Win32 API output ----
>
[2026-08-19T14:50:15-07:00] INFO: HTTP Request Returned 500 Internal Server Error: error
================================================================================
Chef Infra Client encountered an error attempting to load the node data for "vagrant-25c89fa5"
================================================================================
Unknown Server Error:
---------------------
The server had a fatal error attempting to load the node data.
Server Response:
----------------
Exception raised! #<Chef::Exceptions::Win32APIError: Incorrect function.
---- Begin Win32 API output ----
System Error Code: 1
System Error Message: Incorrect function.
---- End Win32 API output ----
>
System Info:
------------
chef_version=18.11.11
ruby=ruby 3.1.7p261 (2025-03-26 revision 0a3704f218) [x64-mingw-ucrt]
program_name=C:/opscode/chef/bin/chef-client
executable=C:/opscode/chef/bin/chef-client
Running handlers:
[2026-08-19T14:50:15-07:00] ERROR: Running exception handlers
Running handlers complete
[2026-08-19T14:50:15-07:00] ERROR: Exception handlers complete
Infra Phase failed. 0 resources updated in 15 seconds
[2026-08-19T14:50:15-07:00] FATAL: Stacktrace dumped to C:/chef/cache/chef-stacktrace.out
Chef never successfully completed! Any errors should be visible in the
output above. Please fix your recipes so that they properly complete.

Stacktrace

log
Generated at 2026-08-19 14:50:15 -0700
Net::HTTPFatalError: 500 "Internal Server Error"
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/net-http-0.9.1/lib/net/http/response.rb:278:in `error!'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/http.rb:159:in `request'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/http.rb:138:in `post'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/node.rb:683:in `create'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/node.rb:641:in `rescue in find_or_create'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/node.rb:635:in `find_or_create'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/policy_builder/dynamic.rb:74:in `load_node'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/client.rb:450:in `load_node'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/client.rb:281:in `run'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/application.rb:305:in `run_with_graceful_exit_option'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/application.rb:281:in `block in run_chef_client'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/local_mode.rb:42:in `with_server_connectivity'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/application.rb:264:in `run_chef_client'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/application/base.rb:354:in `run_application'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/application.rb:67:in `run'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-bin-18.11.11/bin/chef-client:25:in `<top (required)>'
C:/opscode/chef/bin/chef-client:208:in `load'
C:/opscode/chef/bin/chef-client:208:in `<main>'

>>>> Caused by Net::HTTPClientException: 404 "Not Found"
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/net-http-0.9.1/lib/net/http/response.rb:278:in `error!'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/http.rb:159:in `request'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/http.rb:122:in `get'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/node.rb:653:in `load'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/node.rb:636:in `find_or_create'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/policy_builder/dynamic.rb:74:in `load_node'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/client.rb:450:in `load_node'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/client.rb:281:in `run'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/application.rb:305:in `run_with_graceful_exit_option'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/application.rb:281:in `block in run_chef_client'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/local_mode.rb:42:in `with_server_connectivity'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/application.rb:264:in `run_chef_client'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/application/base.rb:354:in `run_application'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.11.11-universal-mingw-ucrt/lib/chef/application.rb:67:in `run'
C:/opscode/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-bin-18.11.11/bin/chef-client:25:in `<top (required)>'
C:/opscode/chef/bin/chef-client:208:in `load'
C:/opscode/chef/bin/chef-client:208:in `<main>'