lyx master crashed when converting text to note

Pavel Sanda sanda at lyx.org
Mon Feb 22 21:45:38 UTC 2021


On Mon, Feb 22, 2021 at 06:31:08PM +0000, V K wrote:
> Yes, I can recreate crash with anonymized file. I marked line/paragraph part of which should be selected before creating note to get a crash with ====. Selection should be from the first line. Selection should encompass one line more on the bottom if selecting from the second line from the top. That is the minimal length to get a crash.

Indeed, I can reproduce the problem, generally selecting line starting with ========== to the very end of the document and then insert-note is enough to trigger it.

Bisect leads to:
commit 5a58ca6576a1fa2d6bea8e9e7927d5779943e593
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Sun Feb 14 21:34:43 2021 +0100

    Fix caret height when inserting new inset
    
    For now, the simplest thing to do it to compute metrics in all cases
    before calling setCurrentFont().
    
    In 2.5, a better approach will be to add a new virtual function
    InsetText::setFont that will set correctly TextMetrics::font_ (a cache
    of the reference font).
    
    Fixes bug #12126.


Backtrace:
#0  __GI_raise (sig=sig at entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x00007ffff6558535 in __GI_abort () at abort.c:79
#2  0x00007ffff69247bd in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
#3  0x00005555562d6fef in std::__debug::vector<__gnu_debug::_Safe_iterator<std::__cxx1998::_List_iterator<lyx::Paragraph>, std::__debug::list<lyx::Paragraph, std::allocator<lyx::Paragraph> > >, std::allocator<__gnu_debug::_Safe_iterator<std::__cxx1998::_List_iterator<lyx::Paragraph>, std::__debug::list<lyx::Paragraph, std::allocator<lyx::Paragraph> > > > >::operator[] (this=0x7fffec009690, __n=37) at /usr/include/c++/8/debug/vector:417
#4  0x00005555562d4acd in lyx::RandomAccessList<lyx::Paragraph>::operator[] (this=0x7fffec009660, pos=37)
    at ./support/RandomAccessList.h:161
#5  0x00005555566295a8 in lyx::TextMetrics::checkInsetHit (this=0x5555581bdef8, pit=37, x=179, y=6)
    at TextMetrics.cpp:1491
#6  0x00005555566299ef in lyx::TextMetrics::checkInsetHit (this=0x5555581bdef8, x=179, y=6)
    at TextMetrics.cpp:1515
#7  0x000055555668518a in lyx::BufferView::getCoveringInset (this=0x5555582f8430, text=..., x=179, y=6)
    at BufferView.cpp:2303
#8  0x00005555566852b1 in lyx::BufferView::updateHoveredInset (this=0x5555582f8430) at BufferView.cpp:2334
#9  0x000055555667ab85 in lyx::BufferView::processUpdateFlags (this=0x5555582f8430, 
    flags=lyx::Update::SinglePar) at BufferView.cpp:574
#10 0x00005555565ee806 in lyx::Text::dispatch (this=0x7fffec009658, cur=..., cmd=...) at Text3.cpp:2090
#11 0x00005555569958a6 in lyx::InsetText::doDispatch (this=0x7fffec009640, cur=..., cmd=...)
    at insets/InsetText.cpp:343
#12 0x00005555568260b8 in lyx::Inset::dispatch (this=0x7fffec009640, cur=..., cmd=...) at insets/Inset.cpp:328
#13 0x0000555556407754 in lyx::Cursor::dispatch (this=0x55555836a088, cmd0=...) at Cursor.cpp:823
#14 0x0000555556a2e35f in lyx::frontend::GuiView::dispatchToBufferView (this=0x555557e02c30, cmd=..., dr=...)
    at GuiView.cpp:3943
#15 0x0000555556a3307b in lyx::frontend::GuiView::dispatch (this=0x555557e02c30, cmd=..., dr=...)
    at GuiView.cpp:4661
#16 0x00005555569da4be in lyx::frontend::GuiApplication::dispatch (this=0x555557424ff0, cmd=..., dr=...)
    at GuiApplication.cpp:2211
#17 0x00005555569d5dc8 in lyx::frontend::GuiApplication::dispatch (this=0x555557424ff0, cmd=...)
    at GuiApplication.cpp:1500
#18 0x00005555564e9b1f in lyx::dispatch (action=...) at LyX.cpp:1477
#19 0x0000555556a98a82 in lyx::frontend::Action::action (this=0x5555581cdf90) at Action.cpp:91
#20 0x0000555556a98af8 in lyx::frontend::Action::qt_static_metacall (_o=0x5555581cdf90, 


Pavel


More information about the lyx-devel mailing list