I've had to revert r25548 because of:

gdb /home/rgheck/cvs/lyx-devel/trunk/src/lyx --interpreter=mi2 -quiet
Using host libthread_db library "/lib64/libthread_db.so.1".
(gdb) bt
bt
#0  0x000000369a230ec5 in raise () from /lib64/libc.so.6
#1  0x000000369a232970 in abort () from /lib64/libc.so.6
#2  0x000000369a26b0db in __libc_message () from /lib64/libc.so.6
#3  0x000000369a272832 in _int_free () from /lib64/libc.so.6
#4  0x000000369a275f2c in free () from /lib64/libc.so.6
#5  0x00000000004ebbdc in std::_Rb_tree<int, std::pair<int const, lyx::Author>, std::_Select1st<std::pair<int const, lyx::Author> >, std::less<int>, std::allocator<std::pair<int const, lyx::Author> > >::_M_erase (this=0x32c7f68, __x=0x30ece10) at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/ext/new_allocator.h:94
#6  0x00000000004ebe99 in ~map (this=0x32c7f68) at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_tree.h:578
#7  0x00000000004df21f in lyx::BufferParams::MemoryTraits::destroy (ptr=0x32c7f60) at Author.h:50
#8  0x00000000004855e4 in ~copied_ptr (this=<value optimized out>) at ../../../src/support/copied_ptr.h:69
#9  0x0000000000488f93 in ~BufferParams (this=0x32c7b30) at ../../../src/BufferParams.h:52
#10 0x0000000000748585 in ~UndoElement (this=0x7fffc1aeebd0) at Undo.cpp:82
#11 0x0000000000745be8 in lyx::Undo::Private::doRecordUndo (this=0x2ef9630, kind=lyx::ATOMIC_UNDO, cell=<value optimized out>, first_pit=<value optimized out>, last_pit=<value optimized out>, cur=<value optimized out>, isFullBuffer=true, isUndoOperation=true) at Undo.cpp:278
#12 0x0000000000745ce7 in lyx::Undo::recordUndoFullDocument (this=0x2ea5620, cur=@0x2f04238) at Undo.cpp:443
#13 0x00000000007a73cc in lyx::Cursor::recordUndoFullDocument (this=0x2f04238) at Cursor.cpp:2139
#14 0x00000000006374e8 in lyx::LyXFunc::dispatch (this=0x2a431a0, cmd=@0x7fffc1af0e20) at LyXFunc.cpp:1426
#15 0x000000000060630c in lyx::dispatch (action=@0x7fffc1af0e20) at LyX.cpp:1131
#16 0x0000000000b1740a in lyx::frontend::Dialog::dispatch (this=<value optimized out>, fr=@0x7fffc1af0e20) at Dialog.cpp:62
#17 0x0000000000b6787b in dispatch_bufferparams (dialog=@0x30e1288, bp=@0x30e1470, lfun=lyx::LFUN_BUFFER_PARAMS_APPLY) at GuiDocument.cpp:2244
#18 0x0000000000b7825b in lyx::frontend::GuiDocument::dispatchParams (this=0x30e1260) at GuiDocument.cpp:2255
#19 0x0000000000b1766e in lyx::frontend::Dialog::apply (this=0x30e1288) at Dialog.cpp:159
#20 0x0000000000b647d8 in lyx::frontend::GuiDialog::slotOK (this=0x30e1260) at GuiDialog.cpp:56
#21 0x0000000000b64871 in lyx::frontend::GuiDialog::qt_metacall (this=0x30e1260, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0x7fffc1af2290) at GuiDialog_moc.cpp:73
#22 0x0000000000b83fed in lyx::frontend::GuiDocument::qt_metacall (this=0x4f17, _c=20247, _id=6, _a=0xffffffffffffffff) at GuiDocument_moc.cpp:90
#23 0x00000034e9cf3d71 in QMetaObject::activate () from /usr/lib64/libQtCore.so.4
#24 0x00000034ea5f3007 in QAbstractButton::clicked () from /usr/lib64/libQtGui.so.4
#25 0x00000034ea416c3b in QAbstractItemModel::sort () from /usr/lib64/libQtGui.so.4
#26 0x00000034ea4182c5 in QAbstractItemModel::sort () from /usr/lib64/libQtGui.so.4
#27 0x00000034ea4184cd in QAbstractButton::mouseReleaseEvent () from /usr/lib64/libQtGui.so.4
#28 0x00000034ea1cf35a in QWidget::event () from /usr/lib64/libQtGui.so.4
#29 0x00000034ea4177df in QAbstractButton::event () from /usr/lib64/libQtGui.so.4
#30 0x00000034ea491778 in QPushButton::event () from /usr/lib64/libQtGui.so.4
#31 0x00000034ea19274c in QApplicationPrivate::notify_helper () from /usr/lib64/libQtGui.so.4
#32 0x00000034ea198c1b in QApplication::notify () from /usr/lib64/libQtGui.so.4
#33 0x0000000000a8084a in lyx::frontend::GuiApplication::notify (this=0x4f17, receiver=0x4f17, event=0x6) at GuiApplication.cpp:1163
#34 0x00000034e9ce3700 in QCoreApplication::notifyInternal () from /usr/lib64/libQtCore.so.4
#35 0x00000034ea1df95d in QAbstractItemModel::sort () from /usr/lib64/libQtGui.so.4
#36 0x00000034ea1de900 in QApplication::x11ProcessEvent () from /usr/lib64/libQtGui.so.4
#37 0x00000034ea200778 in QAbstractItemModel::sort () from /usr/lib64/libQtGui.so.4
#38 0x000000369f62ef53 in g_main_context_dispatch () from /lib64/libglib-2.0.so.0
#39 0x000000369f63224d in QAbstractItemModel::sort () from /lib64/libglib-2.0.so.0
#40 0x000000369f63277e in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#41 0x00000034e9d01930 in QEventDispatcherGlib::processEvents () from /usr/lib64/libQtCore.so.4
#42 0x00000034ea20057f in QAbstractItemModel::sort () from /usr/lib64/libQtGui.so.4
#43 0x00000034e9ce2da8 in QEventLoop::processEvents () from /usr/lib64/libQtCore.so.4
#44 0x00000034e9ce2ebd in QEventLoop::exec () from /usr/lib64/libQtCore.so.4
#45 0x00000034e9ce4e71 in QCoreApplication::exec () from /usr/lib64/libQtCore.so.4
#46 0x0000000000a7fb83 in lyx::frontend::GuiApplication::exec (this=<value optimized out>) at GuiApplication.cpp:1032
#47 0x00000000006101e4 in lyx::LyX::exec (this=0x7fffc1af4cf0, argc=@0x7fffc1af4cec, argv=<value optimized out>) at LyX.cpp:342
#48 0x0000000000433aa8 in main (argc=1, argv=0x7fffc1af4df8) at main.cpp:46
^done
I don't know at all what's up here with copied_ptr. Hadn't even heard of it until five minutes ago. ;-) You can cause this crash by opening a new document, opening Document>Settings and changing (say) the Bibliography settings, and then hitting "OK".



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25617 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Richard Heck 2008-07-14 16:12:12 +00:00
parent 1d0bac1144
commit a282ef926a

