moonD4rk/HackBrowserData · error
close %s: %w
Error message
close %s: %w
What it means
writeFile registers a deferred f.Close() and promotes its error (only if no earlier error occurred) via fmt.Errorf("close %s: %w", ...). This reports that closing the output file failed, typically meaning buffered data was never flushed to disk and the result file may be empty or incomplete.
Source
Thrown at output/output.go:154
// cookie-editor skipping non-cookie data), don't create the file.
var buf bytes.Buffer
if err := o.formatter.format(&buf, rows); err != nil {
return fmt.Errorf("format %s: %w", category, err)
}
if buf.Len() == 0 {
return nil
}
filename := fmt.Sprintf("%s.%s", category, o.formatter.ext())
path := filepath.Join(o.dir, filename)
f, err := os.OpenFile(filepath.Clean(path), os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0o600)
if err != nil {
return fmt.Errorf("create %s: %w", filename, err)
}
defer func() {
if cerr := f.Close(); cerr != nil && err == nil {
err = fmt.Errorf("close %s: %w", filename, cerr)
}
}()
if strings.HasSuffix(path, ".csv") {
if _, err := f.Write(utf8BOM); err != nil {
return fmt.Errorf("write BOM: %w", err)
}
}
if _, err := f.Write(buf.Bytes()); err != nil {
return fmt.Errorf("write %s: %w", filename, err)
}
return nil
}
View on GitHub (pinned to 0503d04d7a)
Solutions
- Check free disk space on the output volume and retry with adequate space.
- Write to a local disk instead of a network/removable drive.
- Exclude the output directory from AV/sync tools that may hold or interfere with the handle.
- Treat the written file as unreliable: delete and regenerate after fixing the environment.
Example fix
// before: ignoring close errors leaves truncated files
f.Close()
// after
if cerr := f.Close(); cerr != nil && err == nil {
err = fmt.Errorf("close %s: %w", filename, cerr)
} Defensive patterns
Strategy: try-catch
Validate before calling
// before writing, ensure adequate space:
if st, err := diskUsage(outputDir); err == nil && st.Free < minRequired { return errors.New("insufficient disk space") } Try / catch
if err := w.Write(); err != nil {
if strings.Contains(err.Error(), "close ") {
// output unreliable: delete partial files and retry after freeing space
}
} Prevention
- Ensure ample free disk space before extraction runs.
- Prefer local disks over network/USB targets.
- Exclude output dirs from sync clients that lock handles.
- Treat any close error as file corruption — regenerate the file.
When it happens
Trigger: The deferred f.Close() returned a non-nil error: disk became full (close flushes OS buffers), the file handle was invalidated (filesystem unmounted, network drive dropped), or on Windows an underlying lock/error surfaced at close time.
Common situations: Disk filling up mid-write so Close cannot flush; writing to a network share or removable drive that disconnects; file watched/locked by AV or sync clients (OneDrive/Dropbox) interfering at close.
Understand the failure class
Background: "failed to write file", "Could not save figure", "Error saving remote file" — file write failed: causes and fixes across languages and libraries — this error's family across 38 libraries.
Related errors
AI-assisted analysis of moonD4rk/HackBrowserData@0503d04d7a (2026-09-06).
Data as JSON: /api/errors/da539e6068cd8dca.
Report an issue: GitHub.