Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-02-2017
Avatar de noshy
noshy noshy is offline
Miembro
 
Registrado: jul 2003
Posts: 139
Poder: 21
noshy Va por buen camino
Cita:
Empezado por Al González Ver Mensaje
Veo que es una aplicación de 64 bits (16 dígitos hexadecimales para las direcciones de memoria). ¿Te es posible compilar y ejecutar la aplicación en 32 bits? ¿Ocurrirá el mismo problema como aplicación de 32 bits?

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.
Hola, si es una app de 64 bits, si lo compilo en 32 me pasa lo mismo no hay mejora.

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 01:36:05.
Responder Con Cita
  #2  
Antiguo 08-02-2017
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por noshy Ver Mensaje
El código del thread es el que publique arriba, lo publique en dos partes [...] 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.
¿Qué uso tiene ese componente y qué propósito tiene ese evento en particular? (Casi no he usado los Indy).

¿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:
Código Delphi [-]
  Function ValidarCosa1 :Boolean;
  Begin
    Try
      // Código actual...
    Except
      On E :Exception Do
        ShowMessage ('Excepción en ValidarCosa1: ' + E.Message);  // <--- Y/o "log" a disco
    End;
  End;
A fin de encontrar cuál de todas ellas es la que genera la excepción.
Responder Con Cita
  #3  
Antiguo 08-02-2017
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
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...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #4  
Antiguo 08-02-2017
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Podes usar el depurador remoto sin necesidad de instalar todo Delphi. Busca en la documentación PAServer
Responder Con Cita
  #5  
Antiguo 06-03-2017
Avatar de noshy
noshy noshy is offline
Miembro
 
Registrado: jul 2003
Posts: 139
Poder: 21
noshy Va por buen camino
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 <--_/
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
no me detecta teclado numero Rofocale Varios 4 20-06-2011 23:00:14
BDS 2006 no detecta el IIS 7 en Win Vista ozrics Windows 0 17-06-2007 04:19:45
Software k detecta hardware Mrcl Debates 2 03-01-2007 22:07:58
la función SetSchemaInfo no detecta los índices amezeta32 Conexión con bases de datos 1 29-08-2006 22:51:53
¿Cua es el error que me detecta???? gandalf_27 C++ Builder 1 27-04-2006 19:57:44


La franja horaria es GMT +2. Ahora son las 03:25:52.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi