Joost Verburg wrote: > Georg Baum wrote: >>> Looks like it. I get a crash in boost/boost/detail/shared_count.hpp >>> line 124. >> >> Then try to replace the smart pointers with a newer version, e.g. the >> one from trunk. Does it then work? > > I copied boost\boost\detail from trunk. It doesn't make any difference. > > Joost
I've replaced the complete boost tree (.cpp included) with the version from trunk. But it also makes no difference. BTW should we update the 1.4.x tree to boost 1.34? But I've found a hack to fix the bug: we could replace the crash with a memory leak ;) Index: CutAndPaste.C =================================================================== --- CutAndPaste.C (revision 15109) +++ CutAndPaste.C (working copy) @@ -67,7 +67,7 @@ typedef limited_stack<pair<ParagraphList, textclass_type> > CutStack; -CutStack theCuts(10); +CutStack& theCuts(*new CutStack(10)); // store whether the tabular stack is newer than the normal copy stack // FIXME: this is a workaround for bug 1919. Should be removed for 1.5, I think the reason for the crash is : lyx-qt3.exe!`anonymous namespace'::`dynamic atexit destructor for 'theCuts''() + 0xd bytes C++ msvcr80d.dll!102020c6() lyx-qt3.exe!LyXServer::`scalar deleting destructor'() + 0x27 bytes C++ msvcr80d.dll!10201e00() lyx-qt3.exe!lyx_gui::exit(int status=0) Line 281 + 0xc bytes C++ lyx-qt3.exe!QuitLyX(bool noask=false) Line 220 + 0x7 bytes C++ the free variable theCuts, it is destructed first, and I assume the values are later on used. Because the destruction order is not specified by the standard it is possible that we have no problem with gcc. But it seems the code depends on the order of destruction. I think, when above path really fixes the bug (currently I use the trunk's boost) we could also ship the windows binaries. Peter
Index: CutAndPaste.C =================================================================== --- CutAndPaste.C (revision 15109) +++ CutAndPaste.C (working copy) @@ -67,7 +67,7 @@ typedef limited_stack<pair<ParagraphList, textclass_type> > CutStack; -CutStack theCuts(10); +CutStack& theCuts(*new CutStack(10)); // store whether the tabular stack is newer than the normal copy stack // FIXME: this is a workaround for bug 1919. Should be removed for 1.5,