shadow1ng/fscan · error
%s: %w [minidump_process_name_convert_failed]
Error message
%s: %w [minidump_process_name_convert_failed]
What it means
Wrap inside ProcessManager.findProcessInSnapshot: converting the target process name to a UTF-16 pointer via syscall.UTF16PtrFromString failed (typically an invalid NUL character in the name), so the snapshot walk cannot compare process names. It is an input-encoding error, distinct from the FindProc failures for lstrcmpiW/Process32NextW around it.
Source
Thrown at plugins/local/minidump.go:329
if err != nil {
return 0, fmt.Errorf("%s: %w", i18n.Tr("minidump_find_proc_failed", "Process32NextW"), err)
}
lstrcmpi, err := pm.kernel32.FindProc("lstrcmpiW")
if err != nil {
return 0, fmt.Errorf("%s: %w", i18n.Tr("minidump_find_proc_failed", "lstrcmpiW"), err)
}
ret, _, _ := proc32First.Call(snapshot, uintptr(unsafe.Pointer(&pe32)))
if ret == 0 {
//nolint:errorlint // Windows LastError不应该wrapped
return 0, fmt.Errorf(i18n.GetText("minidump_first_process_failed")+" (LastError: %d)", windows.GetLastError())
}
for {
namePtr, err := syscall.UTF16PtrFromString(name)
if err != nil {
return 0, fmt.Errorf("%s: %w", i18n.GetText("minidump_process_name_convert_failed"), err)
}
ret, _, _ = lstrcmpi.Call(
uintptr(unsafe.Pointer(namePtr)),
uintptr(unsafe.Pointer(&pe32.szExeFile[0])),
)
if ret == 0 {
return pe32.th32ProcessID, nil
}
ret, _, _ = proc32Next.Call(snapshot, uintptr(unsafe.Pointer(&pe32)))
if ret == 0 {
break
}
}
return 0, fmt.Errorf("%s", i18n.Tr("minidump_process_not_found", name))View on GitHub (pinned to 95cc12e753)
Solutions
- Sanitize the process name — remove NUL/unexpected control characters
- Re-specify the target process name (e.g. lsass.exe) cleanly
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at plugins/local/minidump.go:329 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of shadow1ng/fscan@95cc12e753 (2026-09-06).
Data as JSON: /api/errors/83b340d05aded684.
Report an issue: GitHub.