ken@gvax.cs.cornell.edu (Ken Birman) (04/11/90)
In all current released of ISIS (V1.3.1, V2.0) there is a problem associated with the macros "ENDFROMC" and ENDFROMFORTRAN". In clib/cl_task.h you will find that both of these macros have the following bodies: #define ENDFROMC isis_state = state; } #define ENDFROMFORTRAN isis_state = state; } These should be changed to: #define ENDFROMC isis_state |= state&ISIS_XBYREF; } #define ENDFROMFORTRAN isis_state |= state&ISIS_XBYREF; } This eliminates a race condition that can cause applications to hang under heavy load. The problem was that the state vector had bits in it other than the "push by ref" bit that might change while in the enclosed block; if so, the old definition wiped out that change, which might have been important. Recompile clib and relink your applications when you make this change. Ken