Vale, estoy acotando las posibilidades, y ya se mas o menos en que parte se produce el error.
Puede ser justo al liberar la ventana, la cual creo y destruyo asi:
Código Delphi
[-]form:=Tform.create(self);
form.showmodal;
form.release;
He leido en alguna parte que también hay que hacer form:=nil, yo no lo hago, y hasta ahora todo ha ido bien.
También hay un par de Tstringlist que se liberan antes del close del form, pero creo que se liberan correctamente. Por si era eso las he sacado a una unit global que tengo para compartir variables, asi solo las creo y las destruyo una vez durante la vida del programa.
Yo, por más que pruebo núnca he conseguido obtener el error, pero me consta que aparece algunas veces.
Sobre los handles, una vez acotado el error, los handles estan fuera, y además se liberan bien.
Voy a compilar y lo llevo a un ordenador, donde se que en menos de una semana sale el error, a ver que pasa.
Mientras tanto, aprecio las sugerencias.