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 15-05-2012
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
EAccessViolation después de cerrar el programa

Hola,

Antes de nada, aclaro que quiero indicaciones de por donde atacar el problema, no espero una solución directa.

Tengo una aplicación que peta después de cerrarse, sale la típica ventana de windows "El programa dejó de funcionar y tal" y después de cerrarlo, aparece un EAccessViolation con una dirección de memoria fija 0002657C me hace suponer que es algo que se está destruyendo dos veces pero como digo, ocurre en el dpr después del Application.Run, es decir en el "end."

La aplicación es compleja: Delphi 7 Update 2 con FastMM, componentes IBX 7.11, Firebird 2.5, Indy 9.00, 3 ó 4 ActiveX con programación COM

Como todas las ventanas se crean en ejecución, he logrado acotar el problema a abrir la ventana principal del programa (MDI), cerrarla y obtener el pete. Ahí están las unidades de inicialización de IBEvents, Indy (Antifreeze), etc.


He configurado FastMM para que me enseñe las fugas de memoria, aunque he encontrado unas cuantas, no es nada del tipo de error que me da.

Tambien he usado la JCLDebug con el diálogo de Excepción, mostrando la pila de llamadas y tal, pero en ese punto de la aplicación ya no salta. Es más, tengo el "Stop on Delphi Exception" y el depurador de Delphi no se para.

¿Es correcto pensar que está fallando en una claúsula "finalization" y/o destructor de algo?
¿algo más que mirar?
¿alguna forma de abordar estos errores?

Saludos y gracias
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #2  
Antiguo 15-05-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Esos casos son de lo peor para encontrarlos
1- Puedes "desactivar" algún módulo, compilar y probar.
2- Si falla, entonces lo vuelves a activar y desactivas otro, compilas y pruebas.
3- Si no falla, ya sabes en qué módulo falla y si falla GOTO 2

Siento no poder ayudar mucho, pero ya sabes que estas cosas son de "prueba y error" y mucha lupa detectivesca
Responder Con Cita
  #3  
Antiguo 15-05-2012
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Hola

Yo "comentaría" los métodos (.Free) de todos los componentes, clases y/o formas que tengas creados en tiempo de ejecución y regresando uno a uno hasta encontrar el culpable, y en específico yo comenzaría por todos los TStrings

Saludos
Responder Con Cita
  #4  
Antiguo 16-05-2012
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Asias a ambos, es más o menos lo que hago, con FastMM detecto los memory leaks, desactivando módulos (son más de 300 ventanas) veo que pasa sólo con la ventana principal cargada. Ya he revisado todos los eventos de la ventana.

Incluso he revisado el subversion para ver qué han modificado en las últimas versiones, pero ni así, josss.

En fin, seguiremos rascando a ver si me toca el premio.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 16-05-2012
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.470
Poder: 21
newtron Va camino a la fama
Hola.

¿Has modificado el action del evento close de alguno de los formularios?.

A mi me pasaba algo parecido y lo solventé quitando el action de uno de los formularios.

Saludos
__________________
Be water my friend.
Responder Con Cita
  #6  
Antiguo 16-05-2012
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Al parecer el problema está en el IBEvents, al tiempo de destruirlo. Conste que uso delphi 7 update 2 + IBX 7.11 con Firebird 2.5, por tanto, para mí es lógico que pete de esta forma. Ya lo dijo el creador de interbase, que Firebird funcione con IBX es mera casualidad.

El componente lo crea y destruye el formulario principal. Hasta hace unas semanas funcionaba sin problemas. Ahora de buenas a primeras BOOOM.

Por cierto, me gusta mucho este código (puesto que usa Threads y demás, lo veo hasta lógico):
Código Delphi [-]
destructor TIBEvents.Destroy;
begin
  try
    if Registered then
      UnRegisterEvents;
  except
    // silence any exceptions which might be raised
    // by UnRegisterEvents during destruction
  end;
...
end;
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
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
Recuperar BookMark despues de cerrar dataset... verito_83mdq Varios 10 27-01-2011 00:03:18
Creacion de botones runtime, los cuales se mantengan despues de cerrar la aplicación giocatore Varios 18 25-01-2011 20:29:38
Como cerrar preview de QuickReport despues de imprimir AndGaG Impresión 1 11-05-2006 10:30:54
necesito cerrar el preview despues de imprimir cristok Impresión 1 13-06-2003 00:35:35
Evento MDIform despues de cerrar un formulario MDChild ing_alsaac Varios 3 02-06-2003 17:35:20


La franja horaria es GMT +2. Ahora son las 12:15:02.


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