shadow1ng/fscan · error
%s [minidump_timeout]
Error message
%s [minidump_timeout]
What it means
Thrown by ProcessManager.dumpProcessWithTimeout when the context is cancelled (ctx.Done) before the dump goroutine posts a result on resultChan. The library enforces a timeout because MiniDumpWriteDump on large or hung processes can block indefinitely. It means the dump did not complete within the caller-supplied deadline.
Source
Thrown at plugins/local/minidump.go:420
if handle == 0 {
return 0, fmt.Errorf("%s", i18n.GetText("minidump_current_process_failed"))
}
return syscall.Handle(handle), nil
}
// dumpProcessWithTimeout 带超时的转储进程内存
func (pm *ProcessManager) dumpProcessWithTimeout(ctx context.Context, pid uint32, outputPath string) error {
resultChan := make(chan error, 1)
go func() {
resultChan <- pm.dumpProcess(pid, outputPath)
}()
select {
case err := <-resultChan:
return err
case <-ctx.Done():
return fmt.Errorf("%s", i18n.GetText("minidump_timeout"))
}
}
// dumpProcess 转储进程内存
func (pm *ProcessManager) dumpProcess(pid uint32, outputPath string) error {
processHandle, err := pm.openProcess(pid)
if err != nil {
return err
}
defer pm.closeHandle(processHandle)
fileHandle, err := pm.createDumpFile(outputPath)
if err != nil {
return err
}
defer pm.closeHandle(fileHandle)
miniDumpWriteDump, err := pm.dbghelp.FindProc("MiniDumpWriteDump")View on GitHub (pinned to 95cc12e753)
Solutions
- Increase the context timeout proportionally to the target process's committed memory size.
- Write the dump to fast local storage instead of a network share or slow disk.
- Check the target process state (hung/suspended) and retry once it is responsive; avoid dumping while the process is being debugged or suspended.
Example fix
// before ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) // after — scale timeout to the dump size ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second)
Defensive patterns
Strategy: retry
Validate before calling
// size the timeout to the target's memory footprint before dumping ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second) defer cancel()
Try / catch
err := pm.dumpProcessWithTimeout(ctx, pid, path)
if err != nil && strings.Contains(err.Error(), "minidump_timeout") {
// retry once with a larger deadline and local output path
} Prevention
- Set timeouts generously for large processes (GBs of committed memory).
- Dump to fast local disk, never network shares.
- Do not dump suspended or hung processes.
When it happens
Trigger: tryDirectDump calls dumpProcessWithTimeout with a ctx whose deadline expires while MiniDumpWriteDump is still writing the dump file — typically for very large process memory footprints, slow/late disk, or a suspended/hung target.
Common situations: Dumping multi-gigabyte processes (databases, browsers) with a too-short timeout; target process suspended or stuck in kernel; dumping to a network share or slow HDD.
Understand the failure class
Background: Request timed out: what client-side request timeouts mean across libraries (Request timed out, TIMED_OUT, APITimeoutError) — this error's family across 39 libraries.
- Timeouts: ETIMEDOUT, deadlines, and hung requests — what actually expires when a request times out.
Related errors
- %s: %w (webscan_request_send_error)
- minidump_admin_required
- minidump_all_methods_failed
- NLA auth timeout
- %s [minidump_process_not_found: %s]
AI-assisted analysis of shadow1ng/fscan@95cc12e753 (2026-09-06).
Data as JSON: /api/errors/c7c8e1954ddab82e.
Report an issue: GitHub.