[SR-Users] Issue with Async module

Surendra surendra.pullaiah at plintron.com
Thu Feb 20 15:13:26 CET 2014


Hi Daniel,


	I am using async module to continue the transaction in
asynchronously. But I am observing a leak in shared memory. Then i checked
the code, we are not freeing the async_item_t  after calling t_continue.
Same this has checked with MEMDBG=1. 

Original code:
while(1) {
         lock_get(&_async_list_head->ring[slot].lock);
         ai = _async_list_head->ring[slot].lstart;
         if(ai!=NULL)
                 _async_list_head->ring[slot].lstart = ai->next;
         lock_release(&_async_list_head->ring[slot].lock);

         if(ai==NULL)
                 break;
         if(ai->act!=NULL)
                 tmb.t_continue(ai->tindex, ai->tlabel, ai->act);
 }


Changed code:

while(1) {
         lock_get(&_async_list_head->ring[slot].lock);
         ai = _async_list_head->ring[slot].lstart;
         if(ai!=NULL)
                 _async_list_head->ring[slot].lstart = ai->next;
         lock_release(&_async_list_head->ring[slot].lock);

         if(ai==NULL)
                 break;
         if(ai->act!=NULL)
		{
                 tmb.t_continue(ai->tindex, ai->tlabel, ai->act);
			shm_free(ai); /* Added by surendra */
		}
 }

Please correct this if I am wrong.


Regards
@surendra






More information about the sr-users mailing list