in reply to help me understand it please

If you are both sending to and receiving from a process, you must realize that there's only an 8K buffer in each direction. So if you are writing to the other process, and send more than 8K, your process will stop and wait for the other process to start reading. But suppose it has done the same thing, trying to send you more than 8K from a previous response! Now you have two processes in deadlock.

As to how to solve it, the quickest general answer is "careful programming". If that doesn't make sense to you, then don't attempt it.

-- Randal L. Schwartz, Perl hacker