Hi,
We are running apache 2.0.59, PHP 4.4.4 and eaccelerator 0.9.4. A few times a month apache ends up with all threads running the same portion of code over and over again.
If more info is needed, send an email to hakan@esportnetwork.com.
Here is the loop that is running over and over again:
(gdb)
117 EACCELERATOR_LOCK_RW ();
(gdb)
118 p = &eaccelerator_mm_instance->locks;
(gdb)
119 while ((*p) != NULL) {
(gdb)
120 if (strcmp ((*p)->key, x->key) == 0) {
(gdb)
131 p = &(*p)->next;
(gdb)
120 if (strcmp ((*p)->key, x->key) == 0) {
(gdb)
124 if (x->pid == (*p)->pid) {
(gdb)
133 if ((*p) == NULL) {
(gdb)
137 EACCELERATOR_UNLOCK_RW ();
(gdb)
138 if (ok) {
(gdb)
149 t.tv_sec = 0;
(gdb)
151 select (0, NULL, NULL, NULL, &t);
(gdb)
150 t.tv_usec = 100;
(gdb)
151 select (0, NULL, NULL, NULL, &t);
(gdb)
117 EACCELERATOR_LOCK_RW ();
(gdb)
118 p = &eaccelerator_mm_instance->locks;
(gdb)
119 while ((*p) != NULL) {
(gdb)
120 if (strcmp ((*p)->key, x->key) == 0) {
(gdb)
131 p = &(*p)->next;
(gdb)
120 if (strcmp ((*p)->key, x->key) == 0) {
(gdb)
124 if (x->pid == (*p)->pid) {
(gdb)
133 if ((*p) == NULL) {
(gdb)
137 EACCELERATOR_UNLOCK_RW ();
(gdb)
138 if (ok) {
(gdb)
149 t.tv_sec = 0;
(gdb)
151 select (0, NULL, NULL, NULL, &t);
(gdb)
150 t.tv_usec = 100;
(gdb)
151 select (0, NULL, NULL, NULL, &t);
(gdb)
117 EACCELERATOR_LOCK_RW ();
(gdb)
118 p = &eaccelerator_mm_instance->locks;
(gdb)
119 while ((*p) != NULL) {
(gdb)
120 if (strcmp ((*p)->key, x->key) == 0) {
(gdb)
131 p = &(*p)->next;
(gdb)
120 if (strcmp ((*p)->key, x->key) == 0) {