@@ -112,6 +112,7 @@ int fenix_preinit(const Args::FenixInitArgs& args, jmp_buf* jump_env){
112112 fenix.spawn_policy = args.spawn ;
113113 fenix.recover_environment = jump_env;
114114 fenix.resume_mode = args.resume_mode ;
115+ fenix.callback_exception_mode = args.callback_exception_mode ;
115116 fenix.unhandled_mode = args.unhandled_mode ;
116117 fenix.ret_role = args.role ? args.role : &fenix.role ;
117118 fenix.ret_error = args.err ? args.err : &fenix.repair_result ;
@@ -663,9 +664,10 @@ void __fenix_postinit()
663664 34095347 , fenix.new_world , &fenix.check_failures_req );
664665 }
665666
666- if (fenix.role == FENIX_ROLE_SURVIVOR_RANK ) {
667- __fenix_callback_invoke_all (*fenix. ret_error );
667+ if (fenix.role != FENIX_ROLE_INITIAL_RANK ) {
668+ __fenix_callback_invoke_all ();
668669 }
670+
669671 if (fenix.options .verbose == 9 ) {
670672 verbose_print (" After barrier. current_rank: %d, role: %d\n " , __fenix_get_current_rank (fenix.new_world ),
671673 fenix.role );
@@ -798,17 +800,17 @@ void __fenix_test_MPI(MPI_Comm *pcomm, int *pret, ...)
798800{
799801 int ret_repair;
800802 int index;
801- int ret = *pret;
803+ fenix.mpi_fail_code = *pret;
804+
802805 if (!fenix.fenix_init_flag || __fenix_spare_rank () == 1 || fenix.ignore_errs ) {
803806 return ;
804807 }
805808
806- switch (ret ) {
809+ switch (fenix. mpi_fail_code ) {
807810 case MPI_ERR_PROC_FAILED_PENDING:
808811 case MPI_ERR_PROC_FAILED:
809812 MPIX_Comm_revoke (*fenix.world );
810813 MPIX_Comm_revoke (fenix.new_world );
811-
812814 if (fenix.user_world_exists ) MPIX_Comm_revoke (*fenix.user_world );
813815
814816 fenix.repair_result = __fenix_repair_ranks ();
@@ -819,7 +821,7 @@ void __fenix_test_MPI(MPI_Comm *pcomm, int *pret, ...)
819821 default :
820822 int len;
821823 char errstr[MPI_MAX_ERROR_STRING];
822- MPI_Error_string (ret , errstr, &len);
824+ MPI_Error_string (fenix. mpi_fail_code , errstr, &len);
823825 switch (fenix.unhandled_mode ) {
824826 case ABORT:
825827 fprintf (stderr, " UNHANDLED ERR: %s\n " , errstr);
0 commit comments