On 14/11/2012, at 4:00 AM, 오재경 <[email protected]> wrote:

> Hi. every one.
> 
> I made a purge plugin. it creates and maintains hash memory to manage already 
> purged objects.
> 
> To keep hash memory slim I create a thread which clean expired objects 
> periodically. At first I used sigaction and SIGALRM but sometimes traffic 
> server gets hang-up.

Yeh, that's not really going to work. You would have to guarantee that nothing 
else in the process is going to use SIGALRM (which you can't do).

> The log pattern showed if traffic manager signal ‘10009’ and my signal 
> happens almost at the same time traffic server stops and doing nothing for a 
> couple of minutes. After a while traffic server forced to shutdown and 
> restart.
> 
> Now I don’t use signal in my plugin. but I wonder why I can’t use signal? and 
> How can I avoid it even when I use signal?

It sounds like you should be able to use TSContScheduleEvery(). If you can't do 
that for some reason, then you should use a mechanism that lets you safely 
handle the signal; kevent on *BSD, probably signalfd on Linux.

J

Reply via email to