No i sprawa się wyjaśniła. :-)
Pomijam sprawę niewystarczającego destruktora (kosmetyczną w zasadzie).
Geneza:
Otóż: klasa TSlownik miała var slownik: TSlownik jako public w formX: TForm.
Następnie było sobie gdzieś tam slownik := TSlownik.Create (...);
Ten obiekt był kilka razy tworzony i niszczony w innych oknach, ale zawsze było ok, dbałem o higienę tego obiektu.
Problem pojawił się, kiedy przy zamykaniu aplikacji, formX był niszczony przed innymi, które ciągle mogły korzystać z var slownik.
Podsumowując, dzięki woolfikowi zagłębiłem się w destruktor, a dzięki przejęciu onDestroy każdej z form zauważyłem problematyczną kolejkę niszczenia form.
Rozwiązanie:
Rozwiązaniem okazało się przeniesienie var slownik z członka obiektu TForm na obiekt, który istnieje do samego końca.
Dzięki wielkie.