psi-plus / main

Main repository with patches and required resources
https://psi-plus.com/
GNU Lesser General Public License v2.1
68 stars 20 forks source link

Сегфолт по нажатию правой кнопкой мыши при проверке орфографии. #406

Closed Ri0n closed 9 years ago

Ri0n commented 9 years ago

Original issue 396 created by psi-plus on 2011-01-19T13:27:16.000Z:

Шаги по воспроизведению проблемы: What steps will reproduce the problem?

  1. Включить проверку орфографии
  2. Ввести в поле ввода число 999
  3. Нажать ПКМ на подчёркнутом числе

Каков ожидаемый результат? What is the expected output? Выпадение меню

Что Вы видите вместо этого? What do you see instead? Сегфолт программы

Какую версию Psi+ / ОС Вы используете? What version of the Psi+/OS are you using? Psi+ v0.15.3559-webkit Beta (Jan 19 2011) / Gentoo x86_64

Дополнительная информация по проблеме: Additional information: Program received signal SIGSEGV, Segmentation fault. 0x00007ffff778bc13 in aspeller::AffixMgr::suffixcheck(aspeller::LookupInfo const&, acommon::ParmString, acommon::CheckInfo&, aspeller::GuessInfo, int, aspeller::AffEntry_) const () from /usr/lib/libaspell.so.15 (gdb) bt full

 0 0x00007ffff778bc13 in aspeller::AffixMgr::suffixcheck(aspeller::LookupInfo const&, acommon::ParmString, acommon::CheckInfo&, aspeller::GuessInfo, int, aspeller::AffEntry_) const () from /usr/lib/libaspell.so.15

No symbol table info available.

 1 0x00007ffff778c230 in aspeller::AffixMgr::affix_check(aspeller::LookupInfo const&, acommon::ParmString, acommon::CheckInfo&, aspeller::GuessInfo*) const ()

from /usr/lib/libaspell.so.15 No symbol table info available.

 2 0x00007ffff776035f in ?? () from /usr/lib/libaspell.so.15

No symbol table info available.

 3 0x00007ffff7763d56 in ?? () from /usr/lib/libaspell.so.15

No symbol table info available.

 4 0x00007ffff7765ed5 in ?? () from /usr/lib/libaspell.so.15

No symbol table info available.

 5 0x00007ffff7776470 in aspeller::SpellerImpl::suggest(acommon::MutableString) () from /usr/lib/libaspell.so.15

No symbol table info available.

 6 0x00007ffff77a3fda in aspell_speller_suggest ()

from /usr/lib/libaspell.so.15 No symbol table info available.

 7 0x00000000004dfe8e in ASpellChecker::suggestions (this=0x2b403f0, word=...)

at libpsi/tools/spellchecker/aspellchecker.cpp:81
    list = 0x4dfde9
    elements = 0x7fffffffc080
    c_word = 0x2b403f0 "06\257"
    words = {{p = {static shared_null = {ref = {_q_value = 132179}, 
            alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}}, 
          d = 0x1}, d = 0x1}}
    words = <error reading variable words (DWARF-2 expression error: DW_OP_reg operations must be used either alone or in conjuction with DW_OP_piece or DW_OP_bit_piece.)>

 8 0x000000000063ca72 in ChatEdit::contextMenuEvent (this=0x371ec00,

e=0x7fffffffcad0) at msgmle.cpp:335
    suggestions = {{p = {static shared_null = {ref = {_q_value = 132179}, 
            alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}}, 
          d = 0xff6c60}, d = 0xff6c60}}
    tc = {d = {d = 0x5387aa0}}
    selected_word = {static null = {<No data fields>}, 
      static shared_null = {ref = {_q_value = 140414}, alloc = 0, 
        size = 0, data = 0xff67fa, clean = 0, simpletext = 0, 
        righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, 
        array = {0}}, static shared_empty = {ref = {_q_value = 10689}, 
        alloc = 0, size = 0, data = 0x7ffff38d989a, clean = 0, 
        simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, 
        reserved = 0, array = {0}}, d = 0x534d780, 
      static codecForCStrings = 0x0}

