From: Martin C. <cos...@wa...> - 2004-12-22 08:24:12
|
Mark Treiber wrote: > Thanks everyone for the tips. I'm suprised this hasn't been brought > up on this list yet (or at least I havn't been able to find it).. Well, it is brought up when it bites someone. There is a rather long thread on fink-devel from summer 2003 about how I hunted a bus error in scribus. It was finally found to be caused by a problem with QString::null from the qt3 library. This object is statically defined, end when it is used inside another static constructor, its behavior is undefined, legally speaking. In reality, it behaves "normal" on linux where static constructors are always called at the beginning, whereas on Darwin it leads to crashes. As a result you can, for example, use qt file operations inside static constructors on linux, but not on Darwin. The claim by the Darwin people that static objects are always initialized at latest before they are used is misleading in this situation. The word "used" can have different meanings, apparently. The message http://article.gmane.org/gmane.os.apple.fink.devel/5257 from 08/08/2003 contains some explanation and a small test file with a crash test. The situation has not changed since that time. -- Martin |