Error Handler



Runtime errors in the OO RTX or RTOS extentions are handled by the error handler RiCErrorHandler_error(), which is implemented as an endles loop. The C code is available in the source file RiCErrorHandler.c in the directory <your Rhapsody>\Share\WST_RXF_V5\<your product>\Source. You may change it according your needs.

The function RiCErrorHandler_error() uses enumerated constants, defined in RiCErrorHandler.h which are described below:

RIC_NO_ERROR This constant serves as base for th enumerated list, but is not actively used.
RIC_EMPTY_ME_PTR This is an internal error.
RIC_EVENT_QUEUE_FULL The event queue is full; you must increase the property WSTMaxEvents.
RIC_EVENT_QUEUE_EMPTY Reserved for future use
RIC_EVENT_CANCELLED Reserved for future use
RIC_TIMEOUT_HEAP_FULL The timeout queue is full; you must increase the property WSTMaxTimeouts.
RIC_TIMEOUT_NOT_FOUND Reserved for future use
RIC_REALLOC_MEMORYPOOL Reserved for future use
RIC_INFINITE_NULL_TRANSITIONS Most probably your UML model has entered an infinite loop. Please read the section on "Null Transitions" in the Rhapsody help by IBM Rational.
The constant RIC_DEFAULT_MAX_NULL_STEPS is set in RiCReactive.c
RIC_NO_LAST_STATE_IN_HISTORY The code generated for a UML History connector can not handle the current state
RIC_TOO_MANY_NULL_CONFIGS Reserved for future use
RIC_TOO_FEW_NULL_CONFIGS Reserved for future use
RIC_NULL_DESTINATION This is an internal error.
RIC_EVENT_DISCARDED Reserved for future use
RIC_ALLOCATING_ANOTHER_MEMORYPOOL Reserved for future use
RIC_EMPTY_MEMORY_PTR This is an internal error.
RIC_INVALID_MEMORY_PTR This is an internal error.
RIC_EMPTY_VTBL_PTR This is an internal error.
RIC_EMPTY_STATE_PTR Reserved for future use
RIC_EMPTY_STR_PTR This is an internal error.
RIC_CONFIG_ERROR The error code RIC_CONFIG_ERROR is most likely a failure in RiCMemoryPool_getMemory(); please verify if NO_MALLOC is set.

When the buffer pools which you can finetune are not sufficient, the error code RIC_CONFIG_ERROR is thrown when malloc() may not be used.

Either you must increase your buffers or allow use of the heap; in that case you must recompile your libraries. You can use the high water marks to verify the usage.

The error RIC_CONFIG_ERROR is also thrown when trying to allocate an X bytes in a buffer pool, which is larger than the size of a buffer in the large buffer pool; WSTLargeBufferSize should be increased.

When you debug your application and set a breakpoint in RiCErrorHandler_error() in RiCErrorHandler.c the call stack should help you understand what exactly went wrong. 
RIC_NO_MALLOC
This occurs when dynamic memory allocation would be needed but is not configured, via a constant NO_MALLOC set at OO RTX compile time.
RIC_ALLOC_FAILED No more dynamic memory is available. This occurs when malloc() or realloc() is called and return NULL. These functions are called when the constant NO_MALLOC is not set at OO RTX compile time.
RIC_NOT_IMPLEMENTED The functionality is not implemented. This error code is used in the PMF Shared Library when the buffer pools are exhausted and NO_MALLOC is not set. Use of malloc() is not supported when using the OO RTX in as a shared library.





Copyright (c) Willert Software Tools GmbH. All rights reserved.