2016-04-11 14:38 GMT+02:00 Sven Barth <pascaldra...@googlemail.com>: > There is another problem that occurred to.me after my previous mail. Have > you ever heard of the "static initialization order fiasco"? I've stumbled > upon that a few weeks ago at work with C++ and was glad that we don't have > that problem in Pascal, but with the new management operators and the need > to have global variables be initialized correctly as well this would change > - which would be very bad as this is a hard to debug problem. > Even worse, currently is possible to achieve some similar... I've experienced from another side - "static finalization order fiasco" for Generics.Collections (fixed 24 Dec 2015 https://github.com/dathox/generics.collections/commit/fda586932bd80ef58c08f8ebf5a24316ca4ccca5 ).
I can confirm that "static initialization/finalization order fiasco" bugs are really hard to debug. In my case for Generics.Collections was something like this (maybe not the same but very similar): === X === program X; uses UnitA, ..., UnitZ, GC, Generics.Collections, Unit1; ... === GC === ... interface var G: Contnrs.TObjectList; implementation ... initialization G := Contnrs.TObjectList.Create(True); finalization G.Free; // !!! end. === Unit1 === ... somewhere in code ... var d: TDictionary<string, string>; begin d := TDictionary<string, string>.Create; G.Add(d); === END CODE === at line marked by "!!!" was memory corruption, because any of manual interface used by dictionary was already destroyed in static/class destructor in Generics.Defaults... Really hard to find that kind of bug. What was funny the corruption was visible only on android... Anyway bug is fixed :) > I'll provide you with an example when I'm back home again in the evening. > > > Sven, could you look at topic "Management operators AddRef and Copy vs > Copy" thread? New operators are ready for test in branch, anyway we can > adjust the naming of AddRef and Copy. Florian proposed "Clone" (instead of > Copy) and "Copy" (instead of AddRef). > > I've yet to find a quiet minute to digest that one :P > Ok! Thanks. I'm looking forward :P -- Best regards, Maciej Izak
_______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel