May be it is a bug either in kernel or in program you are tracing?
The program may have incorrectly implemented event loop that is waits for wrong thigs, but waits for other things after EINTR
.
Example:
for(;;) { select(...); if(FD_SET(...i...)) { read(...i...); write(...j...); // Naive blocking write } }
It will work in trivial test, but the whole program may block if any write blocks.
Suspending/resuming the program aborts blocking write
and causes the main loop to continue.