Project

General

Profile

Bug #11515

CreateProcessW() can cause "Invalid access to memory location"

Added by docwhat (Christian Höltje) almost 5 years ago. Updated almost 5 years ago.

Status:
Rejected
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:<unknown>]

Description

The second argument for CreateProcessW() needs to not be a constant because it may be modified:

From https://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx :

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.


Files

ruby-CreateProcessW-memory-error.diff (919 Bytes) ruby-CreateProcessW-memory-error.diff Rough draft patch to fix memory access errors docwhat (Christian Höltje), 09/08/2015 04:07 PM

Also available in: Atom PDF