@Sekel,
Sorry to say, but you are completely wrong. Well, actually, I really do not know how lazarus is working with it. As far as Delphi is concerned, if you have a global TList and you want to mess with it from thread, you need to lock it ONLY when thread access it, to prevent colission (especially if you are deleting from the list).
In Delphi or C++, when you create critical section, no matter from where and lock it, it is global. Otherwise doesn't make sense.
If lazarus does in different way, then it is a bug.
@Theo
Thanks, worked as expected.