Project

General

Profile

Actions

Bug #11515

closed

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

Added by docwhat (Christian Höltje) about 9 years ago. Updated about 9 years ago.

Status:
Rejected
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
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0