Hi.

The lock/unlock fix may help but it doesn't fix the problem. I patched
my tree with the jk_mt.h modification and I investigated the bug even
deeper.

The problem was in jk_connect.c, jk_tcp_socket_recvfull, recv call. It
seems that Tomcat 4.03 (I didn't try with CVS head version...) sometimes
doesn't send all the data required. So, mod_jk blocks in recv forever,
causing a deadlock.

I patched my tree with the following:

-- jk_connect.c, jk_tcp_socket_recvfull
-- after while(rdlen < len) {

int this_time, select_ret;
fd_set set;
struct timeval timeout;
      
FD_ZERO(&set);
FD_SET(sd, &set);

timeout.tv_sec = 3;
timeout.tv_usec = 0;

select_ret = select(sd+1, &set, NULL, NULL, &timeout);

if (-1 == select_ret) {
        return -1;
}

if (0 == select_ret) {
        return -1;
}

-- before this_time = recv(sd,

The deadlock is gone and I'm very happy! :)

Thanks,

jeff

On Wed, 2002-06-05 at 21:25, [EMAIL PROTECTED] wrote:
> Hi, 
> 
> I found the problem, it seems the lock/unlock were in the wrong order.
> 
> Please checkout from head and try again, and let me know if it still
> fails.
> 
> ( thanks for reporting it )
> 
> Costin
> 
> On 5 Jun 2002, Jean-Francois Nadeau wrote:
> 
> > Hi.
> > 
> > I started to load / stress test our web application. It is running under
> > Apache 1.3.22 and Tomcat 4.03 and the mod_jk binary that came with it.
> > The OS is Linux 2.4.7, RedHat 7.2 without any updates.
> > 
> > I discovered that httpd processes deadlock after a certain amount of
> > huge requests.
> > 
> > I decided to investigate the issue by looking at the source code. The
> > jk_handler function does not terminate. In fact, the call to
> > end->done($end, l) (just before the jk_close_pool) deadlock (not always
> > however). That function calls pthread mutex lock/unlock for connection
> > reuse.
> > 
> > I tried to comment all connection reuse code. (in jk_ajp_done,
> > jk_ajp_service, jk_ajp_getendpoint). The deadlock is not gone, but it
> > appears later.
> > 
> > Have you ever encountered this problem before? I'd like to fix it. May
> > it be a kernel bug, glibc bug? (The problem seems to come from pthread
> > mutexes...)
> > 
> > Thanks a lot,
> > 
> > jeff
> > 
> > 
> > --
> > To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
> > 
> > 
> 
> 
> --
> To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
> 
> 



--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to