hi,

I'm consistently having this crash when trying to re-open an existing
IndexReader.

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffe6611700 (LWP 27814)]
0x00007ffff673fd77 in std::_Rb_tree<wchar_t const*, std::pair<wchar_t
const* const, lucene::index::SegmentReader::Norm*>,
std::_Select1st<std::pair<wchar_t const* const,
lucene::index::SegmentReader::Norm*> >, lucene::util::Compare::WChar,
std::allocator<std::pair<wchar_t const* const,
lucene::index::SegmentReader::Norm*> > >::_M_begin
(this=0x7fffe01c0660, directory=<value optimized out>,
    infos=<value optimized out>, closeDirectory=<value optimized out>,
oldReaders=<value optimized out>, oldStarts=<value optimized out>,
oldNormsCache=0x62f870) at /usr/include/c++/4.4/bits/stl_tree.h:488
488               (this->_M_impl._M_header._M_parent);
(gdb) bt
#0  0x00007ffff673fd77 in std::_Rb_tree<wchar_t const*,
std::pair<wchar_t const* const, lucene::index::SegmentReader::Norm*>,
std::_Select1st<std::pair<wchar_t const* const,
lucene::index::SegmentReader::Norm*> >, lucene::util::Compare::WChar,
std::allocator<std::pair<wchar_t const* const,
lucene::index::SegmentReader::Norm*> > >::_M_begin
(this=0x7fffe01c0660, directory=<value optimized out>,
    infos=<value optimized out>, closeDirectory=<value optimized out>,
oldReaders=<value optimized out>, oldStarts=<value optimized out>,
oldNormsCache=0x62f870) at /usr/include/c++/4.4/bits/stl_tree.h:488
#1  std::_Rb_tree<wchar_t const*, std::pair<wchar_t const* const,
lucene::index::SegmentReader::Norm*>,
std::_Select1st<std::pair<wchar_t const* const,
lucene::index::SegmentReader::Norm*> >, lucene::util::Compare::WChar,
std::allocator<std::pair<wchar_t const* const,
lucene::index::SegmentReader::Norm*> > >::find (this=0x7fffe01c0660,
directory=<value optimized out>, infos=<value optimized out>,
    closeDirectory=<value optimized out>, oldReaders=<value optimized
out>, oldStarts=<value optimized out>, oldNormsCache=0x62f870) at
/usr/include/c++/4.4/bits/stl_tree.h:1434
#2  std::map<wchar_t const*, lucene::index::SegmentReader::Norm*,
lucene::util::Compare::WChar, std::allocator<std::pair<wchar_t const*
const, lucene::index::SegmentReader::Norm*> > >::find (
    this=0x7fffe01c0660, directory=<value optimized out>, infos=<value
optimized out>, closeDirectory=<value optimized out>,
oldReaders=<value optimized out>, oldStarts=<value optimized out>,
    oldNormsCache=0x62f870) at /usr/include/c++/4.4/bits/stl_map.h:674
#3  lucene::util::__CLMap<wchar_t const*,
lucene::index::SegmentReader::Norm*, std::map<wchar_t const*,
lucene::index::SegmentReader::Norm*, lucene::util::Compare::WChar,
std::allocator<std::pair<wchar_t const* const,
lucene::index::SegmentReader::Norm*> > >,
lucene::util::Deletor::Dummy, lucene::index::SegmentReader::Norm>::get
(this=0x7fffe01c0660, directory=<value optimized out>, infos=<value
optimized out>,
    closeDirectory=<value optimized out>, oldReaders=<value optimized
out>, oldStarts=<value optimized out>, oldNormsCache=0x62f870) at
/home/andrew/tmp/clucene-HEAD-772481c/src/core/CLucene/util/VoidMap.h:84
#4  MultiSegmentReader (this=0x7fffe01c0660, directory=<value
optimized out>, infos=<value optimized out>, closeDirectory=<value
optimized out>, oldReaders=<value optimized out>,
    oldStarts=<value optimized out>, oldNormsCache=0x62f870) at
/home/andrew/tmp/clucene-HEAD-772481c/src/core/CLucene/index/MultiSegmentReader.cpp:163
#5  0x00007ffff6740502 in lucene::index::MultiSegmentReader::doReopen
(this=<value optimized out>, infos=0x7fffe01c1940)
    at 
/home/andrew/tmp/clucene-HEAD-772481c/src/core/CLucene/index/MultiSegmentReader.cpp:207
#6  0x00007ffff67235e4 in
lucene::index::DirectoryIndexReader::FindSegmentsFile_Reopen::doBody
(this=0x7fffe66107f0, segmentFileName=0x7fffe01c0888 "segments_h")
    at 
/home/andrew/tmp/clucene-HEAD-772481c/src/core/CLucene/index/DirectoryIndexReader.cpp:185
#7  0x00007ffff672343f in
lucene::index::SegmentInfos::FindSegmentsFile<lucene::index::DirectoryIndexReader*>::tryDoBody
(this=0x62fdc0, segmentFileName=0x0, ret_err=...)
    at 
/home/andrew/tmp/clucene-HEAD-772481c/src/core/CLucene/index/_SegmentInfos.h:485
#8  0x00007ffff66ebc64 in
lucene::index::SegmentInfos::_FindSegmentsFile::doRun
(this=0x7fffe66107f0) at
/home/andrew/tmp/clucene-HEAD-772481c/src/core/CLucene/index/SegmentInfos.cpp:1046
#9  0x00007ffff6722b78 in
lucene::index::SegmentInfos::FindSegmentsFile<lucene::index::DirectoryIndexReader*>::run
(this=0x62f810)
    at 
/home/andrew/tmp/clucene-HEAD-772481c/src/core/CLucene/index/_SegmentInfos.h:508
#10 lucene::index::DirectoryIndexReader::reopen (this=0x62f810) at
/home/andrew/tmp/clucene-HEAD-772481c/src/core/CLucene/index/DirectoryIndexReader.cpp:214



The code is basically performing:

    IndexReader* reader = searcher->getReader();
    IndexReader* newReader = reader->reopen();
    if (newReader != reader) {
            reader->close();
            delete reader;

            searcher->close();
            delete searcher;

            searcher = new IndexSearcher(newReader);
    }

Any ideas?


Regards,
  Andrew Victor

------------------------------------------------------------------------------
Got Input?   Slashdot Needs You.
Take our quick survey online.  Come on, we don't ask for help often.
Plus, you'll get a chance to win $100 to spend on ThinkGeek.
http://p.sf.net/sfu/slashdot-survey
_______________________________________________
CLucene-developers mailing list
CLucene-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/clucene-developers

Reply via email to