<font face="Arial, Verdana">I have a theory how this can happen.</font>
First I guess you have set "Input Buffer Size" to 63 since it is the smallest common buffer size. If you have a avr board you will have 127 so setting this value up should help.
One time it happened you got
<font face="Arial, Verdana">< 16:23:19: N87776 M105</font>
<font face="Arial, Verdana">< 16:23:20: N87777 M105</font>
<font face="Arial, Verdana">> 16:23:20: ok</font>
<font face="Arial, Verdana">< 16:23:20: N87778 M204 S4000</font>
<font face="Arial, Verdana">< 16:23:22: N87779 M105</font>
<font face="Arial, Verdana">> 16:23:22: ok T:219.8 /220.0 B:60.0 /60.0 T0:219.8 /220.0 @:127 B@:127</font>
<font face="Arial, Verdana">> 16:23:22: ok T:219.8 /220.0 B:60.0 /60.0 T0:219.8 /220.0 @:127 B@:N87779 ok T:219.8 /220.0 B:60.0 /60.0 T0:219.8 /220.0 @:127 B@:127</font>
<font face="Arial, Verdana">< 16:23:23: N87780 M105</font>
<font face="Arial, Verdana">> 16:23:23: ok T:219.8 /220.0 B:60.0 /60.0 T0:219.8 /220.0 @:127 B@:0</font>
<font face="Arial, Verdana">< 16:23:24: N87781 M105</font>
<font face="Arial, Verdana">> 16:23:24: ok T:219.2 /220.0 B:60.2 /60.0 T0:219.2 /220.0 @:127 B@:0</font>
<font face="Arial, Verdana">< 16:23:25: N87782 M105</font>
<font face="Arial, Verdana">
</font>
<font face="Arial, Verdana">Important is the line with 2 ok where the trouble starts. We are now missing a ok so some part of the buffer keeps reserved. Now see 2 common commands:</font>
<font face="Arial, Verdana">
N87531 G1 X77.852 Y96.297 E16.42255 *234
N87731 M105 *122
41 + 17 = 58
Together we have a length a 58 so with 63 buffer length we can only add 5 bytes - not enough for one more command. Now first command gets removed with next ok. Leaves 17 byte usage = 46 byte free. If the next command is longer because it has F2400 in addition it will not fit until M105 is removed. But it will not be removed, because we missed the corresponding ok. Next second server will insert M105 which is a short command so it fits. It is also the shortest possible command so we will never get more free room in our buffer. So all we see is a M105 every second and print job hangs because it can never send the long command. Would the M105 also not fit, we would get a timeout and buffer gets freed completely. With next Marlin generation we get lines to prevent exactly this issue. Now I have to think how I could detect this strange hang condition. A first start is increasing buffer to 127. That should solve it for a longer while.
Same problem of course occurs with host in same condition.
</font>