[asterisk-bugs] [JIRA] (ASTERISK-20786) Taskprocessors can leak memory

Mark Michelson (JIRA) noreply at issues.asterisk.org
Wed Dec 12 10:36:45 CST 2012


Mark Michelson created ASTERISK-20786:
-----------------------------------------

             Summary: Taskprocessors can leak memory
                 Key: ASTERISK-20786
                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-20786
             Project: Asterisk
          Issue Type: Bug
      Security Level: None
          Components: Core/General
    Affects Versions: 11.1.0, 10.11.0, 1.8.19.0, SVN
            Reporter: Mark Michelson
            Severity: Minor


Taskprocessors work by having tasks pushed into them along with a pointer to some data. Since the task is handled in a separate thread from where the task was pushed, the task data is always heap-allocated.

This task data is freed by the task once it has finished doing whatever processing is necessary. This is sufficient for the general majority of the time.

However, when a taskprocessor gets shut down, any tasks currently queued in the taskprocessor will not have their task data freed since the tasks themselves will not be run. Currently, taskprocessor shutdown tends to correspond with Asterisk shutdown, so if there is any leaked memory, it is reclaimed by the kernel anyway.

I propose that the taskprocessor API needs to be changed so that ast_taskprocessor_push() has a new parameter, a pointer to a "free" function. This free function is intended to free the allocated task data. This function will be called automatically by the taskprocessor after processing a task so that tasks themselves are no longer responsible for freeing the task data. In addition, during taskprocessor shutdown, the task data can be freed when the task queue is emptied out.

Discussion will need to happen to determine if this change is important enough to allow for an API change in released versions of Asterisk. I consider this problem to be very minor at the moment and so this should really go into trunk only. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira



More information about the asterisk-bugs mailing list