In code like this: cat XXX | ( while read a b c; do echo $a echo $b .... done ) the current implementation leads to a infinite loop. The patch attached in the bug 865 ( https://bugs.busybox.net/show_bug.cgi?id=865 ) fixes this bug.
I propose adapting and reusing (sharing) ash's readcmd() code. It is a bit more work, but ash's read is well debugged and supports options like timeouts, max chars and so on.
Fix is committed to git.
Thanks!
Fixed in 1.16.0