SIGSEGV on master regarding math completion

Jean-Marc Lasgouttes lasgouttes at lyx.org
Thu Jan 27 16:26:33 UTC 2022


Le 10/01/2022 à 03:49, Scott Kostyshak a écrit :
> To reproduce:
> 
> 1. Start a new document.
> 2. Ctrl + m to start math inset.
> 3. Type \phantomx<Space>. Note that \phantomx is not a command so don't
>     expect it to be recognized.
> 4. Press <Left>, <Backspace>, <Backspace> to delete the "x" and the "m".
> 5. Type "m" to finish "phantom".
> 6. Wait for the completion pop-down to appear (this takes a second).
> 7. Press <Tab>.
> 
> I tried to find a more simple recipe to reproduce but could not.

So, on Ubuntu 20.04, valgrind is more useful. I attache the log below, 
but here is the gist of it:

1/ the error

   ==2557222== Invalid read of size 8
   ==2557222==    at 0xB3B5C1: lyx::Inset::isBufferValid() const 
(Inset.cpp:230)
   [...]
   ==2557222==    by 0xA1382F: 
lyx::RowPainter::paintInset(lyx::Row::Element const&) const 
(RowPainter.cpp:116)

Here one can see that the code in devel-mode that paints in red insets 
that do not have a buffer looks at buffer methods. This does not work 
because...

2/ the culprit

