IBM Support

PM18403: The state machine gets locked (no more reaction on events)

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • Description
    ------------
    
    ? The internal_lights object's behavior is described by several
    orthogonal state machines that are using null transitions only (
    transitions without trigger containing only guard conditions).
    ? All these parallel state machines are activated periodically b
    y trigging a triggered operation received by the object: this tr
    iggered operation itself has no effect, because there is no tran
    sition triggered directly by it.
    ? Like after any other event, the IDF framework finished by send
    ing a NULL event to the object in order to force it to evaluate
    the null transitions.
    ? As consequence, all the orthogonal sub-machines of the compone
    nt intercept the NULL event in the same call.
    ? A function named RiCReactive_pushNullConfig is called in the c
    ode to detect endless null event transitions
    
    
    ../..
        RiCReactive_pushNullConfig(?(Internal_Lights.ric_reactive));
    
       Internal_Lights.Power_On_Off_subState = Internal_Lights_With_
    Logic;
       RiCReactive_pushNullConfig(?(Internal_Lights.ric_reactive));
       Internal_Lights.With_Logic_subState = Internal_Lights_Idle;
       Internal_Lights.Power_On_Off_active = Internal_Lights_Idle;
    ../
    
    
    ? This function increment a small counter located on the three l
    ower bits of a bit field.
    
    
    void RiCReactive_pushNullConfig(RiCReactive* const me) {
           /*#[ operation pushNullConfig() */
           assert( me != NULL );
           if ( NULL != me )
             me-?omrStatus++;
    
    
           /*#]*/
    }
    
    
    ? The structure of this field is as follow:
    
    
    typedef enum RiCStatus {
       RiCDefaultStatus = 0x00,
       RiCNullConfig = 0x01,
       RiCNullConfigMask = 0x07,
       RiCShouldTerminate = 0x08,
       RiCInCleanup = 0x10,
       RiCShouldDelete = 0x20,
       RiCBehaviorStarted = 0x40,
       RiCShouldCompleteStartBehavior = 0x80
    } RiCStatus;
    
    structRiCReactive {
       /* Are we in a null configuration or termination? */
       /* Also used to count the number of null transitions.  */
       RhpInteger omrStatus;                /*## attribute omrStatus
     */
       /* The actual object that owns the reactive object.  */
       gen_ptr owner;                /*## attribute owner */
       /* flag to block self application of triggered operations */
       RhpUCharacter sm4busy;                /*## attribute sm4busy
    */
       /* Virtual table of functions to process events */
       RiCReactive_Vtbl * vtbl;                /*## attribute vtbl *
    /
       /* The event currently being processed.  */
       structRiCEvent* FAR_OBJ_REF current_event;                /*#
    # link current_event */
       /* There is only one task, but the generated code uses this.
     */
       structRiCTask* myTask;                /*## link myTask */
    };
    
    
    ? Consequently, when this counter reaches 8 the flag 'RiCShouldD
    elete' is set by accident.
    ? In this case the state machine is locked (no more reaction on
    events).
    
    
    The workaround we applied was to split the statemachine into two
     separate objects.
    
    If this counter was implemented on a separate byte in the Ricrea
    ctive this problem could be avoided.
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED:                                              *
    ****************************************************************
    * PROBLEM DESCRIPTION:                                         *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    The state machine gets locked (no more reaction on events)
    

Problem conclusion

  • Fixed in 7.6
    

Temporary fix

Comments

APAR Information

  • APAR number

    PM18403

  • Reported component name

    TLOGIC RHAPSODY

  • Reported component ID

    5724V74RP

  • Reported release

    750

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2010-07-14

  • Closed date

    2011-01-11

  • Last modified date

    2011-01-11

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    TLOGIC RHAPSODY

  • Fixed component ID

    5724V74RP

Applicable component levels

  • R750 PSN

       UP

[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SS7P9W","label":"Rational Rhapsody"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.5","Edition":"","Line of Business":{"code":"LOB59","label":"Sustainability Software"}}]

Document Information

Modified date:
11 January 2011