Apache HTTP Server dejó de funcionar

Tamaño de letra:

XAMPP + Eclipse + XDebug: Apache HTTP Server dejó de funcionar

Curiosa e inesperadamente al intentar depurar un código php usando: Eclipse, XAMPP y XDebug ocurre un error interno y el servidor Apache deja de funcionar. Usando Windows XP dicho error no se produce pero en Windows Vista y en Windows 7 sí. El mismo aparece justo en el momento de pulsar el botón de inicio de la depuración. Buscando información por la red no encontré ninguna solución y estuve casi a punto de tirar la toalla, se me ocurrió una idea que tal vez puede ser una buena solución temporal.

Nota de editor: Parece ser que este error ha sido corregido, ya que, en estos momentos he testeado XAMPP 1.7.7 y funciona correctamente.

Las versiones y características que uso en este momento son las siguientes:

  • Eclipse: INDIGO, versión 3.7.0
  • XAMPP. Versión 1.7.4
  • XDebug. Versión 2.1.2
  • Windows 7 Profesional

Como acabo de decir y según lo que hemos realizado en estos tutoriales anteriores, al intentar depurar un simple código php recibo el siguiente error:

Error en Apache - XAMPP

Voy a poner aquí el reporte exacto del error:

  Nombre del evento de problema:    APPCRASH
  Nombre de la aplicación:    httpd.exe
  Versión de la aplicación:    2.2.17.0
  Marca de tiempo de la aplicación:    4cbbe9e8
  Nombre del módulo con errores:    php_xdebug.dll
  Versión del módulo con errores:    2.1.2.1
  Marca de tiempo del módulo con errores:    4e317b06
  Código de excepción:    c0000005
  Desplazamiento de excepción:    0000bee9
  Versión del sistema operativo:    6.1.7601.2.1.0.256.48
  Id. de configuración regional:    3082
  Información adicional 1:    0a9e
  Información adicional 2:    0a9e372d3b4ad19135b953a78882e789
  Información adicional 3:    0a9e
  Información adicional 4:    0a9e372d3b4ad19135b953a78882e789

"Marca del tiempo de la aplicación" es el timedatestamp tanto de la aplicación como del error. Desplazamiento de excepción es el offset.

Analizando el error

Si te fijas en la imagen anterior, podrás observar que el error se ha producido ejecutando la aplicación httpd.exe (Servidor Apache en XAMPP). Realmente el error (tal vez debería decir excepción no capturada por el manejador) se origina en la librería php_xdebug.dll que es la librería que descargamos desde su página web oficial, y corresponde al debugger XDebug. Es decir, el error es por culpa de la dll del depurador.

Puedo asegurar que busqué y rebusqué por la red este error en varios idiomas. No encontré solución y vi que no sólo se producía en Windows 7, sino también en Windows Vista. Como ejemplo, te invito a que visites la siguiente página y verás la cantidad de personas que tenían (posiblemente tienen) este problema en Windows Vista. El hilo fue cerrado finalmente: http://bugs.xdebug.org/view.php?id=410. Al final el administrador pone una librería en descarga que parece que soluciona el problema pero a mi me sigue saliendo lo mismo.

Seguí buscando y buscando, probando y probando configuraciones y nada de nada. Estuve a punto de "tirar la toalla" y cambiar el depurador XDebug por Zend Debugger pero se me ocurrió una cosa.

En mi experiencia con Ingeniería Inversa he visto muchas veces el error (la excepción) 0xc0000005. Ésta se produce muchas veces (observa que no digo siempre) cuando realizo un dumpeado y la IAT no está correcta. Entonces el programa al cargarse en memoria no encuentra la librería o la API que está definida en la IID y salta este error. Te lo voy a demostrar. Cojo un programa cualquiera, con un editor del PE header entro a ver las librerías importadas y modifico un parámetro para que salte un error. Ejecuto este programa y mira que ventana de advertencia me aparece:

Error aplicación

Como en el log del error pone el offset, cargué la librería en un desensamblador y parece ser que el error proviene de aquí (color verde):

1000BEE0  mov dword ptr ss:[esp+38],esi
1000BEE4  jle short 1000BF49
1000BEE6  mov ebp,dword ptr ds:[ebx+34]
1000BEE9  cmp dword ptr ss:[ebp+8],edx
1000BEEC  jnz short 1000BF36
1000BEEE  mov eax,dword ptr ss:[esp+10]

Realmente es muy extraño que en ese código se produzca una excepción 0xc0000005, no tengo claro que ahí esté el error ¡hmm!. La librería XDebug veo que está compilada con Visual C++ 6 o 7. Examino las librerías y API importadas y no veo nada fuera de lo normal. No me quiero entretener más con este error, hoy no estoy motivado para depurar ese código ya que lo he analizado muy por encima y requiere bastante tiempo. Además no puedo depurarlo desde Windows XP porque funciona correcto y desde Windows 7 el debugger ha crasheado varias veces...tal vez en un futuro lo haga.