==2557222==  Address 0xf9e0708 is 8 bytes inside a block of size 32 free'd
==2557222==    at 0x483CFBF: operator delete(void*) (in 
/usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==2557222==    by 0xA23A6E: lyx::InsetMathChar::~InsetMathChar() 
(InsetMathChar.h:22)
[...]
lyx::InsetMathMacro::insertCompletion(lyx::Cursor&, 
std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, 
std::allocator<wchar_t> > const&, bool) (InsetMathMacro.cpp:1376)

We are pointing to an inset that has been deleted at completion time.


3/ the context

==2557222==  Block was alloc'd at
==2557222==    at 0x483BE63: operator new(unsigned long) (in 
/usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==2557222==    by 0xA22447: lyx::InsetMathChar::clone() const 
(InsetMathChar.cpp:104)
[...]
lyx::InsetMathMacro::setDisplayMode(lyx::InsetMathMacro::DisplayMode, 
int) (InsetMathMacro.cpp:825)



So finally, the MathRow object points to an inset that has been deleted 
at the time of the completion. There should be code somewhere that 
should regenerate the math row. I'll have a look.

JMarc
-------------- next part --------------
==2557222== Memcheck, a memory error detector
==2557222== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==2557222== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
==2557222== Command: src/lyx
==2557222== 
--2557222-- WARNING: unhandled amd64-linux syscall: 315
--2557222-- You may be able to write your own handler.
--2557222-- Read the file README_MISSING_SYSCALL_OR_IOCTL.
--2557222-- Nevertheless we consider this a bug.  Please report
--2557222-- it at http://valgrind.org/support/bug_reports.html.
==2557222== Invalid read of size 8
==2557222==    at 0xB3B5C1: lyx::Inset::isBufferValid() const (Inset.cpp:230)
==2557222==    by 0xAEDCB1: lyx::MathRow::draw(lyx::PainterInfo&, int, int) const (MathRow.cpp:327)
==2557222==    by 0xAAEB8B: lyx::MathData::draw(lyx::PainterInfo&, int, int) const (MathData.cpp:356)
==2557222==    by 0xA6ABA4: lyx::InsetMathMacro::draw(lyx::PainterInfo&, int, int) const (InsetMathMacro.cpp:756)
==2557222==    by 0xAED744: lyx::MathRow::draw(lyx::PainterInfo&, int, int) const (MathRow.cpp:330)
==2557222==    by 0xAAEB8B: lyx::MathData::draw(lyx::PainterInfo&, int, int) const (MathData.cpp:356)
==2557222==    by 0xA30FAC: lyx::InsetMathGrid::draw(lyx::PainterInfo&, int, int) const (InsetMathGrid.cpp:601)
==2557222==    by 0xA4E187: lyx::InsetMathHull::draw(lyx::PainterInfo&, int, int) const (InsetMathHull.cpp:667)
==2557222==    by 0xA1382F: lyx::RowPainter::paintInset(lyx::Row::Element const&) const (RowPainter.cpp:116)
==2557222==    by 0xA14BBF: lyx::RowPainter::paintText() (RowPainter.cpp:563)
==2557222==    by 0x909ABF: lyx::TextMetrics::drawParagraph(lyx::PainterInfo&, long, int, int) const (TextMetrics.cpp:2074)
==2557222==    by 0x90CE4C: lyx::TextMetrics::draw(lyx::PainterInfo&, int, int) const (TextMetrics.cpp:1919)
==2557222==  Address 0xf9e0708 is 8 bytes inside a block of size 32 free'd
==2557222==    at 0x483CFBF: operator delete(void*) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==2557222==    by 0xA23A6E: lyx::InsetMathChar::~InsetMathChar() (InsetMathChar.h:22)
==2557222==    by 0xAA3866: operator() (unique_ptr.h:81)
==2557222==    by 0xAA3866: reset (unique_ptr.h:402)
==2557222==    by 0xAA3866: operator= (unique_ptr.h:307)
==2557222==    by 0xAA3866: operator= (MathAtom.h:49)
==2557222==    by 0xAA3866: lyx::MathAtom::operator=(lyx::MathAtom const&) (MathAtom.cpp:34)
==2557222==    by 0xA1F520: __copy_m<const lyx::MathAtom*, lyx::MathAtom*> (stl_algobase.h:342)
==2557222==    by 0xA1F520: __copy_move_a<false, const lyx::MathAtom*, lyx::MathAtom*> (stl_algobase.h:404)
==2557222==    by 0xA1F520: __copy_move_a2<false, __gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > >, __gnu_cxx::__normal_iterator<lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > > > (stl_algobase.h:440)
==2557222==    by 0xA1F520: copy<__gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > >, __gnu_cxx::__normal_iterator<lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > > > (stl_algobase.h:474)
==2557222==    by 0xA1F520: std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> >::operator=(std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > const&) (vector.tcc:238)
==2557222==    by 0xAD7D7E: operator= (vector:118)
==2557222==    by 0xAD7D7E: operator= (MathData.h:49)
==2557222==    by 0xAD7D7E: lyx::(anonymous namespace)::Parser::parse(lyx::MathData&, unsigned int, lyx::Inset::mode_type) (MathParser.cpp:784)
==2557222==    by 0xAD80E7: lyx::mathed_parse_cell(lyx::MathData&, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, lyx::Parse::flags) (MathParser.cpp:2153)
==2557222==    by 0xAF3EA6: lyx::asArray(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, lyx::MathData&, lyx::Parse::flags) (MathSupport.cpp:1076)
==2557222==    by 0xA6DC87: lyx::InsetMathMacro::insertCompletion(lyx::Cursor&, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, bool) (InsetMathMacro.cpp:1376)
==2557222==    by 0xE8E216: lyx::frontend::GuiCompleter::tab() (GuiCompleter.cpp:698)
==2557222==    by 0xE8F19E: lyx::frontend::GuiCompleter::eventFilter(QObject*, QEvent*) (GuiCompleter.cpp:218)
==2557222==    by 0x583851A: QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12.8)
==2557222==    by 0x4A96A54: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.12.8)
==2557222==  Block was alloc'd at
==2557222==    at 0x483BE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==2557222==    by 0xA22447: lyx::InsetMathChar::clone() const (InsetMathChar.cpp:104)
==2557222==    by 0xAA381C: lyx::MathAtom::MathAtom(lyx::MathAtom const&) (MathAtom.cpp:27)
==2557222==    by 0xA1F5A1: _Construct<lyx::MathAtom, const lyx::MathAtom&> (stl_construct.h:75)
==2557222==    by 0xA1F5A1: __uninit_copy<__gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > >, lyx::MathAtom*> (stl_uninitialized.h:83)
==2557222==    by 0xA1F5A1: uninitialized_copy<__gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > >, lyx::MathAtom*> (stl_uninitialized.h:140)
==2557222==    by 0xA1F5A1: __uninitialized_copy_a<__gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > >, lyx::MathAtom*, lyx::MathAtom> (stl_uninitialized.h:307)
==2557222==    by 0xA1F5A1: _M_allocate_and_copy<__gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > > > (stl_vector.h:1511)
==2557222==    by 0xA1F5A1: std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> >::operator=(std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > const&) (vector.tcc:226)
==2557222==    by 0xAD7D7E: operator= (vector:118)
==2557222==    by 0xAD7D7E: operator= (MathData.h:49)
==2557222==    by 0xAD7D7E: lyx::(anonymous namespace)::Parser::parse(lyx::MathData&, unsigned int, lyx::Inset::mode_type) (MathParser.cpp:784)
==2557222==    by 0xAD80E7: lyx::mathed_parse_cell(lyx::MathData&, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, lyx::Parse::flags) (MathParser.cpp:2153)
==2557222==    by 0xAF3EA6: lyx::asArray(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, lyx::MathData&, lyx::Parse::flags) (MathSupport.cpp:1076)
==2557222==    by 0xA66601: lyx::InsetMathMacro::setDisplayMode(lyx::InsetMathMacro::DisplayMode, int) (InsetMathMacro.cpp:825)
==2557222==    by 0xAAFE0B: lyx::MathData::updateMacros(lyx::Cursor*, lyx::MacroContext const&, lyx::UpdateType, int) (MathData.cpp:460)
==2557222==    by 0xAB014D: lyx::MathData::addToMathRow(lyx::MathRow&, lyx::MetricsInfo&) const (MathData.cpp:229)
==2557222==    by 0xAEB634: lyx::MathRow::MathRow(lyx::MetricsInfo&, lyx::MathData const*) (MathRow.cpp:156)
==2557222==    by 0xAAE3BB: lyx::MathData::metrics(lyx::MetricsInfo&, lyx::Dimension&, bool) const (MathData.cpp:284)
==2557222== 
==2557222== Invalid read of size 8
==2557222==    at 0xB3B599: lyx::Inset::isBufferLoaded() const (Inset.cpp:223)
==2557222==    by 0xB3B5D0: lyx::Inset::isBufferValid() const (Inset.cpp:230)
==2557222==    by 0xAEDCB1: lyx::MathRow::draw(lyx::PainterInfo&, int, int) const (MathRow.cpp:327)
==2557222==    by 0xAAEB8B: lyx::MathData::draw(lyx::PainterInfo&, int, int) const (MathData.cpp:356)
==2557222==    by 0xA6ABA4: lyx::InsetMathMacro::draw(lyx::PainterInfo&, int, int) const (InsetMathMacro.cpp:756)
==2557222==    by 0xAED744: lyx::MathRow::draw(lyx::PainterInfo&, int, int) const (MathRow.cpp:330)
==2557222==    by 0xAAEB8B: lyx::MathData::draw(lyx::PainterInfo&, int, int) const (MathData.cpp:356)
==2557222==    by 0xA30FAC: lyx::InsetMathGrid::draw(lyx::PainterInfo&, int, int) const (InsetMathGrid.cpp:601)
==2557222==    by 0xA4E187: lyx::InsetMathHull::draw(lyx::PainterInfo&, int, int) const (InsetMathHull.cpp:667)
==2557222==    by 0xA1382F: lyx::RowPainter::paintInset(lyx::Row::Element const&) const (RowPainter.cpp:116)
==2557222==    by 0xA14BBF: lyx::RowPainter::paintText() (RowPainter.cpp:563)
==2557222==    by 0x909ABF: lyx::TextMetrics::drawParagraph(lyx::PainterInfo&, long, int, int) const (TextMetrics.cpp:2074)
==2557222==  Address 0xf9e0708 is 8 bytes inside a block of size 32 free'd
==2557222==    at 0x483CFBF: operator delete(void*) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==2557222==    by 0xA23A6E: lyx::InsetMathChar::~InsetMathChar() (InsetMathChar.h:22)
==2557222==    by 0xAA3866: operator() (unique_ptr.h:81)
==2557222==    by 0xAA3866: reset (unique_ptr.h:402)
==2557222==    by 0xAA3866: operator= (unique_ptr.h:307)
==2557222==    by 0xAA3866: operator= (MathAtom.h:49)
==2557222==    by 0xAA3866: lyx::MathAtom::operator=(lyx::MathAtom const&) (MathAtom.cpp:34)
==2557222==    by 0xA1F520: __copy_m<const lyx::MathAtom*, lyx::MathAtom*> (stl_algobase.h:342)
==2557222==    by 0xA1F520: __copy_move_a<false, const lyx::MathAtom*, lyx::MathAtom*> (stl_algobase.h:404)
==2557222==    by 0xA1F520: __copy_move_a2<false, __gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > >, __gnu_cxx::__normal_iterator<lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > > > (stl_algobase.h:440)
==2557222==    by 0xA1F520: copy<__gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > >, __gnu_cxx::__normal_iterator<lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > > > (stl_algobase.h:474)
==2557222==    by 0xA1F520: std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> >::operator=(std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > const&) (vector.tcc:238)
==2557222==    by 0xAD7D7E: operator= (vector:118)
==2557222==    by 0xAD7D7E: operator= (MathData.h:49)
==2557222==    by 0xAD7D7E: lyx::(anonymous namespace)::Parser::parse(lyx::MathData&, unsigned int, lyx::Inset::mode_type) (MathParser.cpp:784)
==2557222==    by 0xAD80E7: lyx::mathed_parse_cell(lyx::MathData&, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, lyx::Parse::flags) (MathParser.cpp:2153)
==2557222==    by 0xAF3EA6: lyx::asArray(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, lyx::MathData&, lyx::Parse::flags) (MathSupport.cpp:1076)
==2557222==    by 0xA6DC87: lyx::InsetMathMacro::insertCompletion(lyx::Cursor&, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, bool) (InsetMathMacro.cpp:1376)
==2557222==    by 0xE8E216: lyx::frontend::GuiCompleter::tab() (GuiCompleter.cpp:698)
==2557222==    by 0xE8F19E: lyx::frontend::GuiCompleter::eventFilter(QObject*, QEvent*) (GuiCompleter.cpp:218)
==2557222==    by 0x583851A: QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12.8)
==2557222==    by 0x4A96A54: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.12.8)
==2557222==  Block was alloc'd at
==2557222==    at 0x483BE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==2557222==    by 0xA22447: lyx::InsetMathChar::clone() const (InsetMathChar.cpp:104)
==2557222==    by 0xAA381C: lyx::MathAtom::MathAtom(lyx::MathAtom const&) (MathAtom.cpp:27)
==2557222==    by 0xA1F5A1: _Construct<lyx::MathAtom, const lyx::MathAtom&> (stl_construct.h:75)
==2557222==    by 0xA1F5A1: __uninit_copy<__gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > >, lyx::MathAtom*> (stl_uninitialized.h:83)
==2557222==    by 0xA1F5A1: uninitialized_copy<__gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > >, lyx::MathAtom*> (stl_uninitialized.h:140)
==2557222==    by 0xA1F5A1: __uninitialized_copy_a<__gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > >, lyx::MathAtom*, lyx::MathAtom> (stl_uninitialized.h:307)
==2557222==    by 0xA1F5A1: _M_allocate_and_copy<__gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > > > (stl_vector.h:1511)
==2557222==    by 0xA1F5A1: std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> >::operator=(std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > const&) (vector.tcc:226)
==2557222==    by 0xAD7D7E: operator= (vector:118)
==2557222==    by 0xAD7D7E: operator= (MathData.h:49)
==2557222==    by 0xAD7D7E: lyx::(anonymous namespace)::Parser::parse(lyx::MathData&, unsigned int, lyx::Inset::mode_type) (MathParser.cpp:784)
==2557222==    by 0xAD80E7: lyx::mathed_parse_cell(lyx::MathData&, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, lyx::Parse::flags) (MathParser.cpp:2153)
==2557222==    by 0xAF3EA6: lyx::asArray(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, lyx::MathData&, lyx::Parse::flags) (MathSupport.cpp:1076)
==2557222==    by 0xA66601: lyx::InsetMathMacro::setDisplayMode(lyx::InsetMathMacro::DisplayMode, int) (InsetMathMacro.cpp:825)
==2557222==    by 0xAAFE0B: lyx::MathData::updateMacros(lyx::Cursor*, lyx::MacroContext const&, lyx::UpdateType, int) (MathData.cpp:460)
==2557222==    by 0xAB014D: lyx::MathData::addToMathRow(lyx::MathRow&, lyx::MetricsInfo&) const (MathData.cpp:229)
==2557222==    by 0xAEB634: lyx::MathRow::MathRow(lyx::MetricsInfo&, lyx::MathData const*) (MathRow.cpp:156)
==2557222==    by 0xAAE3BB: lyx::MathData::metrics(lyx::MetricsInfo&, lyx::Dimension&, bool) const (MathData.cpp:284)
==2557222== 
==2557222== Invalid read of size 8
==2557222==    at 0xB3B5AC: lyx::Inset::isBufferLoaded() const (Inset.cpp:223)
==2557222==    by 0xB3B5D0: lyx::Inset::isBufferValid() const (Inset.cpp:230)
==2557222==    by 0xAEDCB1: lyx::MathRow::draw(lyx::PainterInfo&, int, int) const (MathRow.cpp:327)
==2557222==    by 0xAAEB8B: lyx::MathData::draw(lyx::PainterInfo&, int, int) const (MathData.cpp:356)
==2557222==    by 0xA6ABA4: lyx::InsetMathMacro::draw(lyx::PainterInfo&, int, int) const (InsetMathMacro.cpp:756)
==2557222==    by 0xAED744: lyx::MathRow::draw(lyx::PainterInfo&, int, int) const (MathRow.cpp:330)
==2557222==    by 0xAAEB8B: lyx::MathData::draw(lyx::PainterInfo&, int, int) const (MathData.cpp:356)
==2557222==    by 0xA30FAC: lyx::InsetMathGrid::draw(lyx::PainterInfo&, int, int) const (InsetMathGrid.cpp:601)
==2557222==    by 0xA4E187: lyx::InsetMathHull::draw(lyx::PainterInfo&, int, int) const (InsetMathHull.cpp:667)
==2557222==    by 0xA1382F: lyx::RowPainter::paintInset(lyx::Row::Element const&) const (RowPainter.cpp:116)
==2557222==    by 0xA14BBF: lyx::RowPainter::paintText() (RowPainter.cpp:563)
==2557222==    by 0x909ABF: lyx::TextMetrics::drawParagraph(lyx::PainterInfo&, long, int, int) const (TextMetrics.cpp:2074)
==2557222==  Address 0xf9e0708 is 8 bytes inside a block of size 32 free'd
==2557222==    at 0x483CFBF: operator delete(void*) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==2557222==    by 0xA23A6E: lyx::InsetMathChar::~InsetMathChar() (InsetMathChar.h:22)
==2557222==    by 0xAA3866: operator() (unique_ptr.h:81)
==2557222==    by 0xAA3866: reset (unique_ptr.h:402)
==2557222==    by 0xAA3866: operator= (unique_ptr.h:307)
==2557222==    by 0xAA3866: operator= (MathAtom.h:49)
==2557222==    by 0xAA3866: lyx::MathAtom::operator=(lyx::MathAtom const&) (MathAtom.cpp:34)
==2557222==    by 0xA1F520: __copy_m<const lyx::MathAtom*, lyx::MathAtom*> (stl_algobase.h:342)
==2557222==    by 0xA1F520: __copy_move_a<false, const lyx::MathAtom*, lyx::MathAtom*> (stl_algobase.h:404)
==2557222==    by 0xA1F520: __copy_move_a2<false, __gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > >, __gnu_cxx::__normal_iterator<lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > > > (stl_algobase.h:440)
==2557222==    by 0xA1F520: copy<__gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > >, __gnu_cxx::__normal_iterator<lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > > > (stl_algobase.h:474)
==2557222==    by 0xA1F520: std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> >::operator=(std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > const&) (vector.tcc:238)
==2557222==    by 0xAD7D7E: operator= (vector:118)
==2557222==    by 0xAD7D7E: operator= (MathData.h:49)
==2557222==    by 0xAD7D7E: lyx::(anonymous namespace)::Parser::parse(lyx::MathData&, unsigned int, lyx::Inset::mode_type) (MathParser.cpp:784)
==2557222==    by 0xAD80E7: lyx::mathed_parse_cell(lyx::MathData&, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, lyx::Parse::flags) (MathParser.cpp:2153)
==2557222==    by 0xAF3EA6: lyx::asArray(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, lyx::MathData&, lyx::Parse::flags) (MathSupport.cpp:1076)
==2557222==    by 0xA6DC87: lyx::InsetMathMacro::insertCompletion(lyx::Cursor&, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, bool) (InsetMathMacro.cpp:1376)
==2557222==    by 0xE8E216: lyx::frontend::GuiCompleter::tab() (GuiCompleter.cpp:698)
==2557222==    by 0xE8F19E: lyx::frontend::GuiCompleter::eventFilter(QObject*, QEvent*) (GuiCompleter.cpp:218)
==2557222==    by 0x583851A: QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12.8)
==2557222==    by 0x4A96A54: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.12.8)
==2557222==  Block was alloc'd at
==2557222==    at 0x483BE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==2557222==    by 0xA22447: lyx::InsetMathChar::clone() const (InsetMathChar.cpp:104)
==2557222==    by 0xAA381C: lyx::MathAtom::MathAtom(lyx::MathAtom const&) (MathAtom.cpp:27)
==2557222==    by 0xA1F5A1: _Construct<lyx::MathAtom, const lyx::MathAtom&> (stl_construct.h:75)
==2557222==    by 0xA1F5A1: __uninit_copy<__gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > >, lyx::MathAtom*> (stl_uninitialized.h:83)
==2557222==    by 0xA1F5A1: uninitialized_copy<__gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > >, lyx::MathAtom*> (stl_uninitialized.h:140)
==2557222==    by 0xA1F5A1: __uninitialized_copy_a<__gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > >, lyx::MathAtom*, lyx::MathAtom> (stl_uninitialized.h:307)
==2557222==    by 0xA1F5A1: _M_allocate_and_copy<__gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > > > (stl_vector.h:1511)
==2557222==    by 0xA1F5A1: std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> >::operator=(std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > const&) (vector.tcc:226)
==2557222==    by 0xAD7D7E: operator= (vector:118)
==2557222==    by 0xAD7D7E: operator= (MathData.h:49)
==2557222==    by 0xAD7D7E: lyx::(anonymous namespace)::Parser::parse(lyx::MathData&, unsigned int, lyx::Inset::mode_type) (MathParser.cpp:784)
==2557222==    by 0xAD80E7: lyx::mathed_parse_cell(lyx::MathData&, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, lyx::Parse::flags) (MathParser.cpp:2153)
==2557222==    by 0xAF3EA6: lyx::asArray(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, lyx::MathData&, lyx::Parse::flags) (MathSupport.cpp:1076)
==2557222==    by 0xA66601: lyx::InsetMathMacro::setDisplayMode(lyx::InsetMathMacro::DisplayMode, int) (InsetMathMacro.cpp:825)
==2557222==    by 0xAAFE0B: lyx::MathData::updateMacros(lyx::Cursor*, lyx::MacroContext const&, lyx::UpdateType, int) (MathData.cpp:460)
==2557222==    by 0xAB014D: lyx::MathData::addToMathRow(lyx::MathRow&, lyx::MetricsInfo&) const (MathData.cpp:229)
==2557222==    by 0xAEB634: lyx::MathRow::MathRow(lyx::MetricsInfo&, lyx::MathData const*) (MathRow.cpp:156)
==2557222==    by 0xAAE3BB: lyx::MathData::metrics(lyx::MetricsInfo&, lyx::Dimension&, bool) const (MathData.cpp:284)
==2557222== 
==2557222== Invalid read of size 8
==2557222==    at 0xAED72F: lyx::MathRow::draw(lyx::PainterInfo&, int, int) const (MathRow.cpp:330)
==2557222==    by 0xAAEB8B: lyx::MathData::draw(lyx::PainterInfo&, int, int) const (MathData.cpp:356)
==2557222==    by 0xA6ABA4: lyx::InsetMathMacro::draw(lyx::PainterInfo&, int, int) const (InsetMathMacro.cpp:756)
==2557222==    by 0xAED744: lyx::MathRow::draw(lyx::PainterInfo&, int, int) const (MathRow.cpp:330)
==2557222==    by 0xAAEB8B: lyx::MathData::draw(lyx::PainterInfo&, int, int) const (MathData.cpp:356)
==2557222==    by 0xA30FAC: lyx::InsetMathGrid::draw(lyx::PainterInfo&, int, int) const (InsetMathGrid.cpp:601)
==2557222==    by 0xA4E187: lyx::InsetMathHull::draw(lyx::PainterInfo&, int, int) const (InsetMathHull.cpp:667)
==2557222==    by 0xA1382F: lyx::RowPainter::paintInset(lyx::Row::Element const&) const (RowPainter.cpp:116)
==2557222==    by 0xA14BBF: lyx::RowPainter::paintText() (RowPainter.cpp:563)
==2557222==    by 0x909ABF: lyx::TextMetrics::drawParagraph(lyx::PainterInfo&, long, int, int) const (TextMetrics.cpp:2074)
==2557222==    by 0x90CE4C: lyx::TextMetrics::draw(lyx::PainterInfo&, int, int) const (TextMetrics.cpp:1919)
==2557222==    by 0x971CD3: lyx::BufferView::draw(lyx::frontend::Painter&, bool) (BufferView.cpp:3466)
==2557222==  Address 0xf9e0700 is 0 bytes inside a block of size 32 free'd
==2557222==    at 0x483CFBF: operator delete(void*) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==2557222==    by 0xA23A6E: lyx::InsetMathChar::~InsetMathChar() (InsetMathChar.h:22)
==2557222==    by 0xAA3866: operator() (unique_ptr.h:81)
==2557222==    by 0xAA3866: reset (unique_ptr.h:402)
==2557222==    by 0xAA3866: operator= (unique_ptr.h:307)
==2557222==    by 0xAA3866: operator= (MathAtom.h:49)
==2557222==    by 0xAA3866: lyx::MathAtom::operator=(lyx::MathAtom const&) (MathAtom.cpp:34)
==2557222==    by 0xA1F520: __copy_m<const lyx::MathAtom*, lyx::MathAtom*> (stl_algobase.h:342)
==2557222==    by 0xA1F520: __copy_move_a<false, const lyx::MathAtom*, lyx::MathAtom*> (stl_algobase.h:404)
==2557222==    by 0xA1F520: __copy_move_a2<false, __gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > >, __gnu_cxx::__normal_iterator<lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > > > (stl_algobase.h:440)
==2557222==    by 0xA1F520: copy<__gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > >, __gnu_cxx::__normal_iterator<lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > > > (stl_algobase.h:474)
==2557222==    by 0xA1F520: std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> >::operator=(std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > const&) (vector.tcc:238)
==2557222==    by 0xAD7D7E: operator= (vector:118)
==2557222==    by 0xAD7D7E: operator= (MathData.h:49)
==2557222==    by 0xAD7D7E: lyx::(anonymous namespace)::Parser::parse(lyx::MathData&, unsigned int, lyx::Inset::mode_type) (MathParser.cpp:784)
==2557222==    by 0xAD80E7: lyx::mathed_parse_cell(lyx::MathData&, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, lyx::Parse::flags) (MathParser.cpp:2153)
==2557222==    by 0xAF3EA6: lyx::asArray(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, lyx::MathData&, lyx::Parse::flags) (MathSupport.cpp:1076)
==2557222==    by 0xA6DC87: lyx::InsetMathMacro::insertCompletion(lyx::Cursor&, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, bool) (InsetMathMacro.cpp:1376)
==2557222==    by 0xE8E216: lyx::frontend::GuiCompleter::tab() (GuiCompleter.cpp:698)
==2557222==    by 0xE8F19E: lyx::frontend::GuiCompleter::eventFilter(QObject*, QEvent*) (GuiCompleter.cpp:218)
==2557222==    by 0x583851A: QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12.8)
==2557222==    by 0x4A96A54: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.12.8)
==2557222==  Block was alloc'd at
==2557222==    at 0x483BE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==2557222==    by 0xA22447: lyx::InsetMathChar::clone() const (InsetMathChar.cpp:104)
==2557222==    by 0xAA381C: lyx::MathAtom::MathAtom(lyx::MathAtom const&) (MathAtom.cpp:27)
==2557222==    by 0xA1F5A1: _Construct<lyx::MathAtom, const lyx::MathAtom&> (stl_construct.h:75)
==2557222==    by 0xA1F5A1: __uninit_copy<__gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > >, lyx::MathAtom*> (stl_uninitialized.h:83)
==2557222==    by 0xA1F5A1: uninitialized_copy<__gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > >, lyx::MathAtom*> (stl_uninitialized.h:140)
==2557222==    by 0xA1F5A1: __uninitialized_copy_a<__gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > >, lyx::MathAtom*, lyx::MathAtom> (stl_uninitialized.h:307)
==2557222==    by 0xA1F5A1: _M_allocate_and_copy<__gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > > > (stl_vector.h:1511)
==2557222==    by 0xA1F5A1: std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> >::operator=(std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > const&) (vector.tcc:226)
==2557222==    by 0xAD7D7E: operator= (vector:118)
==2557222==    by 0xAD7D7E: operator= (MathData.h:49)
==2557222==    by 0xAD7D7E: lyx::(anonymous namespace)::Parser::parse(lyx::MathData&, unsigned int, lyx::Inset::mode_type) (MathParser.cpp:784)
==2557222==    by 0xAD80E7: lyx::mathed_parse_cell(lyx::MathData&, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, lyx::Parse::flags) (MathParser.cpp:2153)
==2557222==    by 0xAF3EA6: lyx::asArray(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, lyx::MathData&, lyx::Parse::flags) (MathSupport.cpp:1076)
==2557222==    by 0xA66601: lyx::InsetMathMacro::setDisplayMode(lyx::InsetMathMacro::DisplayMode, int) (InsetMathMacro.cpp:825)
==2557222==    by 0xAAFE0B: lyx::MathData::updateMacros(lyx::Cursor*, lyx::MacroContext const&, lyx::UpdateType, int) (MathData.cpp:460)
==2557222==    by 0xAB014D: lyx::MathData::addToMathRow(lyx::MathRow&, lyx::MetricsInfo&) const (MathData.cpp:229)
==2557222==    by 0xAEB634: lyx::MathRow::MathRow(lyx::MetricsInfo&, lyx::MathData const*) (MathRow.cpp:156)
==2557222==    by 0xAAE3BB: lyx::MathData::metrics(lyx::MetricsInfo&, lyx::Dimension&, bool) const (MathData.cpp:284)
==2557222== 
==2557222== Invalid read of size 4
==2557222==    at 0xA22B82: lyx::InsetMathChar::draw(lyx::PainterInfo&, int, int) const (InsetMathChar.cpp:177)
==2557222==    by 0xAED744: lyx::MathRow::draw(lyx::PainterInfo&, int, int) const (MathRow.cpp:330)
==2557222==    by 0xAAEB8B: lyx::MathData::draw(lyx::PainterInfo&, int, int) const (MathData.cpp:356)
==2557222==    by 0xA6ABA4: lyx::InsetMathMacro::draw(lyx::PainterInfo&, int, int) const (InsetMathMacro.cpp:756)
==2557222==    by 0xAED744: lyx::MathRow::draw(lyx::PainterInfo&, int, int) const (MathRow.cpp:330)
==2557222==    by 0xAAEB8B: lyx::MathData::draw(lyx::PainterInfo&, int, int) const (MathData.cpp:356)
==2557222==    by 0xA30FAC: lyx::InsetMathGrid::draw(lyx::PainterInfo&, int, int) const (InsetMathGrid.cpp:601)
==2557222==    by 0xA4E187: lyx::InsetMathHull::draw(lyx::PainterInfo&, int, int) const (InsetMathHull.cpp:667)
==2557222==    by 0xA1382F: lyx::RowPainter::paintInset(lyx::Row::Element const&) const (RowPainter.cpp:116)
==2557222==    by 0xA14BBF: lyx::RowPainter::paintText() (RowPainter.cpp:563)
==2557222==    by 0x909ABF: lyx::TextMetrics::drawParagraph(lyx::PainterInfo&, long, int, int) const (TextMetrics.cpp:2074)
==2557222==    by 0x90CE4C: lyx::TextMetrics::draw(lyx::PainterInfo&, int, int) const (TextMetrics.cpp:1919)
==2557222==  Address 0xf9e0710 is 16 bytes inside a block of size 32 free'd
==2557222==    at 0x483CFBF: operator delete(void*) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==2557222==    by 0xA23A6E: lyx::InsetMathChar::~InsetMathChar() (InsetMathChar.h:22)
==2557222==    by 0xAA3866: operator() (unique_ptr.h:81)
==2557222==    by 0xAA3866: reset (unique_ptr.h:402)
==2557222==    by 0xAA3866: operator= (unique_ptr.h:307)
==2557222==    by 0xAA3866: operator= (MathAtom.h:49)
==2557222==    by 0xAA3866: lyx::MathAtom::operator=(lyx::MathAtom const&) (MathAtom.cpp:34)
==2557222==    by 0xA1F520: __copy_m<const lyx::MathAtom*, lyx::MathAtom*> (stl_algobase.h:342)
==2557222==    by 0xA1F520: __copy_move_a<false, const lyx::MathAtom*, lyx::MathAtom*> (stl_algobase.h:404)
==2557222==    by 0xA1F520: __copy_move_a2<false, __gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > >, __gnu_cxx::__normal_iterator<lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > > > (stl_algobase.h:440)
==2557222==    by 0xA1F520: copy<__gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > >, __gnu_cxx::__normal_iterator<lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > > > (stl_algobase.h:474)
==2557222==    by 0xA1F520: std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> >::operator=(std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > const&) (vector.tcc:238)
==2557222==    by 0xAD7D7E: operator= (vector:118)
==2557222==    by 0xAD7D7E: operator= (MathData.h:49)
==2557222==    by 0xAD7D7E: lyx::(anonymous namespace)::Parser::parse(lyx::MathData&, unsigned int, lyx::Inset::mode_type) (MathParser.cpp:784)
==2557222==    by 0xAD80E7: lyx::mathed_parse_cell(lyx::MathData&, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, lyx::Parse::flags) (MathParser.cpp:2153)
==2557222==    by 0xAF3EA6: lyx::asArray(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, lyx::MathData&, lyx::Parse::flags) (MathSupport.cpp:1076)
==2557222==    by 0xA6DC87: lyx::InsetMathMacro::insertCompletion(lyx::Cursor&, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, bool) (InsetMathMacro.cpp:1376)
==2557222==    by 0xE8E216: lyx::frontend::GuiCompleter::tab() (GuiCompleter.cpp:698)
==2557222==    by 0xE8F19E: lyx::frontend::GuiCompleter::eventFilter(QObject*, QEvent*) (GuiCompleter.cpp:218)
==2557222==    by 0x583851A: QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.12.8)
==2557222==    by 0x4A96A54: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.12.8)
==2557222==  Block was alloc'd at
==2557222==    at 0x483BE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==2557222==    by 0xA22447: lyx::InsetMathChar::clone() const (InsetMathChar.cpp:104)
==2557222==    by 0xAA381C: lyx::MathAtom::MathAtom(lyx::MathAtom const&) (MathAtom.cpp:27)
==2557222==    by 0xA1F5A1: _Construct<lyx::MathAtom, const lyx::MathAtom&> (stl_construct.h:75)
==2557222==    by 0xA1F5A1: __uninit_copy<__gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > >, lyx::MathAtom*> (stl_uninitialized.h:83)
==2557222==    by 0xA1F5A1: uninitialized_copy<__gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > >, lyx::MathAtom*> (stl_uninitialized.h:140)
==2557222==    by 0xA1F5A1: __uninitialized_copy_a<__gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > >, lyx::MathAtom*, lyx::MathAtom> (stl_uninitialized.h:307)
==2557222==    by 0xA1F5A1: _M_allocate_and_copy<__gnu_cxx::__normal_iterator<const lyx::MathAtom*, std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > > > (stl_vector.h:1511)
==2557222==    by 0xA1F5A1: std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> >::operator=(std::__cxx1998::vector<lyx::MathAtom, std::allocator<lyx::MathAtom> > const&) (vector.tcc:226)
==2557222==    by 0xAD7D7E: operator= (vector:118)
==2557222==    by 0xAD7D7E: operator= (MathData.h:49)
==2557222==    by 0xAD7D7E: lyx::(anonymous namespace)::Parser::parse(lyx::MathData&, unsigned int, lyx::Inset::mode_type) (MathParser.cpp:784)
==2557222==    by 0xAD80E7: lyx::mathed_parse_cell(lyx::MathData&, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, lyx::Parse::flags) (MathParser.cpp:2153)
==2557222==    by 0xAF3EA6: lyx::asArray(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, lyx::MathData&, lyx::Parse::flags) (MathSupport.cpp:1076)
==2557222==    by 0xA66601: lyx::InsetMathMacro::setDisplayMode(lyx::InsetMathMacro::DisplayMode, int) (InsetMathMacro.cpp:825)
==2557222==    by 0xAAFE0B: lyx::MathData::updateMacros(lyx::Cursor*, lyx::MacroContext const&, lyx::UpdateType, int) (MathData.cpp:460)
==2557222==    by 0xAB014D: lyx::MathData::addToMathRow(lyx::MathRow&, lyx::MetricsInfo&) const (MathData.cpp:229)
==2557222==    by 0xAEB634: lyx::MathRow::MathRow(lyx::MetricsInfo&, lyx::MathData const*) (MathRow.cpp:156)
==2557222==    by 0xAAE3BB: lyx::MathData::metrics(lyx::MetricsInfo&, lyx::Dimension&, bool) const (MathData.cpp:284)
==2557222== 
==2557222== 
==2557222== HEAP SUMMARY:
==2557222==     in use at exit: 3,287,952 bytes in 28,452 blocks
==2557222==   total heap usage: 1,843,340 allocs, 1,814,888 frees, 5,948,344,230 bytes allocated
==2557222== 
==2557222== LEAK SUMMARY:
==2557222==    definitely lost: 6,728 bytes in 28 blocks
==2557222==    indirectly lost: 2,151 bytes in 101 blocks
==2557222==      possibly lost: 3,984 bytes in 33 blocks
==2557222==    still reachable: 3,192,457 bytes in 27,616 blocks
==2557222==                       of which reachable via heuristic:
==2557222==                         length64           : 4,960 bytes in 82 blocks
==2557222==                         newarray           : 6,360 bytes in 52 blocks
==2557222==         suppressed: 0 bytes in 0 blocks
==2557222== Rerun with --leak-check=full to see details of leaked memory
==2557222== 
==2557222== For lists of detected and suppressed errors, rerun with: -s
==2557222== ERROR SUMMARY: 315 errors from 5 contexts (suppressed: 0 from 0)


More information about the lyx-devel mailing list