Steps to reproduce:

- Enable CLucene FTS in Dovecot;
- Open mailbox with MUA;
- Search for message with any text;
- IMAP session crash.

OS: Gentoo Base System release 2.6

Version:
FTS: dev-cpp/clucene-2.3.3.4-r6
IMAP: net-mail/dovecot-2.3.2.1
LIBC: sys-libs/musl-1.1.21

Dovecot FTS config:

plugin {
 fts = lucene
 fts_lucene = whitespace_chars=@. normalize no_snowball
 fts_autoindex=yes
 fts_autoindex_max_recent_msgs=80
 fts_index_timeout=90
}

dmesg:
[260150.192294] imap[18221]: segfault at 6578772cca98 ip 000063e7f1b10397 sp 00007945d5822970 error 6 in libc.so[63e7f1ae8000+a4000] [260150.192316] Code: 0f 84 44 02 00 00 48 39 ca 0f 84 62 02 00 00 48 8b 43 08 48 89 4a 10 48 89 51 18 48 89 c2 48 83 e0 fe 48 83 ca 01 48 89 53 08 <48> 83 0c 03 01 41 8b 07 48 8d 6b 10 85 c0 0f 84 68 ff ff ff 31 c0

bt full:
Core was generated by `dovecot/imap'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  unbin (i=0, c=0x1908553de10) at src/malloc/malloc.c:195
195     src/malloc/malloc.c: No such file or directory.
(gdb) bt full
#0  unbin (i=0, c=0x1908553de10) at src/malloc/malloc.c:195
No locals.
#1  malloc (n=<optimized out>, n@entry=4) at src/malloc/malloc.c:320
       mask = <optimized out>
       c = 0x1908553de10
       i = 0
       j = 0
#2 0x000063e7f1b4984f in wcsdup (s=0x63e7ed7d0c58 L"") at src/string/wcsdup.c:7
       l = 0
       d = <optimized out>
#3 0x000063e7eda98308 in lucene::index::Term::Term (this=0x1908553df80) at /var/tmp/portage/dev-cpp/clucene-2.3.3.4-r6/work/clucene-core-2.3.3.4/src/core/CLucene/index/Term.cpp:26
No locals.
#4 0x000063e7edad5f25 in lucene::index::SegmentTermEnum::readTerm(lucene::index::Term*) () at /var/tmp/portage/dev-cpp/clucene-2.3.3.4-r6/work/clucene-core-2.3.3.4/src/core/CLucene/index/SegmentTermEnum.cpp:351
       start = 1
       length = 4
       totalLength = 5
       field = <optimized out>
       fieldname = 0x1908553d180 L"\142\157\144\171"
#5 0x000063e7edad5f7c in lucene::index::SegmentTermEnum::next (this=0x19085524460) at /var/tmp/portage/dev-cpp/clucene-2.3.3.4-r6/work/clucene-core-2.3.3.4/src/core/CLucene/index/SegmentTermEnum.cpp:180
       tmp = <optimized out>
       this = 0x19085524460
       tmp = <optimized out>
       tmp = <optimized out>
#6 0x000063e7edad5be9 in lucene::index::SegmentTermEnum::scanTo (this=this@entry=0x19085524460, term=term@entry=0x7945d5822dc0) at /var/tmp/portage/dev-cpp/clucene-2.3.3.4-r6/work/clucene-core-2.3.3.4/src/core/CLucene/index/SegmentTermEnum.cpp:218
No locals.
#7 0x000063e7edad959c in lucene::index::TermInfosReader::scanEnum (this=<optimized out>, term=term@entry=0x7945d5822dc0) at /var/tmp/portage/dev-cpp/clucene-2.3.3.4-r6/work/clucene-core-2.3.3.4/src/core/CLucene/index/TermInfosReader.cpp:422
       enumerator = 0x19085524460
#8 0x000063e7edad96a4 in lucene::index::TermInfosReader::get (this=<optimized out>, term=term@entry=0x7945d5822dc0) at /var/tmp/portage/dev-cpp/clucene-2.3.3.4-r6/work/clucene-core-2.3.3.4/src/core/CLucene/index/TermInfosReader.cpp:246
       enumerator = <optimized out>
#9 0x000063e7edab9071 in lucene::index::SegmentReader::docFreq (this=0x19085500ae0, t=0x7945d5822dc0) at /var/tmp/portage/dev-cpp/clucene-2.3.3.4-r6/work/clucene-core-2.3.3.4/src/core/CLucene/index/SegmentReader.cpp:518
       ti = <optimized out>
#10 0x000063e7edae2620 in lucene::search::Similarity::idf (this=0x19085526e60, term=0x7945d5822dc0, searcher=0x190855007a0) at /var/tmp/portage/dev-cpp/clucene-2.3.3.4-r6/work/clucene-core-2.3.3.4/src/core/CLucene/search/Similarity.cpp:184
No locals.
#11 0x000063e7edaeda51 in lucene::search::TermWeight::TermWeight(lucene::search::Searcher*, lucene::search::TermQuery*, lucene::index::Term*) () at /var/tmp/portage/dev-cpp/clucene-2.3.3.4-r6/work/clucene-core-2.3.3.4/src/core/CLucene/search/TermQuery.cpp:117
No locals.
#12 0x000063e7edaeda99 in lucene::search::TermQuery::_createWeight(lucene::search::Searcher*) () at /var/tmp/portage/dev-cpp/clucene-2.3.3.4-r6/work/clucene-core-2.3.3.4/src/core/CLucene/search/TermQuery.cpp:240
No locals.
#13 0x000063e7edafa2dc in lucene::search::BooleanWeight::BooleanWeight(lucene::search::Searcher*, lucene::util::CLVector<lucene::search::BooleanClause*, lucene::util::Deletor::Object<lucene::search::BooleanClause> >*, lucene::search::BooleanQuery*) () at /usr/lib/gcc/x86_64-gentoo-linux-musl/8.2.0/include/g++-v8/bits/stl_vector.h:930
       i = 1
       i = <optimized out>
#14 0x000063e7edafa351 in lucene::search::BooleanQuery::_createWeight(lucene::search::Searcher*) () at /var/tmp/portage/dev-cpp/clucene-2.3.3.4-r6/work/clucene-core-2.3.3.4/src/core/CLucene/search/BooleanQuery.cpp:66
No locals.
#15 0x000063e7edaef926 in lucene::search::Query::weight (this=this@entry=0x7945d5822da0, searcher=searcher@entry=0x190855007a0) at /var/tmp/portage/dev-cpp/clucene-2.3.3.4-r6/work/clucene-core-2.3.3.4/src/core/CLucene/search/SearchHeader.cpp:121
       query = <optimized out>
       weight = <optimized out>
       sum = <optimized out>
       norm = <optimized out>
#16 0x000063e7edaf0cd7 in lucene::search::IndexSearcher::_search(lucene::search::Query*, lucene::search::Filter*, int) () at /var/tmp/portage/dev-cpp/clucene-2.3.3.4-r6/work/clucene-core-2.3.3.4/src/core/CLucene/search/IndexSearcher.cpp:222
       weight = <optimized out>
       scorer = <optimized out>
       bits = <optimized out>
       hq = <optimized out>
       totalHits = <optimized out>
hitCol = {<lucene::search::HitCollector> = {<lucene::debug::LuceneVoidBase> = {_vptr.LuceneVoidBase = 0x2}, <No data fields>}, minScore = -1.75304399e+30, bits = 0x30, hq = 0xffffffffffffffff, nDocs = 40, totalHits = 0x63e7eda6f2cc <lucene::util::Compare::WChar::operator()(wchar_t const*, wchar_t const*) const+20>}
       scoreDocsLength = <optimized out>
       scoreDocs = <optimized out>
       totalHitsInt = <optimized out>
       wq = <optimized out>
#17 0x000063e7edaf4344 in lucene::search::Hits::getMoreDocs(unsigned long) () at /var/tmp/portage/dev-cpp/clucene-2.3.3.4-r6/work/clucene-core-2.3.3.4/src/core/CLucene/search/Hits.cpp:120
       _min = <optimized out>
       n = <optimized out>
       topDocs = 0x0
       scoreDocs = <optimized out>
       scoreDocsLength = <optimized out>
       scoreNorm = <optimized out>
---Type <return> to continue, or q <return> to quit---
#18 0x000063e7edaf443e in lucene::search::Hits::Hits (this=0x1908553a1a0, s=0x190855007a0, q=<optimized out>, f=<optimized out>, _sort=<optimized out>) at /var/tmp/portage/dev-cpp/clucene-2.3.3.4-r6/work/clucene-core-2.3.3.4/src/core/CLucene/search/Hits.cpp:60
No locals.
#19 0x000063e7edaef7fc in lucene::search::Searcher::search(lucene::search::Query*, lucene::search::Filter*) () at /var/tmp/portage/dev-cpp/clucene-2.3.3.4-r6/work/clucene-core-2.3.3.4/src/core/CLucene/search/SearchHeader.cpp:188
No locals.
#20 0x000063e7edd7edf0 in lucene_index_search(lucene_index*, array__lucene_query&, fts_result*, array__seq_range*) () at lucene-wrapper.cc:1361
       hits = <optimized out>
       last_uid = <optimized out>
       score = <optimized out>
       ret = 0
query = {<lucene::search::Query> = {<lucene::util::NamedObject> = {_vptr.NamedObject = 0x63e7edd6e970 <vtable for lucene::search::BooleanQuery+16>}, boost = 1}, clauses = 0x190855007e0, static maxClauseCount = 1024, static allowDocsOutOfOrder = false, disableCoord = false, minNrShouldMatch = 0} mailbox_term = {<lucene::debug::LuceneBase> = {_vptr.LuceneBase = 0x63e7edd68e80 <vtable for lucene::index::Term+16>, __cl_refcount = 2}, cachedHashCode = 0, _field = 0x190854bd7c0 L"\142\157\170", _text = 0x1908553a0a0 L"\142\146\064\141\067\066\061\060\146\062\070\143\063\142\065\143\066\145\060\062\060\060\060\060\065\143\146\143\061\141\061\064", textLenBuf = 32, textLen = 32, internF = true} mailbox_query = {<lucene::search::Query> = {<lucene::util::NamedObject> = {_vptr.NamedObject = 0x63e7edd6d918 <vtable for lucene::search::TermQuery+16>}, boost = 1}, term = 0x7945d5822dc0} #21 0x000063e7edd7ff54 in lucene_index_lookup (index=0x190854ee8e0, args=args@entry=0x1908553b468, flags=flags@entry=(unknown: 0), result=result@entry=0x7945d5823000) at lucene-wrapper.cc:1421
       uids_arr = <optimized out>
       arg = 0x0
def_queries = {arr = {buffer = 0x190854b2438, element_size = 16}, v = 0x190854b2438, v_modifiable = 0x190854b2438}
       have_definites = true
maybe_queries = {arr = {buffer = 0xc, element_size = 18446744073709551612}, v = 0xc, v_modifiable = 0xc}
       have_maybies = <optimized out>
#22 0x000063e7edd7c0d4 in fts_backend_lucene_lookup () at fts-backend-lucene.c:489
       _data_stack_cur_id = 5
       backend = 0x190854ee780
       ret = <optimized out>
#23 0x000063e7f09a85dd in fts_backend_lookup (backend=0x190854ee780, box=0x190854fc148, args=args@entry=0x1908553b468, flags=flags@entry=(unknown: 0), result=result@entry=0x7945d5823000) at fts-api.c:353
No locals.
#24 0x000063e7f09acd92 in fts_search_lookup_level_single (and_args=<optimized out>, args=0x1908553b468, fctx=0x190854f5520) at fts-search.c:50
       flags = (unknown: 0)
       level = <optimized out>
result = {box = 0x0, definite_uids = {arr = {buffer = 0x19085528378, element_size = 8}, v = 0x19085528378, v_modifiable = 0x19085528378}, maybe_uids = {arr = {buffer = 0x190855284b8, element_size = 8}, v = 0x190855284b8, v_modifiable = 0x190855284b8}, scores = {arr = {buffer = 0x190855285f8, element_size = 8}, v = 0x190855285f8, v_modifiable = 0x190855285f8}, scores_sorted = false}
       flags = <optimized out>
       level = <optimized out>
       result = <optimized out>
#25 fts_search_lookup_level () at fts-search.c:210
       _data_stack_cur_id = 4
       ret = <optimized out>
#26 0x000063e7f09ad32c in fts_search_lookup_level () at fts-search.c:220
       ret = 0
#27 0x000063e7f09ad48e in fts_search_lookup () at fts-search.c:360
       last_uid = 622
       seq1 = 544
       seq2 = 807
       __func__ = "fts_search_lookup"
#28 0x000063e7f09af460 in fts_mailbox_search_init () at fts-storage.c:250
       ft = 0x19085511e60
       fbox = <optimized out>
       flist = <optimized out>
       ctx = 0x190854f5240
       fctx = 0x190854f5520
#29 0x000001905d983992 in imap_search_start () at imap-search.c:586
       cmd = 0x190854e9628
       __func__ = "imap_search_start"
#30 0x000001905d9753e5 in cmd_search (cmd=<optimized out>) at cmd-search.c:48
       ctx = 0x190854e9830
       sargs = 0x1908553b308
       args = 0x19085527620
       charset = 0x190854f3860 "utf-8"
       ret = 1
#31 0x000001905d97cad4 in command_exec () at imap-commands.c:201
       hook = 0x1905db9cda0
       finished = <optimized out>
       __func__ = "command_exec"
#32 0x000001905d97b262 in client_command_input () at imap-client.c:1152
       client = 0x190854e89c8
       command = <optimized out>
       __func__ = "client_command_input"
#33 0x000001905d97b305 in client_command_input () at imap-client.c:1215
       client = 0x190854e89c8
       command = <optimized out>
       __func__ = "client_command_input"
---Type <return> to continue, or q <return> to quit---
#34 0x000001905d97b6cd in client_handle_next_command (remove_io_r=<synthetic pointer>, client=0x190854e89c8) at imap-client.c:1257
No locals.
#35 client_handle_input () at imap-client.c:1271
       _data_stack_cur_id = 3
       ret = <optimized out>
       remove_io = false
       handled_commands = false
       ret = <optimized out>
       remove_io = <optimized out>
       __func__ = "client_handle_input"
       client = 0x190854e89c8
       handled_commands = <optimized out>
       _data_stack_cur_id = <optimized out>
       ret = <optimized out>
       remove_io = <optimized out>
       __func__ = "client_handle_input"
       _data_stack_cur_id = <optimized out>
#36 0x000001905d97bb9e in client_input () at imap-client.c:1317
       cmd = 0x190854cfba0
       output = 0x190854e9440
       bytes = 80
       __func__ = "client_input"
#37 0x000063e7f14f8c58 in io_loop_call_io () at ioloop.c:674
       ioloop = 0x63e7f1ae7f20
       t_id = 2
       __func__ = "io_loop_call_io"
#38 0x000063e7f14fa116 in io_loop_handler_run_internal () at ioloop-epoll.c:222
       ctx = 0x1905db9cfc0
       events = <optimized out>
       event = 0x190854bc360
       list = 0x190854bd1a0
       io = <optimized out>
       tv = {tv_sec = 1799, tv_usec = 999332}
       events_count = <optimized out>
       msecs = <optimized out>
       ret = <optimized out>
       i = 0
       j = <optimized out>
       call = <optimized out>
       __func__ = "io_loop_handler_run_internal"
#39 0x000063e7f14f8cfa in io_loop_handler_run () at ioloop.c:726
       __func__ = "io_loop_handler_run"
#40 0x000063e7f14f8e68 in io_loop_run () at ioloop.c:699
       __func__ = "io_loop_run"
#41 0x000063e7f1480dbb in master_service_run (service=0x63e7f1ae7de0, callback=callback@entry=0x1905d987e60 <client_connected>) at master-service.c:767
No locals.
#42 0x000001905d96dfc4 in main () at main.c:521
set_roots = {0x1905db9aa20 <smtp_submit_setting_parser_info>, 0x1905db9a740 <imap_setting_parser_info>, 0x0} login_set = {auth_socket_path = 0x190854b2060 "\003", postlogin_socket_path = 0x0, postlogin_timeout_secs = 60, callback = 0x1905d9886b0 <login_client_connected>, failure_callback = 0x1905d987f28 <login_client_failed>,
         request_auth_token = true}
       service_flags = <optimized out>
       storage_service_flags = MAIL_STORAGE_SERVICE_FLAG_NO_NAMESPACES
       username = 0x0
       auth_socket_path = <optimized out>
       c = <optimized out>
       error = 0x4cd0 <error: Cannot access memory at address 0x4cd0>
#43 0x000063e7f1b0506b in libc_start_main_stage2 (main=0x1905d96dc80 <main>, argc=1, argv=0x7945d5823688) at src/env/__libc_start_main.c:94
       envp = 0x7945d5823698
#44 0x000001905d96e168 in _start_c () at imap-client.c:1433
No symbol table info available.
#45 0x0000000000000000 in ?? ()
No symbol table info available.
(gdb)

--
Alexander Miroshnichenko

Reply via email to