Menu

#79 Crash in Strigi::FileInputStream::fillBuffer() while indexin

closed-fixed
nobody
analyzers (34)
5
2015-02-27
2010-02-21
Anonymous
No

Originally reported at https://launchpad.net/bugs/524728
Using strigi 0.7.2

The user reported a crash that happened while he was opening a .mht file in KMail, but the crash looks unrelated judging by the backtrace. Most likely the crash occurred while indexing.

.
Thread 2 (process 3260):
#0 0x00636422 in __kernel_vsyscall ()
No symbol table info available.
#1 0x0042eb66 in *__GI___poll (fds=0x4beff4, nfds=14, timeout=159)
at ../sysdeps/unix/sysv/linux/poll.c:87
resultvar = <value optimized out>
oldtype = 0
result = <value optimized out>
#2 0x0052fccb in g_poll () from /lib/libglib-2.0.so.0
No symbol table info available.
#3 0x00522acf in ?? () from /lib/libglib-2.0.so.0
No symbol table info available.
#4 0x00522e58 in g_main_context_iteration () from /lib/libglib-2.0.so.0
No symbol table info available.
#5 0x00c4d3b5 in QEventDispatcherGlib::processEvents (this=0x903c1a0, flags=
{i = 36}) at kernel/qeventdispatcher_glib.cpp:412
d = (QEventDispatcherGlibPrivate * const) 0x9051e90
canWait = true
result = <value optimized out>
#6 0x0115b3f5 in QGuiEventDispatcherGlib::processEvents (this=0x903c1a0,
flags={i = 36}) at kernel/qguieventdispatcher_glib.cpp:204
d = (QGuiEventDispatcherGlibPrivate * const) 0x904fd18
returnValue = 252
#7 0x00c1fe29 in QEventLoop::processEvents (this=0xbfdcc084, flags=DWARF-2 expression error: DW_OP_reg operations must be used either alone or in conjuction with DW_OP_piece.
)
at kernel/qeventloop.cpp:149
d = (QEventLoopPrivate * const) 0x91e99e0
#8 0x00c2027a in QEventLoop::exec (this=0xbfdcc084, flags={i = 0})
at kernel/qeventloop.cpp:201
d = (QEventLoopPrivate * const) 0x91e99e0
app = <value optimized out>
#9 0x00c2446f in QCoreApplication::exec () at kernel/qcoreapplication.cpp:981
threadData = (QThreadData *) 0x903c4a8
eventLoop = {<QObject> = {_vptr.QObject = 0xd35448,
static staticMetaObject = {d = {superdata = 0x0,
stringdata = 0xccde80 "QObject", data = 0xccdf20,
extradata = 0xd30260}}, d_ptr = {d = 0x91e99e0},
static staticQtMetaObject = {d = {superdata = 0x0,
stringdata = 0xcd69c0 "Qt", data = 0xcd9fc0, extradata = 0x0}}},
static staticMetaObject = {d = {superdata = 0x804e190,
stringdata = 0xcdfa00 "QEventLoop", data = 0xcdfa20, extradata = 0x0}}}
returnCode = -1
#10 0x0109c377 in QApplication::exec () at kernel/qapplication.cpp:3577
No locals.
#11 0x0804b099 in main (argc=2, argv=0xbfdcc394)
at ../../../nepomuk/servicestub/main.cpp:152
aboutData = {d = 0x903d0c8}
app = {<QCoreApplication> = {<QObject> = {_vptr.QObject = 0x19c1e88,
static staticMetaObject = {d = {superdata = 0x0,
stringdata = 0xccde80 "QObject", data = 0xccdf20,
extradata = 0xd30260}}, d_ptr = {d = 0x904fb60},
static staticQtMetaObject = {d = {superdata = 0x0,
stringdata = 0xcd69c0 "Qt", data = 0xcd9fc0, extradata = 0x0}}},
static staticMetaObject = {d = {superdata = 0x804e190,
stringdata = 0xcdfaa0 "QCoreApplication", data = 0xcdfb40,
extradata = 0x0}}, static self = 0xbfdcc208},
static staticMetaObject = {d = {superdata = 0xd35484,
stringdata = 0x17d3880 "QApplication", data = 0x17d3ac0,
extradata = 0x0}}}
serviceName = {static null = {<No data fields>},
static shared_null = {ref = {_q_value = 8961}, alloc = 0, size = 0,
data = 0xd3647a, clean = 0, simpletext = 0, righttoleft = 0,
asciiCache = 0, capacity = 0, reserved = 0, array = {0}},
static shared_empty = {ref = {_q_value = 49}, alloc = 0, size = 0,
data = 0xd3648e, clean = 0, simpletext = 0, righttoleft = 0,
asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0x90808c0,
static codecForCStrings = 0x0}
compData = {_vptr.KComponentData = 0x366e38, d = 0x9080fc0}
dependencies = {<QList<QString>> = {{p = {static shared_null = {
ref = {_q_value = 842}, alloc = 0, begin = 0, end = 0,
sharable = 1, array = {0x0}}, d = 0x804e224},
d = 0x804e224}}, <No data fields>}
options = {d = 0x903d6f8}
args = <value optimized out>
s = {_vptr.QTextStream = 0xd337e0, d_ptr = {d = 0x9080e30}}
services = {{p = {static shared_null = {ref = {_q_value = 842},
alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}},
d = 0x91ea888}, d = 0x91ea888}}
service = {d = 0x91cfec8}
.
Thread 1 (process 3307):
#0 0x003e3a9c in __mempcpy_ia32 () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.
#1 0x003d5e36 in _IO_file_xsgetn (fp=0x932e9c0, data=0x400, n=818111145)
at fileops.c:1423
want = 818111145
have = <value optimized out>
count = <value optimized out>
s = 0x400 <Address 0x400 out of bounds>
#2 0x003d7da8 in _IO_sgetn (fp=0x932e9c0, data=0x400, n=818111145)
at genops.c:500
No locals.
#3 0x003cba0e in _IO_fread (buf=0x400, size=1, count=818111145, fp=0x932e9c0)
at iofread.c:44
bytes_requested = 818111145
bytes_read = <value optimized out>
#4 0x04bc6ee5 in Strigi::FileInputStream::fillBuffer (this=0xb5fc2e2c,
start=0x400 <Address 0x400 out of bounds>, space=818111145)
at /usr/include/bits/stdio2.h:287
nwritten = -1
#5 0x04bc404b in Strigi::BufferedStream<char>::writeToBuffer (
this=0xb5fc2e2c, ntoread=818112169, maxread=818112169)
at /build/buildd/strigi-0.7.2/src/streams/bufferedstream.h:116
space = 818111145
__PRETTY_FUNCTION__ = "void Strigi::BufferedStream<T>::writeToBuffer(int32_t, int32_t) [with T = char]"
missing = 818111145
nwritten = <value optimized out>
#6 0x04bc4160 in Strigi::BufferedStream<char>::read (this=0xb5fc2e2c,
start=@0xb5fc2cf4, min=154331584, max=818112169)
at /build/buildd/strigi-0.7.2/src/streams/bufferedstream.h:137
nread = <value optimized out>
#7 0x028efd00 in Mp4ThroughAnalyzer::connectInputStream (this=0x9200e80,
in=0xb5fc2e2c) at ../../../../src/strigi/mp4/mp4throughanalyzer.cpp:644
nreq = <value optimized out>
boxlength = 818112145
type = {static npos = 4294967295,
_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x90a616c "mdat"}}
buf = 0xb54fe008 ""
nread = <value optimized out>
filepos = 24
#8 0x023297c3 in Strigi::StreamAnalyzerPrivate::analyze (this=0xb560a0b8,
idx=<value optimized out>, input=0xb5fc2e2c)
at /build/buildd/strigi-0.7.2/src/streamanalyzer/streamanalyzer.cpp:395
finished = <value optimized out>
header = 0xb54fe008 ""
headersize = 1024
es = 3053203080
#9 0x02305edd in Strigi::AnalysisResult::index (this=0xb5fc2e88,
file=0xb5fc2e2c)
at /build/buildd/strigi-0.7.2/src/streamanalyzer/analysisresult.cpp:233
No locals.
#10 0x0398a3e0 in Nepomuk::IndexScheduler::analyzeFile (this=0x91ff858,
file=@0x932f484, analyzer=0xb5fc32ac)
at ../../../../nepomuk/services/strigi/indexscheduler.cpp:380
stream = {<Strigi::BufferedStream<char>> = {<Strigi::StreamBase<char>> = {<Strigi::StreamBaseBase> = {_vptr.StreamBaseBase = 0x4be8a28,
m_size = 820500796, m_position = 0, m_error = {
static npos = 4294967295,
_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x91373c ""}},
m_status = Strigi::Ok}, <No data fields>}, buffer = {start = 0x0,
size = 818112169, readPos = 0x0, avail = 1024},
finishedWritingToBuffer = false}, file = 0x932e9c0, filepath = {
static npos = 4294967295,
_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
_M_p = 0x932eb34 "/home/sunita/movies/An Inconvenient Truth (2006) (DVD Rip)/An Inconvenient Truth (2006).mp4"}}, static defaultBufferSize = 1048576}
url = {<QUrl> = {d = 0x932e8c0}, d = 0x0}
filePath = {static null = {<No data fields>}, static shared_null = {
ref = {_q_value = 8961}, alloc = 0, size = 0, data = 0xd3647a, clean = 0,
simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0,
reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 49},
alloc = 0, size = 0, data = 0xd3648e, clean = 0, simpletext = 0,
righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {
0}}, d = 0x9342520, static codecForCStrings = 0x0}
dir = {static null = {<No data fields>}, static shared_null = {ref = {
_q_value = 8961}, alloc = 0, size = 0, data = 0xd3647a, clean = 0,
simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0,
reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 49},
alloc = 0, size = 0, data = 0xd3648e, clean = 0, simpletext = 0,
righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {
0}}, d = 0x933e3a8, static codecForCStrings = 0x0}
analysisresult = {p = 0x933f7d8}
#11 0x0398af2b in Nepomuk::IndexScheduler::updateDir (this=0x91ff858,
dir=@0x933d1e0, analyzer=0xb5fc32ac, flags={i = 3})
at ../../../../nepomuk/services/strigi/indexscheduler.cpp:347
_container_ = {c = {{p = {static shared_null = {ref = {
_q_value = 842}, alloc = 0, begin = 0, end = 0, sharable = 1,
array = {0x0}}, d = 0x932f470}, d = 0x932f470}}, brk = 0, i = {
i = 0x932f484}, e = {i = 0x932f48c}}
storedMTime = <value optimized out>
dirInfo = {d_ptr = {d = 0x908eef8}}
filesToIndex = {{p = {static shared_null = {ref = {_q_value = 842},
alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}},
d = 0x932f470}, d = 0x932f470}}
filesToDelete = {<std::_Vector_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {
_M_impl = {<std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<__gnu_cxx::new_allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0,
_M_end_of_storage = 0x0}}, <No data fields>}
recursive = true
filesInStore = {_M_t = {
_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long int> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long int> > >> = {<No data fields>}, <No data fields>},
_M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x0, _M_left = 0xb5fc2f2c,
_M_right = 0xb5fc2f2c}, _M_node_count = 0}}}
subFolders = {{p = {static shared_null = {ref = {_q_value = 842},
alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}},
d = 0x804e224}, d = 0x804e224}}
dirIt = {_vptr.QDirIterator = 0xd33430, d = {d = 0x933d170}}
#12 0x0398b157 in Nepomuk::IndexScheduler::updateDir (this=0x91ff858,
dir=@0x90a49b0, analyzer=0xb5fc32ac, flags={i = 3})
at ../../../../nepomuk/services/strigi/indexscheduler.cpp:354
_container_ = {c = {{p = {static shared_null = {ref = {
_q_value = 842}, alloc = 0, begin = 0, end = 0, sharable = 1,
array = {0x0}}, d = 0x933d1b8}, d = 0x933d1b8}}, brk = 0, i = {
i = 0x933d1e0}, e = {i = 0x933d1ec}}
storedMTime = <value optimized out>
dirInfo = {d_ptr = {d = 0x92cc698}}
filesToIndex = {{p = {static shared_null = {ref = {_q_value = 842},
alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}},
d = 0x933daf8}, d = 0x933daf8}}
filesToDelete = {<std::_Vector_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {
_M_impl = {<std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<__gnu_cxx::new_allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0,
_M_end_of_storage = 0x0}}, <No data fields>}
recursive = true
filesInStore = {_M_t = {
_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long int> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long int> > >> = {<No data fields>}, <No data fields>},
_M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x0, _M_left = 0xb5fc305c,
_M_right = 0xb5fc305c}, _M_node_count = 0}}}
subFolders = {{p = {static shared_null = {ref = {_q_value = 842},
alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}},
d = 0x933d1b8}, d = 0x933d1b8}}
dirIt = {_vptr.QDirIterator = 0xd33430, d = {d = 0x92ff558}}
#13 0x0398b157 in Nepomuk::IndexScheduler::updateDir (this=0x91ff858,
dir=@0xb5fc329c, analyzer=0xb5fc32ac, flags={i = 3})
at ../../../../nepomuk/services/strigi/indexscheduler.cpp:354
_container_ = {c = {{p = {static shared_null = {ref = {
_q_value = 842}, alloc = 0, begin = 0, end = 0, sharable = 1,
array = {0x0}}, d = 0x90a4998}, d = 0x90a4998}}, brk = 0, i = {
i = 0x90a49b0}, e = {i = 0x90a49dc}}
storedMTime = <value optimized out>
dirInfo = {d_ptr = {d = 0xb5636fa8}}
filesToIndex = {{p = {static shared_null = {ref = {_q_value = 842},
alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}},
d = 0x90a2a48}, d = 0x90a2a48}}
filesToDelete = {<std::_Vector_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {
_M_impl = {<std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<__gnu_cxx::new_allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0,
_M_end_of_storage = 0x0}}, <No data fields>}
recursive = true
filesInStore = {_M_t = {
_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long int> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, long int> > >> = {<No data fields>}, <No data fields>},
_M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x0, _M_left = 0xb5fc318c,
_M_right = 0xb5fc318c}, _M_node_count = 0}}}
subFolders = {{p = {static shared_null = {ref = {_q_value = 842},
alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}},
d = 0x90a4998}, d = 0x90a4998}}
dirIt = {_vptr.QDirIterator = 0xd33430, d = {d = 0x9226d08}}
#14 0x0398bd83 in Nepomuk::IndexScheduler::run (this=0x91ff858)
at ../../../../nepomuk/services/strigi/indexscheduler.cpp:251
dir = {first = {static null = {<No data fields>},
static shared_null = {ref = {_q_value = 8961}, alloc = 0, size = 0,
data = 0xd3647a, clean = 0, simpletext = 0, righttoleft = 0,
asciiCache = 0, capacity = 0, reserved = 0, array = {0}},
static shared_empty = {ref = {_q_value = 49}, alloc = 0, size = 0,
data = 0xd3648e, clean = 0, simpletext = 0, righttoleft = 0,
asciiCache = 0, capacity = 0, reserved = 0, array = {0}},
d = 0xb5609ff8, static codecForCStrings = 0x0}, second = {i = 3}}
analyzer = {p = 0xb560a0b8}
#15 0x00b1f2ee in QThreadPrivate::start (arg=0x91ff858)
at thread/qthread_unix.cpp:248
data = (QThreadData *) 0x91ffa18
#16 0x00e4a8de in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
No symbol table info available.
#17 0x0043c95e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130
No locals.

Discussion

  • Phreedom

    Phreedom - 2010-08-24

    A fix for BufferedStream is in trunk.

     
  • Phreedom

    Phreedom - 2010-08-24
    • status: open --> closed-fixed
     

Log in to post a comment.