CreateProcessW() can cause "Invalid access to memory location"
The second argument for
CreateProcessW() needs to not be a constant because it may be modified:
The Unicode version of this function, CreateProcessW, can modify the contents of this string. Therefore, this parameter cannot be a pointer to read-only memory (such as a const variable or a literal string). If this parameter is a constant string, the function may cause an access violation.
This would explain sporadic "Invalid access to memory location" errors people see on Windows.
To resolve ths,
cmd should be copied into a temporary variable before CreateProcessW() is called.
I've attached a patch that might work, but I'm not an expert C/Windows programmer.