Subject: bug#22344: 25.0.50 (and 24.5.1, 24.4); Sending 4097 bytes to a subprocess hangs Emacs on Windows 8 and 10

From: Clément Pit--Claudel <[email-masked]>
Date: Mon, 11 Jan 2016 14:41:20 -0500

On 01/11/2016 02:33 PM, Eli Zaretskii wrote:
>> Cc: [email-masked]
>> From: Clément Pit--Claudel <[email-masked]>
>> Date: Mon, 11 Jan 2016 13:02:47 -0500
>>
>>> Thanks.  Are all the affected programs written in JavaScript?  Do they
>>> all set stdin encoding to UTF-8?  If so, does the problem go away if
>>> you remove the line that sets the encoding?
>>
>> No, the following javascript implementation of cat also reproduces the issue:
>>
>> function blackhole() {
>>     process.stdin.resume();
>>     process.stdin.setEncoding("ascii");
>>     process.stdin.on('data', function (chunk) { process.stdout.write(chunk); });
>> }
>> blackhole();
> 
> Could it be that the script exits as soon as it processed the first 4K
> chunk, without waiting for the next one, or without waiting long
> enough?

I'm not sure if I understand correctly. In the working case (sending small batches) the underlying script does receive everything Emacs sends. In fact, the blackhole example shown above never exits; it keeps reading on stdin and echoing on stdout.

With a more complex setup, Emacs hangs when we send the whole buffer, but when sending it in small chunks the underlying process returns the expected results.

Clément.