one process might fail to update a local variable value to the global value and be preempted by another. If the newly scheduled process uses an older value for the global variable, inconsistencies would render inter process communication useless.
Further, if you are using one of the first three mutual exclusion algorithms, if a process crashes while in its critical section, the control would never be handled over to the new process and the operating system will lock up.
A 'deadlock' is a situation where a group of processes are permanently blocked as a result of each process aquiring a subset of the resources needed for its completion, and waiting for release of the remaining resources held by others in the same group - thus making it impossible for any of the processes to proceed. Hence, a deadlock state will screw up interprocess communication.
Also, if a process issues a disable interrupts OS Call, and then crashes, inter-process communication will fail because no other process will be allowed to interrupt the processor, and the operating system will lock up.