We always access globalComponentList[] at indexComponent=-1 which causes a segfault. Use i as the index instead. Signed-off-by: Qais Yousef --- bellagio-0.9.3/src/omx_reference_resource_manager.c.old 2012-03-13 10:15:25.743940980 +0000 +++ bellagio-0.9.3/src/omx_reference_resource_manager.c 2012-03-13 10:18:02.201971009 +0000 @@ -485,7 +485,6 @@ OMX_ERRORTYPE RM_removeFromWaitForResource(OMX_COMPONENTTYPE *openmaxStandComp) { omx_base_component_PrivateType* omx_base_component_Private; int i = 0; - int indexComponent = -1; DEBUG(DEB_LEV_FUNCTION_NAME, "In %s\n", __func__); omx_base_component_Private = (omx_base_component_PrivateType*)openmaxStandComp->pComponentPrivate; @@ -493,16 +492,13 @@ while(listOfcomponentRegistered[i].component_name != NULL ) { if (!strcmp(listOfcomponentRegistered[i].component_name, omx_base_component_Private->name)) { // found component in the list of the resource manager - removeElemFromList(&globalComponentList[indexComponent], openmaxStandComp); - break; + removeElemFromList(&globalComponentList[i], openmaxStandComp); + DEBUG(DEB_LEV_FUNCTION_NAME, "Out of %s\n", __func__); + return OMX_ErrorNone; } i++; } - if (indexComponent <0) { - // No resource to be handled - DEBUG(DEB_LEV_ERR, "In %s No resource to be handled\n", __func__); - return OMX_ErrorNone; - } - DEBUG(DEB_LEV_FUNCTION_NAME, "Out of %s\n", __func__); + // No resource to be handled + DEBUG(DEB_LEV_ERR, "In %s No resource to be handled\n", __func__); return OMX_ErrorNone; }