[#70843] Re: [ruby-cvs:58952] hsbt:r51801 (trunk): * lib/rubygems: Update to RubyGems HEAD(fe61e4c112). — Eric Wong <normalperson@...>
hsbt@ruby-lang.org wrote:
3 messages
2015/09/17
[ruby-core:70694] [Ruby trunk - Bug #11515] [Feedback] CreateProcessW() can cause "Invalid access to memory location"
From:
nobu@...
Date:
2015-09-08 23:28:46 UTC
List:
ruby-core #70694
Issue #11515 has been updated by Nobuyoshi Nakada. Status changed from Open to Feedback `CreateChild` is never called with a constant `cmd`, as it is build at the = runtime. How can you reproduce it? ---------------------------------------- Bug #11515: CreateProcessW() can cause "Invalid access to memory location" https://bugs.ruby-lang.org/issues/11515#change-54087 * Author: Christian H=C3=B6ltje * Status: Feedback * Priority: Normal * Assignee:=20 * ruby -v:=20 * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- The second argument for `CreateProcessW()` needs to *not* be a constant bec= ause it may be modified: From https://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=3D= vs.85).aspx : > The Unicode version of this function, CreateProcessW, can modify the cont= ents 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 paramet= er is a constant string, the function may cause an access violation. This would explain sporadic "Invalid access to memory location" errors peop= le see on Windows. To resolve ths, `cmd` should be copied into a temporary variable before Cre= ateProcessW() is called. I've attached a patch that might work, but I'm not an expert C/Windows prog= rammer. ---Files-------------------------------- ruby-CreateProcessW-memory-error.diff (919 Bytes) --=20 https://bugs.ruby-lang.org/