DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUGĀ· RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://issues.apache.org/bugzilla/show_bug.cgi?id=41142>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED ANDĀ· INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=41142 ------- Additional Comments From [EMAIL PROTECTED] 2007-08-16 16:44 ------- This is a me too on this issue. This is a problem in apache 2.2.3 and 2.2.4. I have also "fixed" the problem by hacking up apr_allocator_destroy(). However my hack is ugly compared to Jens' modification. My environment is as follows: Solaris 10 (sparc) Sun Studio 11 compiler Apache 2.2.4 (also had problem with 2.2.3) php 5.2.3 mysql 5.0.45 apr 1.2.9 (I replaced the apr in srclib with 1.2.9) apr_dbd_mysql.c from http://apache.webthing.com/database apr is configured with: configure --prefix=/usr/local/apache2/apr apr-util is configured with: configure --with-mysql=/opt/mysql/mysql --with-apr=/usr/local/apache2/apr - -prefix=/usr/local/apache2/apr-util --with-expat=builtin apache is configured with: configure --enable-ssl --with-ssl=/usr/sfw --with-apr=/usr/local/apache2/ap r --with-apr-util=/usr/local/apache2/apr-util --enable-authn-dbd apr, apr-util, and apache all configure, compile, and install nicely. However a few minutes ( 1 -5 minutes) after startup of apache the httpd process are all consuming cpu and are stuck in an endless loop in apr_allocator_destroy(). With my "fixed" apr_allocator_destroy() function the problem is "fixed". Below is my ugly modified apr_allocator_destroy() function. This one happens to be from apr 1.2.9. APR_DECLARE(void) apr_allocator_destroy(apr_allocator_t *allocator) { apr_uint32_t index; apr_memnode_t *node, **ref; apr_memnode_t *old1, *old2;/*rsj 08/25/2006 add this to prevent spinning below*/ for (index = 0; index < MAX_INDEX; index++) { ref = &allocator->free[index]; while ((node = *ref) != NULL) { *ref = node->next; /* rsj 08/25/2006 The next 4 lines of code are added by me. The purpose is to keep from trying to free the same node over and over and over... This is what was happening when I attached dbx to an httpd process that was using 100% cpu. If old == *ref then we have the problem. That is why the if statement sets node->next to NULL because the original node->next points to its self. */ if(old1 == *ref) node->next = NULL;/*rsj 08/25/2006*/ if(old2 == *ref) node->next = NULL;/*rsj 08/25/2006*/ old2 = old1;/*rsj 08/25/2006*/ old1 = *ref;/*rsj 08/25/2006*/ free(node); } } free(allocator); } -- Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