from /usr/lib64/qt4/libQtGui.so.4 No symbol table info available.

 10 0x00007ffff41c2866 in QFrame::event(QEvent*) ()

from /usr/lib64/qt4/libQtGui.so.4 No symbol table info available.

 11 0x00007ffff35c5586 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject, QEvent) () from /usr/lib64/qt4/libQtCore.so.4

No symbol table info available.

 12 0x00007ffff3dc95fc in QApplicationPrivate::notifyhelper(QObject, QEvent_)

() from /usr/lib64/qt4/libQtGui.so.4

No symbol table info available.

 13 0x00007ffff3dcfd43 in QApplication::notify(QObject, QEvent) ()

from /usr/lib64/qt4/libQtGui.so.4 No symbol table info available.

 14 0x00000000006d5166 in PsiApplication::notify (this=0x7fffffffd650,

receiver=0x371c730, event=0x7fffffffcad0) at psiapplication.cpp:253

No locals.

 15 0x00007ffff35c614b in QCoreApplication::notifyInternal(QObject, QEvent)

() from /usr/lib64/qt4/libQtCore.so.4

No symbol table info available.

 16 0x00007ffff3e4f856 in QETWidget::translateMouseEvent(_XEvent const*) ()

from /usr/lib64/qt4/libQtGui.so.4 No symbol table info available.

 17 0x00007ffff3e4e49a in QApplication::x11ProcessEvent(_XEvent*) ()

from /usr/lib64/qt4/libQtGui.so.4 No symbol table info available.

 18 0x00007ffff3e78442 in x11EventSourceDispatch(GSource, int ()(void), void_) () from /usr/lib64/qt4/libQtGui.so.4

No symbol table info available.

 19 0x00007ffff2d94f8f in g_main_context_dispatch ()

from /usr/lib/libglib-2.0.so.0 No symbol table info available.

 20 0x00007ffff2d98dc8 in g_main_context_iterate ()

from /usr/lib/libglib-2.0.so.0 No symbol table info available.

 21 0x00007ffff2d98f7c in g_main_context_iteration ()

from /usr/lib/libglib-2.0.so.0 No symbol table info available.

 22 0x00007ffff35ef673 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4

No symbol table info available.

 23 0x00007ffff3e7803e in QGuiEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtGui.so.4

No symbol table info available.

 24 0x00007ffff35c4aa2 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4

No symbol table info available.

 25 0x00007ffff35c4e74 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4

No symbol table info available.

 26 0x00007ffff35c9aeb in QCoreApplication::exec() ()

from /usr/lib64/qt4/libQtCore.so.4 No symbol table info available.

 27 0x00000000009475b8 in main (argc=1, argv=0x7fffffffd828) at main.cpp:545

    init = {&lt;No data fields&gt;}
    app = {&lt;QApplication&gt; = {&lt;No data fields&gt;}, static staticMetaObject = {
        d = {superdata = 0xff5f00, stringdata = 0xb84dc0 &quot;PsiApplication&quot;, 
          data = 0xb84d20, extradata = 0x0}}, portableBase_ = 0x0}
    returnValue = 0
    cli = {&lt;SimpleCli&gt; = {&lt;QObject&gt; = {&lt;No data fields&gt;}, argdefs = {{
            d = 0x1008ec0, e = 0x1008ec0}}, aliases = {{d = 0x1008f50, 
            e = 0x1008f50}}}, static staticMetaObject = {d = {
          superdata = 0xff61a0, stringdata = 0xb8c41c &quot;PsiCli&quot;, 
          data = 0xb8c3e0, extradata = 0x0}}}
    cmdline = {{d = 0x1362b90, e = 0x1362b90}}
    keystoremgr = &lt;incomplete type&gt;
    psi = 0x1392db0
Ri0n commented 9 years ago

Comment #1 originally posted by psi-plus on 2011-01-19T14:20:33.000Z:

Бэктрейс с отлаженным (-ggdb3) и оптимизированным (-O2) aspell:

 0 aspeller::AffixMgr::suffix_check (this=0x7fffffffb618, linf=, word=..., ci=..., gi=0x0, sfxopts=0, ppfx=0x0)

at modules/speller/default/affix.cpp:805
    se = <value optimized out>
    sptr = 0x73010201

 1 0x00007ffff778c230 in aspeller::AffixMgr::affix_check (this=0x2c676f0, linf=..., word=..., ci=..., gi=0x0) at modules/speller/default/affix.cpp:843

    cp = aspeller::AllLower
    pword = {str_ = 0x7fffffffb910 "", size_ = 4294967295}
    sword = {str_ = 0x7fffffffb910 "", size_ = 4294967295}
    lower = {acommon::OStream = {_vptr.OStream = 0x7ffff79b91b0}, begin_ = 0x0, end_ = 0x0, storage_end_ = 0x0, static npos = 2147483647}

 2 0x00007ffff776035f in (anonymous namespace)::Working::try_word_n (this=0x7fffffffba50, str=..., score=0) at modules/speller/default/suggest.cpp:413

    ci = {next = 0x0, word = {str_ = 0x0, size_ = 0}, pre_strip_len = 0, pre_add_len = 0, pre_add = 0x0, suf_strip_len = 0, suf_add_len = 0, 
      suf_add = 0x0, pre_flag = 0, suf_flag = 0, guess = 0, compound = 0}
    res = <value optimized out>
    end = <value optimized out>
    sw = {word = 0x0, aff = 0x0, catg = 0x0, adv_ = 0, intr = {0x0, 0x0, 0x0}, word_size = 0, what = aspeller::WordEntry::Other, word_info = 0, 
      frequency = 0}

 3 0x00007ffff7763d56 in try_word (this=0x7fffffffba50) at modules/speller/default/suggest.cpp:227

No locals.

 4 (anonymous namespace)::Working::try_one_edit_word (this=0x7fffffffba50) at modules/speller/default/suggest.cpp:603

    a = <value optimized out>
    c = <value optimized out>
    i = <value optimized out>
    replace_list = 0x1d3ac90 "abcdefghijklmnopqrstuvwxyz\243\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336", <incomplete sequence \337>
    b = <value optimized out>
    new_word_end = 0x7fffffffb910 ""

 5 0x00007ffff7765ed5 in get_suggestions (this=, word=) at modules/speller/default/suggest.cpp:316

