lighttpd+fastcgi: the process of test.fcgi will become zombie( <defunct>).

CHENG LIANG <[email protected]> Mon, 1 Nov 2010 16:24:20 +0000
Newsgroups gmane.comp.web.fastcgi.devel
Message-ID <[email protected]>


Hi, 

I have the problem for fastcgi and I can not figure out the
root cause.

 

I wrote fast cgi process in C using fcgi_stdio package under
lighttpd under linux 2.6.31. Suppose we call this fastcgi process as test.fcgi. In the test.fcgi,
I need periodically load some data into the memory (suppose it is function
data_load()) and I create a thread for it using pthread library because I do not
want to interrupt the service from test.fcgi. And the data in memory is in the
hash table which I use implementation from GLIB.and I use Alarm signal in the
test.fcgi to set up a timer to trigger the event to load data into memory. The
problem I have is that every time when Alarm signal send to test.fcgi, the process
of test.fcgi will become zombie( <defunct>).

 

 

The following tests have been done and I still have no idea
what is root cause.

 

Remove the pthread_create call and directly call function
data_load(), the problem still there.

 

Using different way to set up a timer, like, using function alarm(),
or using function setitimer(), the problem still there.

 

And if I do not operate memory in the function data_load(),
for example, make function data_load() empty, then the problem is gone.

 

 

>From the error.log of lighttpd, when test.fcgi becomes
defunct, there is no any message in it and after that, when I issue http
request to the test.fcgi service, I will have the following message in the
error.log and new process of test.fcgi will be created.

 

2010-11-01 12:09:23: (mod_fastcgi.c.1768) connect failed:
Connection refused on unix:/tmp/fastcgi.socket-0

2010-11-01 12:09:23: (mod_fastcgi.c.2956) backend died;
we'll disable it for 5 seconds and send the request to another backend instead:
reconnects: 0 load: 1

2010-11-01 12:09:23: (mod_fastcgi.c.2722) child signaled: 11

 

 

Since the signal 11 is SIGSEGV, so it looks like to me that
the problem is memory access in function data_load(). Is this idea making
sense?

 

 

Thanks a lot for any help.



Cheng Liang

_______________________________________________
FastCGI-developers mailing list
FastCGI-developers-xGejAJT2w6xVgU18Zptdi0EOCMrvLtNR@public.gmane.org
http://mailman.pins.net/mailman/listinfo.cgi/fastcgi-developers