http://bugzilla.lyx.org/show_bug.cgi?id=4034

To reproduce:
1. Open any file containing an InsetCommand-type inset, e.g. a label.
2. Select some material containing that inset.
3. Exit LyX.
Assertion triggered in T* boost::scoped_ptr<T>::operator->() const [with T = lyx::LyX::Singletons] by failing check "ptr != 0" in file ../boost/boost/scoped_ptr.hpp:94

Backtrace:
#0  0x007be402 in __kernel_vsyscall ()
   at ../../boost/boost/regex/v4/match_results.hpp:238
#1 0x0068fba0 in raise () at ../../boost/boost/regex/v4/match_results.hpp:238 #2 0x006914b1 in abort () at ../../boost/boost/regex/v4/match_results.hpp:238
#3  0x08975f55 in lyx::support::abort () at abort.cpp:25
#4  0x08088268 in boost::assertion_failed (expr=0x8a28800 "ptr != 0",
function=0x8a4e560 "T* boost::scoped_ptr<T>::operator->() const [with T = lyx::LyX::Singletons]", file=0x8a1e68d "../boost/boost/scoped_ptr.hpp", line=94)
   at boost.cpp:56
#5  0x082eb4bf in boost::scoped_ptr<lyx::LyX::Singletons>::operator-> (
   this=0xbfda3864) at ../boost/boost/scoped_ptr.hpp:94
#6 0x082ddac0 in lyx::LyX::emergencyCleanup (this=0xbfda385c) at LyX.cpp:1024
#7  0x080881bd in boost::emergencyCleanup () at boost.cpp:45
#8  0x08088263 in boost::assertion_failed (expr=0x8a28800 "ptr != 0",
function=0x8a4e560 "T* boost::scoped_ptr<T>::operator->() const [with T = lyx::LyX::Singletons]", file=0x8a1e68d "../boost/boost/scoped_ptr.hpp", line=94)
   at boost.cpp:55
#9  0x082eb4bf in boost::scoped_ptr<lyx::LyX::Singletons>::operator-> (
   this=0xbfda3864) at ../boost/boost/scoped_ptr.hpp:94
#10 0x082e26be in lyx::LyX::hideDialogs (this=0xbfda385c, [EMAIL PROTECTED],
   inset=0xa2ef120) at LyX.cpp:386
#11 0x08551772 in lyx::MailInset::hideDialog (this=0xbfda35a8)
   at MailInset.cpp:44
#12 0x0859003b in ~InsetCommand (this=0xa2ef120) at InsetCommand.cpp:48
#13 0x085df14e in ~InsetLabel (this=0xa2ef120) at InsetLabel.h:20
#14 0x0824702e in ~InsetList (this=0xa194134) at InsetList.cpp:53
#15 0x083875e4 in ~Paragraph (this=0xa194130) at Paragraph.cpp:1092
#16 0x080a5721 in __gnu_norm::_List_base<lyx::Paragraph, std::allocator<lyx::Paragraph> >::_M_clear (this=0xa439128) at /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/ext/new_allocator.h:107
#17 0x081ce560 in ~RandomAccessList (this=0xa439128)
at /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_list.h:339
#18 0x081c1018 in __tcf_2 () at ParagraphList.h:23
#19 0x00692859 in exit () at ../../boost/boost/regex/v4/match_results.hpp:238
#20 0x0067cdf4 in __libc_start_main ()
   at ../../boost/boost/regex/v4/match_results.hpp:238
#21 0x08069421 in _start () at ../../boost/boost/regex/v4/match_results.hpp:238
The offending line seems to be:
   vector<int> const & view_ids = pimpl_->application_->gui().viewIds();
I think what's happening is that the material saved in the selection is not being destroyed until too late. The global pimpl_ seems already to have been destroyed at this point--I think because this is all clean-up being done by C++ itself. So somehow it seems we've forgotten to destroy the cache of copied material.

Richard

--
==================================================================
Richard G Heck, Jr
Professor of Philosophy
Brown University
http://frege.brown.edu/heck/
==================================================================
Get my public key from http://sks.keyserver.penguin.de
Hash: 0x1DE91F1E66FFBDEC
Learn how to sign your email using Thunderbird and GnuPG at:
http://dudu.dyn.2-h.org/nist/gpg-enigmail-howto

Reply via email to