FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Un error que ni EurecaLog detecta!!!
Hola gente, como estan? la verdad yo hace varios dias que no duermo tratando de encotnrar un error en una aplicacion que tengo.
Les comento: Esta aplicacion esta instalada en un servidor Windows Server 2008 R2, es una aplicacion que basicamente escucha un puerto socket (tidTcpServer indy10.6), está desarrollada en Rad Studio XE5. Con esta aplicacion controlo una app (solo para android) para guardar en una database la posicion del celular. En realidad, con respecto al codigo no tengo ningun problema, la aplicacion funciona perfectamente, pero de vez en cuando, sin tener intervalos determinados me aparece el error que muestro en la imagen. A veces puede estar 10 minutos y parece, a veces puede pasar dias sin aparecer y ya no se que hacer, cuando los tirna la aplicacion sigue funcionando pero si lo dejo al juntar tantos error me genera un error critico en el server y debo reiniciarlo. He probado con EurekaLog y no me detecta absolutamente nada, inclusive el error de la imagen es la aplicacion con eureka, me parece queel problema es de un nivel mas bajo que el codigo, pero ya no se que hacer. Si a alguien le ha aparecido, si pueden dilucidar que es, se lo agradeceria.
__________________
\_--> NoShY <--_/ |
#2
|
||||
|
||||
Me van a preguntar del codigo, lo agrego por las dudas.
Lo subo en un archivo adjunto ya que posee mas 50.000 caracteres y el mensaje me permite 30.000.
__________________
\_--> NoShY <--_/ |
#3
|
||||
|
||||
Hola noshy, te confieso que no he mirado el código.
Lo que te puedo recomendar es que agregues logs a tú aplicación. La idea es ir llevando el registro de lo que va pasando. Asi podes ir acercándote cada vez más al lugar el donde ocurre la excepción y bajo qué contexto. Tenés habilitado el reporte de Eureka log? Genera un archivo con la traza y mucha más información muy útil |
#4
|
||||
|
||||
No he revisado el código aún pero mis preguntas son
- ¿Es una aplicación o un servicio? - ¿Se inicia solo o hay que iniciarlo? Si es lo primero ¿que sucede si se resetea el Servidor y a los minutos u horas, se bloquea la pantalla (no confundir con el protector de pantalla) como suele suceder en estos sistemas? - ¿Que sucede si se pierde la conexión? |
#6
|
||||
|
||||
Yo te pediría, para empezar, que mostraras el primer mensaje de error que te sale (el de la ventana que está hasta atrás). ¿Es igual al resto?
|
#7
|
||||
|
||||
Cita:
Tambien habilite para que chequeara los threads, ya que cada lectura del socket lo realiza en un thread diferente. Cita:
Cita:
Creo y destruyo Query's en cada sentencia SQL. Cita:
He limpiado un poco el codigo, sacando todos los try / except para ver si me salta el error en alguna linea y nada, me sigue saltando el mismo error. He estado investigando un poco y me estoy tirando por el lado de que windows server 2008 R2 tenga un limite de conexiones TCP pero no he encontrado nada concreto y calculo yo que me deberia ingorar el resto de las conexiones y no tirarme el error que estoy teniendo (https://www.outsystems.com/forums/di...-web-requests/). Algo muy curioso es que me levanta el uso de la memoria, al iniciar comienza con 10 mb y despues de toda la noche llego a 73 mb, revise de destruir todos los componentes creados pero sigue igual. Editado: Otro dato, tengo habilitado el evento OnException del componente Indy y tampoco me toma la exception por ahi, me larga el dialogo directamente.
__________________
\_--> NoShY <--_/ |
#8
|
||||
|
||||
__________________
\_--> NoShY <--_/ |
#9
|
||||
|
||||
__________________
\_--> NoShY <--_/ |
#10
|
||||
|
||||
El codigo de arriba es el codigo ya limpio de todas las pruebas con try / except, por si alguien lo quiere revisar.
__________________
\_--> NoShY <--_/ |
#11
|
|||
|
|||
Prueba con MadExcept lo puedes usar gratis mientras no sea para fines comerciales.
|
#12
|
||||
|
||||
Cita:
Por otro lado, un AV con dirección de memoria muy baja es sintomático de intentar usar un objeto Nil; en el desplazamiento 2C8 de la instancia del objeto estaría el campo al que se desea acceder. Si es así, ese desplazamiento pareciera el de un objeto cuya clase posee cierto número de propiedades (particulares más heredadas). Digamos que objeto pequeño no es. ¿Es posible que al momento de capturar esa imagen haya habido alrededor de 30 hilos activos? (Uno por cada ventana de error). Es casi seguro que esas ventanas de error en cascada surgen de algo que se está ejecutando en segundo plano. ¿Cuál es el código que programaste para esos hilos? Y ¿hay otros hilos para otras tareas? Saludos. Al González. |
#13
|
||||
|
||||
Cita:
gracias, lo probare!!!
__________________
\_--> NoShY <--_/ |
#14
|
||||
|
||||
Cita:
Con respecto a que es un obejto = nil, yo pense lo mismo,pero seguramente no es un objeto que yo creo en el código, ya que si fuera asi me lo tomaria alguna exception, y no lo toma inclusive me lo deberia tomar eurekalog, o me daria error en algunos hilos y no en todos. Para que te des idea del porque la cantidad de dialogos de error, la app funciona perfectamente hasta que en un momento todos los hilos comienzan a generar el mismo error, es como que en cada paquete que recibe se genera el error, que es lo que me llama la atencion ya que si fuera un objeto mal cerrado o algun paquete recibido con error no pasaria en todas las conexiones, o sea que lo que ves que son 30 dialogos con error en realidad son muchos mas porque sobre el margen inferior derecho estan superpuestos y es imposibles cerrarlos a mano ya que tengo un aproximado de 7 conexiones por segundo, imaginate la cantidad de errores que larga en ese momento. Editado: Elcodigo del thread es el que publique arriba, lo publique en dos partes porque no entraba todo en un solo mensaje, ese es el procedimiento del evento OnExecute delcomponente Indy TCPServer. La primer parte son las funciones declaradas dentro del pocedimiento para que las cargue en cada thread y la segunda parte esel procedimiento en si.
__________________
\_--> NoShY <--_/ Última edición por noshy fecha: 08-02-2017 a las 02:36:05. |
#15
|
||||
|
||||
Cita:
¿El código se ejecuta con sincronía/semáforos? Esto lo pregunto porque ahí veo referencias a elementos de la interfaz de usuario, que si no controlas la sincronía tendrás problemas de colisión. ¿Te es viable elaborar una aplicación de prueba donde te asegures de llamar tú mismo a ese manejador de eventos desde numerosos hilos a fin de provocar el error de forma controlada en tu computadora de desarrollo? ¿Hay forma de instalar el entorno de Delphi en la computadora donde actualmente ocurre el problema y ejecutar ahí la aplicación con el depurador activo, a fin de detectar con el mismo IDE el código fuente donde ocurre la excepción inicial? Por ahora te recomiendo que encierres el código fuente de cada una de esas rutinas en un Try-Except similar a este: A fin de encontrar cuál de todas ellas es la que genera la excepción. |
#16
|
|||
|
|||
Hola...
¿Has intentado buscar la dirección que indica el mensaje de error? Se supone que la dirección 988441 contiene el código que genera el error. Intenta buscar esa dirección dentro del IDE de Delphi. En el menú Search - Go to Address ingresa esa dirección a ver a que parte de tu código te lleva (la aplicación debe estar ejecutándose y pausada). También podrías intentar algo de lo aquí indicado: How do I debug an Access violation in the field? Saludos... |
#17
|
||||
|
||||
Podes usar el depurador remoto sin necesidad de instalar todo Delphi. Busca en la documentación PAServer
|
#18
|
||||
|
||||
Hola a todos, disculpen la demora en responder pero estuve de vacaciones.
El tema ya lo solucione, realice varios cambios asi que no se bien cual de todos lo solucionó o si fue un conjunto de todo. En primer lugar en vez de compilarlo en XE5 lo migre a 10.1 Berlin, el cambio lo realice porque en XE5 utilizaba la libreria uLkJSON.pas y en Berlin tiene su propia libreria JSON, el error seguia apareciendo pero con menos frecuencia. Luego, yo tenia creada una conexion con la data base en tiempo de diseño y los query que creaba en los hilos del socket los ligaba a ella, el cambio que realice fue crear una nueva conexion para cada hilo que se crea en el socket, obvio son mas recursos pero mejoro la cosa. Y el tercer cambio fue no utilizar ningún componente visual como lo estaba haciendo, utilizaba un memo para ir mostrando el log (no creo que haya sido este el problema). Con todos estos cambios el error desapareció. Gracias a todos por su ayuda. Saludos
__________________
\_--> NoShY <--_/ |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
no me detecta teclado numero | Rofocale | Varios | 4 | 21-06-2011 00:00:14 |
BDS 2006 no detecta el IIS 7 en Win Vista | ozrics | Windows | 0 | 17-06-2007 05:19:45 |
Software k detecta hardware | Mrcl | Debates | 2 | 03-01-2007 23:07:58 |
la función SetSchemaInfo no detecta los índices | amezeta32 | Conexión con bases de datos | 1 | 29-08-2006 23:51:53 |
¿Cua es el error que me detecta???? | gandalf_27 | C++ Builder | 1 | 27-04-2006 20:57:44 |
|