En estos momento volví a mi antiguo Windows XP y ejecuté de nuevo toda la instalación de Eclipse + plugins + XAMPP + XDebug y sorprendentemente ¡funciona correcto!. ¿Cómo y por qué puede ocurrir esto? Podría ser alguna función de la librería XDebug, yo pienso que tal vez alguna relocación (reubicación-relocation) ya que en Windows 7 es diferente la dirección virtual de la carga de la librería y no es la que marca la Image Base, pero ahora mismo no lo sé.

Solución temporal

Quedaban 5 segundos para que eliminara XDebug, 4 segundos, 3, 2, 1 y en el último se me ocurrió que como funciona correctamente en Windows XP, ¿por qué no ejecuto XAMPP o Apache con compatibilidad con Windows XP? Fui a la instalación de XAMPP -> Apache -> bin, pulsé con el botón derecho del ratón sobre el archivo httpd.exe y seleccioné compatibilidad con Windows XP. Ejecuté xampp-control.exe y después depuré desde Eclipse et voilà!. Se ejecutó correctamente.

Servidor Apache en XAMPP - WXP

Cuando escribí este tutorial yo estaba utilizando las herramientas que he indicado al inicio pero a fecha de la publicación salieron nuevas versiones tanto de Eclipse como XDebug que todavía no he testeado y no puedo saber si han corregido este molesto error. Cuando tenga noticias o hagas tus pruebas lo comentaré.

Última actualización: Domingo, 15 Abril 2012
Comentarios  
0 # Fanox 22-12-2017 21:14
Si te tuviese en frente te besará asi de agradecido estoy :D
0 # karmany 23-12-2017 22:45
He recibido el beso virtual, :oops:
Un saludo.
0 # David Sandoval 07-03-2017 12:51
Buenas..

Este error tambien me estaba saliendo, hice lo de la compatibilidad de la version y siguio igual, no funciono, como ultima opcion ingrese al archivo php.ini ubicado en "\xampp\php\" o ingresando directamente por el panel de control de xampp; y modifique la parte que dice register_global s=On lo pase a register_global s=Off, guardar y nunca mas me volvio a aparecer el error.

Espero les sea de utilidad. Saludos.
0 # Martull 28-11-2013 12:33
Buenas,

A mí me ha funcionado sin problemas hoy, 28/11/2013, siguiendo las instrucciones salvo la instalación de Eclipse que me la han instalado mis compis de desarrollo (ellos lo usan para Java). Mi configuración:

Eclipse: INDIGO Service Release 2 (Build 20120216-1857)
XAMPP. Versión 1.2.2
XDebug. Versión 2.2.3
Windows 7 Profesional (64 bits)
0 # karmany 28-11-2013 18:47
Gracias por los datos, Martull.
Un saludo.
0 # Brenda 15-07-2013 16:16
hola, tengo el mismo problema q citas a un inicio, q apache http server dejo de funcionar, pero eso solo sucede cuando redirecciono a un modulo de symfony, estoy usando netbeans, hize lo q sugieres lo de activar el modo de compatibilidad pero no arranca apache, lo mas raro es q antes funcionaba todo correctamente asi como esta :sigh:
0 # GRegorio 15-07-2013 16:28
estas utilizando la ultima version de XAMPP?
Si antes funcionaba, recuerdas cual es ultimo modulo que instalaste, a ver si está hay el problema
0 # @e1000iosoy 27-04-2013 17:28
Ejecutándolo en modo compatibilidad windows xp , bajo un windows 8 x64 me vuelve a funcionar!. Un saludo.
0 # karmany 27-04-2013 18:28
Muchas gracias @e1000iosoy por comentar cómo lo solucionaste en W8 64bits.
0 # diego 07-02-2013 00:40
Estoy corriendo Xampp V 3.1.0 3.1.0 en windows 8 y cada ves que reinicio apache el programa dice "xampp-control. exe dejó de funcionar", lo corregi con la sigerencia de cambiar la compatibilidad de los ejecutables de xampp
0 # karmany 07-02-2013 17:01
Gracias por comentar tu solución.
Un saludo
0 # Edgar 06-02-2013 22:55
yo hice ese cambio que mencionas pero estoy usando dreamweaver 6. hice la prueba y me sigue dando el mismo error
0 # karmany 07-02-2013 17:03
¿Usas la última versión de XAMPP? ¿Te da problemas únicamente con el uso de Dreamweaver 6?
0 # sexrock 28-12-2012 18:17
Pues no, no lo pude solucionar e intenté mil soluciones más pero el error seguía saliendo. Ahora la apliación está corriendo en una pc con windows xp y la solución será instalarle linux debian al servidor, como debió haber sido desde un principio. Saludos!
0 # sexrock 20-12-2012 19:54
Me pasa los mismo, en un servidor con windows server 2008. Espero que nmo me vuelva a salir ese error del diablo. Luego te digo si funciona. Saludos.
0 # karmany 20-12-2012 20:14
¡Vaya!, ojalá tengas suerte y nos cuentas cómo lo solucionaste.
Un saludo y gracias por comentar.

No tiene privilegios para responder a los comentarios.


 
Visitas: 8487961