netbirdio/netbird · error
add status: %w
Error message
add status: %w
What it means
Returned by BundleGenerator.createArchive in client/internal/debug/debug.go:419 when addStatus fails. addStatus builds the status text in memory (profile name lookup errors are swallowed; only a failed statusRecorder is skipped) and writes status.txt through addFileToZip, so the wrapped error is a zip CreateHeader or io.Copy failure against the bundle temp file. It is a mandatory step, so the bundle generation aborts.
Source
Thrown at client/internal/debug/debug.go:419
if err := g.createArchive(); err != nil {
return "", err
}
if err := g.archive.Close(); err != nil {
return "", fmt.Errorf("close archive writer: %w", err)
}
return bundlePath.Name(), nil
}
func (g *BundleGenerator) createArchive() error {
if err := g.addReadme(); err != nil {
return fmt.Errorf("add readme: %w", err)
}
if err := g.addStatus(); err != nil {
return fmt.Errorf("add status: %w", err)
}
if err := g.addConfig(); err != nil {
log.Errorf("failed to add config to debug bundle: %v", err)
}
if err := g.addResolvedDomains(); err != nil {
log.Errorf("failed to add resolved domains to debug bundle: %v", err)
}
if g.includeSystemInfo {
g.addSystemInfo()
}
if err := g.addProf(); err != nil {
log.Errorf("failed to add profiles to debug bundle: %v", err)
}
View on GitHub (pinned to 93e97f4bf1)
Solutions
- Free space on the temp filesystem and retry the debug bundle.
- Set BundleDeps.TempDir to a location with enough capacity.
- Reproduce with daemon debug logging to confirm whether addFileToZip reported 'create zip file header' or 'write file to zip' underneath.
Defensive patterns
Strategy: retry
Try / catch
// Go: read the wrapped chain to distinguish status-specific failure
if err := gen.Generate(); err != nil {
if strings.Contains(err.Error(), "add status") {
// status.txt zip write failed; verify temp dir health and retry
}
} Prevention
- Keep the temp volume writable and non-full.
- Remember statusRecorder/profile errors do not fail the bundle; only I/O does.
When it happens
Trigger: Bundle generation while the write of the status.txt zip entry fails: temp filesystem full, temp file invalidated, or device I/O error. Note the status content itself (GetActiveProfile errors, missing recorder) does not trigger this error.
Common situations: Out-of-space temp volume on the peer; containerized daemon with a small tmpfs; the deferred Close error pattern where the first failing mandatory entry is readme/status.
Related errors
- close archive writer: %w
- add readme: %w
- add README file to zip: %w
- add status file to zip: %w
- unable to get daemon status: %v
AI-assisted analysis of netbirdio/netbird@93e97f4bf1 (2026-08-16).
Data as JSON: /api/errors/ca33350380b75d98.
Report an issue: GitHub.