The code below works only if the stopped image is 1. In that case, the other images executing SYNC ALL get a non-zero error code and an appropriate message indicating that one of the images has stopped.
If the stopped image is 2 (or greater), then the code hangs forever.
INTEGER :: CODE
CHARACTER(LEN=100) :: MSG
IF (THIS_IMAGE()==1) STOP ! This works.
!IF (THIS_IMAGE()==2) STOP ! This will cause the code to hang forever.
SYNC ALL (STAT=CODE,ERRMSG=MSG)
WRITE(*,*) 'I am image ',THIS_IMAGE(),', CODE = ',CODE,' and MSG = ',TRIM(MSG)
END PROGRAM MAIN