|ASTERISK-18713: Autoservice thread is orphaned in a blind transfer during callparking
|Matt Jordan (mjordan)
|Ubuntu Lucid, Asterisk Trunk
|This error is reproducible using the Asterisk TestSuite's callparking test, run under pessimistic mode.
At the end of the test, the autoservice thread is detected as being present after the test is executed.
What appears to be happening is that the music on hold being played through the local channel is stopped and a request to kill the autoservice thread occurs, but a null frame, hangup frame, or other deferrable frame is never returned from the ast_read on the local channel. Debugging shows that the autoservice thread is blocked permanently on the ast_read call (line 127) in autoservice.c.
Note that this behavior can be reproduced in other tests that make use of autoservice threads, such as pbx_lua_background
|By: Matt Jordan (mjordan) 2011-10-14 09:02:07.194-0500
After discussion and further diagnosing, this behavior is actually expected. Once created, the autoservice thread polls in the background for channels to service. This continues until Asterisk is stopped. As such, any test that exercises a portion of the codebase that uses the autoservice thread should have an exclusion for this thread in the post-test conditions.