I am afraid that is impossible afterwards. After all "broken pipe" means that the other process is gone (or has at least closed its file descriptor).
While everything is still OK you can do this:
$ sleep 1000 | sleep 1000 & ps
[1] 848156
PID TTY TIME CMD
819441 pts/0 00:00:00 bash
848155 pts/0 00:00:00 sleep
848156 pts/0 00:00:00 sleep
848157 pts/0 00:00:00 ps
$ PID=848156 # PID of one of the sleep processes
$ ls -l /proc/$PID/fd
... # Skipped output lines
l-wx------ 1 hl hauke 64 15. Apr 19:11 1 -> pipe:[108237859]
... # Skipped output lines
$ lsof -n | grep 108237859 # gives you all processes which have access to this pipe
sleep 848155 hl 1w FIFO 0,8 0t0 108237859 pipe
sleep 848156 hl 0r FIFO 0,8 0t0 108237859 pipe
Edit 1
If lsof is not available:
for dir in /proc/[1-9]*; do
test -r "$dir"/fd || continue
if ls -ln "$dir"/fd | grep -q 108237859; then
echo "PID: ${dir#/proc/}"
fi
done
lsofwill only show actually useful information for the current user without sudo.SuperUserthat may be interesting for future visitors