OpenClovis / SAFplus-Availability-Scalability-Platform

Middleware that provides libraries, GUI, and code generator to design multi-node (clustered) applications that are highly available, redundant, and scalable. Provides sub-second node and application fault detection and failover, and useful application libraries including distributed hash tables (checkpoint), event, logging, and communications. Implements SA-Forum APIs where applicable. Used anywhere reliability is a must -- like telecom, wireless, defense and enterprise computing. Download stable release with installer from: ftp.openclovis.com
www.openclovis.com
GNU General Public License v2.0
19 stars 13 forks source link

Memory Leak in safplus_amf #91

Open CangTranOC opened 11 years ago

CangTranOC commented 11 years ago

Issue 1:

Lets say -- clAmsMgmtCCBInitialize(&handle); clAmsMgmtCCBSetCompSUList... clAmsMgmtCCBSetCompSUList...

boom ... -> process crashed here before Process crashes before clAmsMgmtCCBCommit and clAmsMgmtCCBFinalize.

CCBCommit would have deleted the ccb operation entries for entities/operations pertaining to the handle from the container that were enqueued by AMF for the prior calls to SetCompSUList, etc.

But if you miss the commit and the finalize, and you get restarted and do the same thing all over again, you would get a new ccb handle with a new index into the container that stores operation entries. (ccb operation entries in the container that are played on clAmsMgmtCCBCommit)

The obvious fix is to finalize/delete the ccb handle specific to the process on process exit. This implies, you need to map the ccb handle to the component (keep a hash based on comp name,etc. and rip the ccb handles or other mgmt. handles on process exit