No locals.

 6 (anonymous namespace)::SuggestImpl::suggest (this=, word=) at modules/speller/default/suggest.cpp:1326

    sug = {<(anonymous namespace)::Score> = {lang = 0x2c4dc60, original = {word = {acommon::OStream = {_vptr.OStream = 0x7ffff79b91b0}, 
            begin_ = 0x2fcf160 "99", end_ = 0x2fcf162 "", storage_end_ = 0x2fcf1a0 "\340g\377", static npos = 2147483647}, 
          lower = {acommon::OStream = {_vptr.OStream = 0x7ffff79b91b0}, begin_ = 0x17ec2b0 "99\343\361\377\177", 
            end_ = 0x17ec2b2 "\343\361\377\177", storage_end_ = 0x17ec2f0 "P", static npos = 2147483647}, clean = {acommon::OStream = {
              _vptr.OStream = 0x7ffff79b91b0}, begin_ = 0x0, end_ = 0x0, storage_end_ = 0x0, static npos = 2147483647}, 
          soundslike = {acommon::OStream = {_vptr.OStream = 0x7ffff79b91b0}, begin_ = 0x2fe4c60 "", end_ = 0x2fe4c60 "", 
            storage_end_ = 0x2fe4ca0 "\200\002\212\364\377\177", static npos = 2147483647}, case_pattern = aspeller::AllLower}, parms = 0x2cb2018}, 
      threshold = 1, try_harder = 0, edit_dist_fun = 0x7fffffffbb20, max_word_length = 0, sp = 0x1d38850, scored_near_misses = {
        data_ = {std::_List_base<<unnamed::ScoreWordSound, std::allocator<<unnamed>::ScoreWordSound> >> = {
            _M_impl = {std::allocator<std::_List_node<<unnamed::ScoreWordSound> >> = {<__gnu_cxx::new_allocatorstd::_List_node<<unnamed::ScoreWordSound> >> = {<No data fields>}, <No data fields>}, _M_node = {_M_next = 0x7fffffffbb08, _M_prev = 0x7fffffffbb08}}}, <No data fields>}}, near_misses = {
        data_ = {std::_List_base<<unnamed::ScoreWordSound, std::allocator<<unnamed>::ScoreWordSound> >> = {
            _M_impl = {std::allocator<std::_List_node<<unnamed::ScoreWordSound> >> = {<__gnu_cxx::new_allocatorstd::_List_node<<unnamed::ScoreWordSound> >> = {<No data fields>}, <No data fields>}, _M_node = {_M_next = 0x7fffffffbb18, _M_prev = 0x7fffffffbb18}}}, <No data fields>}}, 
      near_misses_final = 0x2cb2000, temp_end = 0x0, buffer = {chunk_size = 1024, min_align = 8, first = 0x2f8c930, first_free = 0x2f8c930, 
        reserve = 0x0, top = 0x2f8cd30 "", bottom = 0x2f8c938 "\230\303\343\361\377\177", temp_end = 0x0}, temp_buffer = {chunk_size = 1024, 
        min_align = 8, first = 0x2fb0030, first_free = 0x2fb0030, reserve = 0x0, top = 0x2fb0430 "", bottom = 0x2fb0038 "\250\303\343\361\377\177", 
        temp_end = 0x0}, static do_count = true, static dont_count = false, check_info = {{next = 0x0, word = {str_ = 0x0, size_ = 0}, 
          pre_strip_len = 0, pre_add_len = 0, pre_add = 0x0, suf_strip_len = 0, suf_add_len = 0, suf_add = 0x0, pre_flag = 0, suf_flag = 0, guess = 0, 
          compound = 0}, {next = 0x0, word = {str_ = 0x0, size_ = 0}, pre_strip_len = 0, pre_add_len = 0, pre_add = 0x0, suf_strip_len = 0, 
          suf_add_len = 0, suf_add = 0x0, pre_flag = 0, suf_flag = 0, guess = 0, compound = 0}, {next = 0x0, word = {str_ = 0x0, size_ = 0}, 
          pre_strip_len = 0, pre_add_len = 0, pre_add = 0x0, suf_strip_len = 0, suf_add_len = 0, suf_add = 0x0, pre_flag = 0, suf_flag = 0, guess = 0, 
          compound = 0}, {next = 0x0, word = {str_ = 0x0, size_ = 0}, pre_strip_len = 0, pre_add_len = 0, pre_add = 0x0, suf_strip_len = 0, 
          suf_add_len = 0, suf_add = 0x0, pre_flag = 0, suf_flag = 0, guess = 0, compound = 0}, {next = 0x0, word = {str_ = 0x0, size_ = 0}, 
          pre_strip_len = 0, pre_add_len = 0, pre_add = 0x0, suf_strip_len = 0, suf_add_len = 0, suf_add = 0x0, pre_flag = 0, suf_flag = 0, guess = 0, 
          compound = 0}, {next = 0x0, word = {str_ = 0x0, size_ = 0}, pre_strip_len = 0, pre_add_len = 0, pre_add = 0x0, suf_strip_len = 0, 
          suf_add_len = 0, suf_add = 0x0, pre_flag = 0, suf_flag = 0, guess = 0, compound = 0}, {next = 0x0, word = {str_ = 0x0, size_ = 0},
          pre_strip_len = 0, pre_add_len = 0, pre_add = 0x0, suf_strip_len = 0, suf_add_len = 0, suf_add = 0x0, pre_flag = 0, suf_flag = 0, guess = 0, 
          compound = 0}, {next = 0x0, word = {str_ = 0x0, size_ = 0}, pre_strip_len = 0, pre_add_len = 0, pre_add = 0x0, suf_strip_len = 0, 
          suf_add_len = 0, suf_add = 0x0, pre_flag = 0, suf_flag = 0, guess = 0, compound = 0}}}

 7 0x00007ffff7776470 in aspeller::SpellerImpl::suggest (this=, word=...) at modules/speller/default/speller_impl.cpp:125

