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