[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-bugs-dist
Subject: [Baloo] [Bug 352083] New: Infinite loop in ChertTable::find_in_block
From: Peter Cordes <peter () cordes ! ca>
Date: 2015-09-01 6:08:39
Message-ID: bug-352083-17878 () http ! bugs ! kde ! org/
[Download RAW message or body]
https://bugs.kde.org/show_bug.cgi?id=352083
Bug ID: 352083
Summary: Infinite loop in ChertTable::find_in_block
Product: Baloo
Version: 5.6.2
Platform: Other
OS: Linux
Status: UNCONFIRMED
Severity: normal
Priority: NOR
Component: General
Assignee: me@vhanda.in
Reporter: peter@cordes.ca
I'm seeing 100% CPU for baloo-file. I'm on Kubuntu 15.04 (KDE 5.2.2), with
baloo-kf5 5.6.2-0ubuntu4.
Unlike the problem in https://forum.kde.org/viewtopic.php?f=154&t=120468,
baloo-file-extract isn't running. baloo-file is the process with "baloo" in
the name that's running.
I attached gdb to baloo-file, and I'm seeing the two helper threads sitting in
poll and select (one each), but the main thread is always somewhere in a query:
[code](gdb) bt full
#0 0x00007f12aa09b930 in Key::operator<(Key) const
(this=this@entry=0x7fff0519cf70, key2=...) at
../backends/chert/chert_table.cc:2293
key1_len = 6
key2_len = -3
k_smaller = -3
diff = <optimized out>
#1 0x00007f12aa09ba7c in ChertTable::find_in_block(unsigned char const*, Key,
bool, int) (p=p@entry=0x89ea50 "", key=..., leaf=leaf@entry=false, c=<optimized
out>)
at ../backends/chert/chert_table.cc:486
k = 229
i = 229
j = 232
#2 0x00007f12aa09cdb3 in ChertTable::find(Cursor*) const (this=0x881d48,
C_=0xae1e10) at ../backends/chert/chert_table.cc:508
j = 2
p = 0x89ea50 ""
c = <optimized out>
#3 0x00007f12aa076a31 in ChertCursor::find_entry(std::string const&)
(this=0xb0bbd0, key="\000\330\000@\275\225") at
../backends/chert/chert_cursor.cc:214
found = <optimized out>
#4 0x00007f12aa0a37b3 in ChertValueManager::get_chunk_containing_did(unsigned
int, unsigned int, std::string&) const (this=this@entry=0x8822a8,
slot=slot@entry=0, did=48533, chunk="") at
../backends/chert/chert_values.cc:164
exact = <optimized out>
#5 0x00007f12aa0a70d3 in ChertValueManager::get_value(unsigned int, unsigned
int) const (this=0x8822a8, did=48533, slot=0) at
../backends/chert/chert_values.cc:476
i = <optimized out>
chunk = ""
first_did = <optimized out>
reader = {p = 0x7fff0519d270 "\220c\205", end = 0x7f12a78f689c
<__GI___libc_free+76> "H\203\304([]A\\A]\303f\017\037\204", did = 85578256,
value = ""}
#6 0x00007f12aa08722a in ChertDocument::do_get_value(unsigned int) const
(this=<optimized out>, slot=<optimized out>) at
../backends/chert/chert_document.cc:40
#7 0x00007f12a9ff7a62 in Xapian::Document::Internal::get_value(unsigned int)
const (this=0x8b88c0, slot=0) at ../api/omdocument.cc:279
#8 0x00007f12a9ff7a7c in Xapian::Document::get_value(unsigned int) const
(this=<optimized out>, slot=<optimized out>) at ../api/omdocument.cc:59
#9 0x00007f12aa3bf10a in Baloo::XapianDocument::value(int) const () at
/usr/lib/x86_64-linux-gnu/libKF5BalooXapian.so.1
#10 0x000000000041e4c4 in
Baloo::BasicIndexingQueue::shouldIndex(Baloo::FileMapping&, QString const&)
const ()
#11 0x000000000041f0a5 in
Baloo::BasicIndexingQueue::process(Baloo::FileMapping&,
QFlags<Baloo::UpdateDirFlag>) ()
#12 0x000000000041f65c in Baloo::BasicIndexingQueue::processNextIteration() ()
#13 0x00007f12a847473a in QObject::event(QEvent*) (this=0xa19470, e=<optimized
out>) at kernel/qobject.cpp:1245
mce = <optimized out>
sw = {receiver = 0xa19470, previousSender = 0x0, currentSender =
{sender = 0x0, signal = -1, ref = 1}, switched = true}
#14 0x00007f12a8d4cb2c in QApplicationPrivate::notify_helper(QObject*, QEvent*)
(this=0x834160, receiver=0xa19470, e=0x856600) at kernel/qapplication.cpp:3720
consumed = <optimized out>
#15 0x00007f12a8d52000 in QApplication::notify(QObject*, QEvent*)
(this=0x7fff0519dae0, receiver=0xa19470, e=0x856600) at
kernel/qapplication.cpp:3503
extra = 0xe5
#16 0x00007f12a8442c2b in QCoreApplication::notifyInternal(QObject*, QEvent*)
(this=0x7fff0519dae0, receiver=0xa19470, event=event@entry=0x856600)
---Type <return> to continue, or q <return> to quit---
at kernel/qcoreapplication.cpp:935
threadData = 0x830f20
loopLevelCounter = {threadData = 0x830f20}
result = false
cbdata = {0xa19470, 0x856600, 0x7fff0519d66f}
d = <optimized out>
#17 0x00007f12a8444c9b in QCoreApplicationPrivate::sendPostedEvents(QObject*,
int, QThreadData*) (event=0x856600, receiver=<optimized out>)
at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:228
e = 0x856600
pe = <optimized out>
r = <optimized out>
unlocker = {m = <synthetic pointer>}
event_deleter = {d = 0x856600}
locker = {val = 8589128}
startOffset = 0
i = @0x830f3c: 1
cleanup = {receiver = 0x0, event_type = 0, data = 0x830f20,
exceptionCaught = true}
#18 0x00007f12a8444c9b in QCoreApplicationPrivate::sendPostedEvents(QObject*,
int, QThreadData*) (receiver=receiver@entry=0x0, event_type=event_type@entry=0,
data=0x830f20) at kernel/qcoreapplication.cpp:1552
e = 0x856600
pe = <optimized out>
r = <optimized out>
unlocker = {m = <synthetic pointer>}
event_deleter = {d = 0x856600}
locker = {val = 8589128}
startOffset = 0
i = @0x830f3c: 1
cleanup = {receiver = 0x0, event_type = 0, data = 0x830f20,
exceptionCaught = true}
#19 0x00007f12a8445298 in QCoreApplication::sendPostedEvents(QObject*, int)
(receiver=receiver@entry=0x0, event_type=event_type@entry=0)
at kernel/qcoreapplication.cpp:1410
data = <optimized out>
#20 0x00007f12a849b843 in postEventSourceDispatch(GSource*, GSourceFunc,
gpointer) (s=0x85e470) at kernel/qeventdispatcher_glib.cpp:271
source = 0x85e470
#21 0x00007f12a2347c3d in g_main_context_dispatch (context=0x7f128c0016f0) at
/build/buildd/glib2.0-2.44.1/./glib/gmain.c:3122
dispatch = 0x7f12a849b830 <postEventSourceDispatch(GSource*,
GSourceFunc, gpointer)>
prev_source = 0x0
was_in_call = 0
user_data = 0x0
callback = 0x0
---Type <return> to continue, or q <return> to quit---
cb_funcs = <optimized out>
cb_data = <optimized out>
need_destroy = <optimized out>
source = 0x85e470
current = 0x82eec0
i = 0
#22 0x00007f12a2347c3d in g_main_context_dispatch
(context=context@entry=0x7f128c0016f0) at
/build/buildd/glib2.0-2.44.1/./glib/gmain.c:3737
#23 0x00007f12a2347f20 in g_main_context_iterate
(context=context@entry=0x7f128c0016f0, block=block@entry=1,
dispatch=dispatch@entry=1, self=<optimized out>)
at /build/buildd/glib2.0-2.44.1/./glib/gmain.c:3808
max_priority = 0
timeout = 0
some_ready = 1
nfds = <optimized out>
allocated_nfds = 13
fds = 0x84a6c0
#24 0x00007f12a2347fcc in g_main_context_iteration (context=0x7f128c0016f0,
may_block=1) at /build/buildd/glib2.0-2.44.1/./glib/gmain.c:3869
retval = <optimized out>
#25 0x00007f12a849bc57 in
QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
(this=0x861ef0, flags=...)
at kernel/qeventdispatcher_glib.cpp:418
d = 0x861f10
canWait = true
savedFlags = {i = 0}
result = <optimized out>
#26 0x00007f12a84403e2 in
QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)
(this=this@entry=0x7fff0519d950, flags=..., flags@entry=...)
at kernel/qeventloop.cpp:204
locker = {val = 8593136}
ref = {d = 0xa2fc00, locker = @0x7fff0519d8d0, exceptionCaught = true}
d = 0xa2fc00
#27 0x00007f12a844802c in QCoreApplication::exec() () at
kernel/qcoreapplication.cpp:1188
threadData = 0x830f20
eventLoop =
{<QObject> = {_vptr.QObject = 0x7f12a869d110 <vtable for
QEventLoop+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata =
0x7f12a85c4a00 <qt_meta_stringdata_QObject>, data = 0x7f12a85c48c0
<qt_meta_data_QObject>, static_metacall = 0x7f12a847cd00
<QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>,
relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0xa2fc00}, static
staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x7f12a860c500
<qt_meta_stringdata_Qt>, data = 0x7f12a8609c80 <qt_meta_data_Qt>,
static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static
staticMetaObject = {d = {superdata = 0x7f12a8695940
<QObject::staticMetaObject>, stringdata = 0x7f12a86204c0
<qt_meta_stringdata_QEventLoop>, data = 0x7f12a8620440
<qt_meta_data_QEventLoop>, static_metacall = 0x7f12a84f2e50
<QEventLoop::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>,
relatedMetaObjects = 0x0, extradata = 0x0}}}
returnCode = <optimized out>
#28 0x0000000000417477 in main ()
[/code]
It's ChertTable::find_in_block that's stuck in an infinite loop:
[code]
(gdb) fin
Run till exit from #0 0x00007f12aa09ba7c in ChertTable::find_in_block
(p=p@entry=0x89ea50 "", key=..., leaf=leaf@entry=false, c=<optimized out>)
at ../backends/chert/chert_table.cc:486
>no prompt after many seconds of waiting.<
[/code]
Reproducible: Didn't try
--
You are receiving this mail because:
You are watching all bug changes.
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic