[comp.sys.isis] bug and fix

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