View File

@ -73,13 +73,8 @@ struct UndoElement
MathData * ar, BufferParams const & bp, MathData * ar, BufferParams const & bp,
bool ifb) : bool ifb) :
kind(kin), cursor(cur), cell(cel), from(fro), end(en), kind(kin), cursor(cur), cell(cel), from(fro), end(en),
pars(pl), array(ar), bparams(0), isFullBuffer(ifb) pars(pl), array(ar), bparams(bp), isFullBuffer(ifb)
{ {}
if (isFullBuffer)
bparams = new BufferParams(bp);
}
///
~UndoElement() { delete bparams; }
/// Which kind of operation are we recording for? /// Which kind of operation are we recording for?
UndoKind kind; UndoKind kind;
/// the position of the cursor /// the position of the cursor
@ -95,7 +90,7 @@ struct UndoElement
/// the contents of the saved MathData (for mathed) /// the contents of the saved MathData (for mathed)
MathData * array; MathData * array;
/// Only used in case of full backups /// Only used in case of full backups
BufferParams const * bparams; BufferParams bparams;
/// Only used in case of full backups /// Only used in case of full backups
bool isFullBuffer; bool isFullBuffer;
private: private:
@ -327,9 +322,8 @@ bool Undo::Private::textUndoOrRedo(DocIterator & cur, bool isUndoOperation)
if (undo.isFullBuffer) { if (undo.isFullBuffer) {
LASSERT(undo.pars, /**/); LASSERT(undo.pars, /**/);
// This is a full document // This is a full document
delete otherstack.top().bparams; otherstack.top().bparams = buffer_.params();
otherstack.top().bparams = new BufferParams(buffer_.params()); buffer_.params() = undo.bparams;
buffer_.params() = *undo.bparams;
swap(buffer_.paragraphs(), *undo.pars); swap(buffer_.paragraphs(), *undo.pars);
delete undo.pars; delete undo.pars;
undo.pars = 0; undo.pars = 0;