Ich versuch hier mal ein paar Antworten zu geben.
Bzgl initialization/finalization innerhalb von Anwendungen (keine Bibliotheken) habe ich bisher noch keine negativen Äußerungen gehört, was jedoch sein kann, ist dass in DLLs bzgl noch eher SOs (Shared Object, die Linux Variante von DLLs) hin und wieder etwas drunter und drüber geht (kann das allerdings jetzt weder bestätigen noch dementieren). Dies kann damit zusammenhängen, dass man (von Compiler Entwicklerseite her) an viele Dinge und Kombinationen dieser Dinge denken muss (zum Beispiel fehlende Linkernamespaces in Linux und die Problematik, dass man in Windows innerhalb von initialization/finalization (bei DLLs) nicht all zu viel machen sollte) und diese entsprechend umschifft werden müssen.
Was die Threads angeht: Zumindest unter Windows sollten sie stabil laufen (man muss natürlich auch threadsicher arbeiten und wissen was dies bedeutet). Unter Linux hat man das Problem, dass man auf eine externe Thread Bibliothek angewiesen ist (POSIX threads), welche nicht exakt so funktioniert wie die Windows
API und sich auch nicht immer alle Funktionen emulieren lassen. Deswegen kann es einerseits schon stimmen, dass Threads unter Linux nicht so stabil sind wie unter Windows. Andererseits kann es aber auch sein, dass man die selben Erwartungen an die
API (in diesem Fall TThread) stellt, wie unter Windows. Dieser zweite Teil kann eben nicht immer garantiert werden (übrigens nicht mal von
Win32 => WinCE).
Überhaupt ist es allerdings so, dass solche Sachen dann allerdings auch als Bugs gemeldet werden sollten, damit die Entwickler von Free Pascal auch wissen, dass da was schief läuft.
Ich würde dir empfehlen einfach mal auszuprobieren und zu schauen, ob du in diese Problemfälle gerätst, die der Autor von POWtils erwähnt hat (ich selbst hab nämlich noch keine solchen miterlebt).
Gruß,
Sven