`DuplexPipe::Read` and `DuplexPipe::Send` synchronously read and write to named pipes. This is a blocking operation and can cause the Unreal Editor to deadlock if executed at the same time, a known limitation in the Windows operating system. Without a proper Mutex, this means that Live Coding can inherently cause the Editor to hang indefinitely.
This occurs most commonly running Editor commandlets, where the Live Coding module teardown calls to read the pipe (via `SendCommandAndWaitForAck` in `ClientStartupThread::~ClientStartupThread`) at the same time as it may be in the process of writing the same pipe. A good repro case is using the Command Line Rendering support as described in: https://dev.epicgames.com/documentation/en-us/unreal-engine/using-command-line-rendering-with-move-render-queue-in-unreal-engine?application_version=5.6
Related, since the LiveCoding settings are stored in the `EditorPerProjectUserSettings`, this cannot be toggled effectively via .ini at the project or engine level and must instead be set via TargetSettings, giving less flexibility when turning this feature off to prevent deadlocking.