No locals.

 8 0x00007ffff77a3fda in acommon::aspell_speller_suggest (ths=0x1d38850, word=, word_size=)

at lib/speller-c.cpp:148
    ret = {acommon::PosibErrBase = {err_ = 0xffffffff}, data = 0x2f8d608}

 9 0x00000000004dfe8e in ASpellChecker::suggestions (this=0x1d30e30, word=...) at libpsi/tools/spellchecker/aspellchecker.cpp:81

    list = 0x4dfde9
    elements = 0x7fffffffc070
    c_word = 0x1d30e30 "06\257"
    words = {{p = {static shared_null = {ref = {_q_value = 39615}, alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0x1}, d = 0x1}}
    words = <error reading variable words (DWARF-2 expression error: DW_OP_reg operations must be used either alone or in conjuction with DW_OP_piece or DW_OP_bit_piece.)>

 10 0x000000000063ca72 in ChatEdit::contextMenuEvent (this=0x2eb52d0, e=0x7fffffffcac0) at msgmle.cpp:335

    suggestions = {{p = {static shared_null = {ref = {_q_value = 39615}, alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0xff6c60}, 
        d = 0xff6c60}}
    tc = {d = {d = 0x2fe5c20}}
    selected_word = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 81533}, alloc = 0, size = 0, data = 0xff67fa, 
        clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {
          _q_value = 2715}, alloc = 0, size = 0, data = 0x7ffff38d989a, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, 
        reserved = 0, array = {0}}, d = 0x2ee7530, static codecForCStrings = 0x0}

 11 0x00007ffff3e1f0e7 in QWidget::event(QEvent*) () from /usr/lib64/qt4/libQtGui.so.4

No symbol table info available.

Ri0n commented 9 years ago

Comment #2 originally posted by psi-plus on 2011-06-25T19:50:36.000Z:

Подтверждаю креш

[1000] Error - [1000] RtlWerpReportException failed with status code :-1073741823. Will try to launch the process directly [1000]

Psi+ Webkit r4114 на Win7 х32

Ri0n commented 9 years ago

Comment #3 originally posted by psi-plus on 2011-06-26T09:35:45.000Z:

По поводу этой проблемы - я сразу подебажил чуток, и там видно, что падение происходит внутри аспела, не в пси. Может, конечно, там псина какие-то неверные параметры отдает, хз, не разбирался, нужно внимательней покапать

Ri0n commented 9 years ago

Comment #4 originally posted by psi-plus on 2011-07-31T17:41:43.000Z:

Больше не воспроизводится. Что там было? Не наше?

Ri0n commented 9 years ago

Comment #5 originally posted by psi-plus on 2011-07-31T22:56:40.000Z:

тут точно аспель виноват у меня не падает

Ri0n commented 9 years ago

Comment #6 originally posted by psi-plus on 2011-08-01T06:37:12.000Z:

У меня падает. Пишу 99, райтклик на тексте - падение. Юзается энчант

Ri0n commented 9 years ago

Comment #7 originally posted by psi-plus on 2011-08-18T07:17:42.000Z:

Issue 453 has been merged into this issue.

Ri0n commented 9 years ago

Comment #8 originally posted by psi-plus on 2011-08-18T07:18:06.000Z:

<empty>

Ri0n commented 9 years ago

Comment #9 originally posted by psi-plus on 2011-08-18T08:18:47.000Z:

у меня в качестве бэкэнда энчанта юзается myspell. ему вообще пофиг на цифры.

Ri0n commented 9 years ago

Comment #10 originally posted by psi-plus on 2012-03-10T18:44:21.000Z:

В общем пофиксил таким образом - для чистых чисел не производится проверка орфографии