Summary:ASTERISK-18713: Autoservice thread is orphaned in a blind transfer during callparking
Reporter:Matt Jordan (mjordan)Labels:
Date Opened:2011-10-12 16:14:35Date Closed:2011-10-14 09:02:18
Versions:10.0.0-beta2 Frequency of
Environment:Ubuntu Lucid, Asterisk TrunkAttachments:
Description: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
Comments: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.