Skip to content

Releases: asmichi/ChildProcess

v0.18.0 release

Choose a tag to compare

@asmichi asmichi released this 22 Sep 08:23

Bugfixes

  • Fix potential dangling handles when handles supplied to ChildProcessStartInfo would be concurrently disposed by user code.
  • Fix undisposed handles (unnecessarily disposed by finalizers).

v0.17.0

Choose a tag to compare

@asmichi asmichi released this 30 Jun 04:15

Binary Breaking Changes

  • (Windows) Disposing IChildProcess (including the death of the current process) now kills (equivalent to calling TerminateProcess) the child process by default. This behavior can be disabled with ChildProcessFlags.DisableKillOnDispose.
    • This especially affects child processes created with ChildProcessFlags.AttachToCurrentConsole which previously would continue to run if the current process has a console.
    • Note, for a graceful shutdown, you should always perform WaitForExit on child processes.

Bugfixes

  • (Windows) ChildProcessFlags.AttachToCurrentConsole now correctly attaches child processes to the current console even when the current process is created with CREATE_NO_WINDOW (i.e. with an invisible console window).

v0.16.0

Choose a tag to compare

@asmichi asmichi released this 28 Apr 15:58

To mitigate the "BatBadBut vulnerability," this release introduces a significant breaking change that restricts execution of cmd.exe.

For details, refer to the description of ChildProcessStartingBlockedException. For background information, refer to the document on the "BatBadBut vulnerability": https://flatt.tech/research/posts/batbadbut-you-cant-securely-execute-commands-on-windows/

Binary Breaking Changes

  • (Windows) Executing cmd.exe now requires ChildProcessFlags.DisableArgumentQuoting.
  • (Windows) Batch files (*.bat/*.cmd) can no longer be executed.

v0.15.0

Choose a tag to compare

@asmichi asmichi released this 16 Mar 05:16

Bug Fixes

  • Fix an issue that causes a child process to be terminated on Windows <=1809 even when it is attached to the current console.
  • (Windows) Fix an issue that causes child processes to be killed at an unpredictable timing (i.e. on GC) after disposal of corresponding IChildProcess objects.
    • Due to job objects not being correctly closed.
    • If you dispose an IChildProcess object without first performing WaitForExit, and if the child process is attached to the current console (i.e. no pseudo console), the child process will not be killed on disposing the IChildProcess object.
    • Even if the child process is not attached to the current console (i.e. but to a pseudo console), the child process may be incorrectly given time to react CTRL_CLOSE_EVENT.

v0.14.0

Choose a tag to compare

@asmichi asmichi released this 03 May 09:09

Binary Breaking Changes

  • (Non-Windows) ChildProcessFlags.DisableArgumentQuoting now results in a PlatformNotSupportedException.

New Features

  • (Windows) Add the ability to obtain the process handle and the primary thread handle of the child process: ChildProcessFlags.EnableHandle, IChildProcess.Handle, IChildProcess.PrimaryThreadHandle
  • (Windows) Add the ability to create the child process with the CREATE_SUSPENDED flag

v0.13.0

Choose a tag to compare

@asmichi asmichi released this 19 Jun 04:14

Improvements

  • Improved stability.

v0.12.0

Choose a tag to compare

@asmichi asmichi released this 23 Feb 14:45

Improvements

  • (Windows) Now retries on ERROR_NOT_ENOUGH_MEMORY which intermittently occurs when child processes are created massively concurrently.

v0.11.0

Choose a tag to compare

@asmichi asmichi released this 14 Sep 11:42

Improvements

  • Use PROC_THREAD_ATTRIBUTE_JOB_LIST instead of CREATE_SUSPENDED so that forcible termination of the process will never leave its child processes suspended.

v0.10.0

Choose a tag to compare

@asmichi asmichi released this 31 Aug 16:30

Breaking Changes

  • Remove IChildProcess.IsSuccessful since it offers little functionality and is slightly vague.

Features

  • (Windows-specific) Disable the Windows Error Reporting dialog by default.

v0.9.0

Choose a tag to compare

@asmichi asmichi released this 28 Jul 14:28

Binary Breaking Changes

  • Change the type of ChildProcessStartInfo.Std*Handle to SafeHandle from SafeFileHandle.

Features

  • Add WaitForExit variants that take a TimeSpan.
  • Add IChildProcess.Id.