The last part, "CreateProcess() failed: The system cannot find the file specified.", is generated by spawn_(). Normally it would be the error text only, but spawn_() is a complex call, with several other (though unlikely) points of failure, thus the function name.
As of the executable name, only the caller really knows whether it's locale or UTF-8 (having a locale names does not guarantee that all names are locale, that's a basic error in Geany). So spawn_*() is encoding-agnostic, but a GError message must be in UTF-8, and thus the executable is not included.
That is not to say that I'm against more sensible messages - we even discussed it while polishing spawn, but could not reach any sensible conclusion. Perhaps it would be best to display user-friendly messages based on the most likely error, and put the full details in the Status tab, or Debug -> Messages.
—
Reply to this email directly or view it on GitHub.