Ver Mensaje Individual
  #5 (permalink)  
Antiguo 09/01/2008, 11:12
srfrogster
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Problema con la ejecución de cgi's

Pufff,
me parece que he encontrado dónde falla, pero no el porqué:
- Resulta que los ficheros ".dir" y ".pag" sobre los que hago el "dbmopen/tie" los he copiado vía ftp de la máquina en la que sí funciona.
- Al intentar abrir estos ficheros me da el error de "segmentation fault", pero si yo me genero con un script mi par de ficheros ".dir/.pag", sí que funciona y puedo añadirles datos y luego leerlos.
- Lo curioso viene ahora, según he comprobado en ambas máquinas, los ficheros "dir/pag" de una de ellas no funciona en la otra, es decir: Los ficheros "dir/pag" de la máquina 1 no son accesibles en la máquina 2 y los ficheros "dir/pag" creados en la máquina 2 no son accesibles en la máquina 1.
- Si quito los ficheros "dir/pag" conflictivos de la máquina donde me salía el error y ejecuto los cgi's, éstos funcionan de lujo.

Las diferencias que he visto entre ambas máquinas son:
Máquina 1 --> SunOS 5.8 en Inglés, con perl 5.8.7 (en el anterior mensaje puse que tenía un perl con 5.8.4 en la máquina en la que funcionaban los cgi's, en vez de 5.8.7....mis disculpas, porque me imagino que te habrá despistado)
Máquina 2 --> SunOS 5.10 en Español, con perl 5.8.4 (aquí es donde no funcionaba)

También he probado en otra máquina a la que tengo acceso:
Máquina 3 --> SunOS 5.8 en Inglés, con perl 5.8.6
En esta, se puede acceder a los "dir/pag" de la máquina 1, pero no a los de la máquina 2

Y por esto, me temo que pueda ser debido más al Solaris que al perl.

Aún así, he hecho un "truss -rall -wall" del script, como me indicaste, y el resultado de esto es que al principio sí que lee bien los ficheros, pero llega un momento en el que empieza a generar breaks en muchísimas direcciones de memoria y finalmente da un error gordo y termina:

brk(0x08946348) = 0
brk(0x08946348) = 0
brk(0x0894C348) = 0
Incurred fault #6, FLTBOUNDS %pc = 0xD25E6B64
siginfo: SIGSEGV SEGV_MAPERR addr=0x0894D000
Received signal #11, SIGSEGV [default]
siginfo: SIGSEGV SEGV_MAPERR addr=0x0894D000

Por lo que he estado leyendo por ahí, parece que este error surge cuando se está intentando acceder a una posición de memoria más allá de la que tiene mapeada el kernel (casi nada). El motivo de que se dé el error aquí y no en la otra máquina.....¿igual pudiera ser porque esta máquina es en realidad un servidor virtual? ¿puede ser que desde este servidor virtual se esté intentando acceder a posiciones de memoria que pertenecen a otro servidor virtual dentro de la misma máquina física?....ni idea, habrá que seguir dándole vueltas