mirror of
https://github.com/apache/impala.git
synced 2025-12-19 09:58:28 -05:00
IMPALA-7542: fix find-fragment-instances to find all "root threads"
find-fragment-instances didn't show all the threads that worked on some fragment instance. It missed the top-level "root threads" that started working on the fragment instances. I modified the get_fragment_instances() function to check the local ThreadDebugInfo object of the threads instead of checking the parent thread's ThreadDebugInfo. I tested it locally on a core file. Change-Id: I35ae1a6b384b002b343689469f02ceabd84af1b6 Reviewed-on: http://gerrit.cloudera.org:8080/11396 Reviewed-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com> Tested-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com>
This commit is contained in:
committed by
Impala Public Jenkins
parent
2a274a1597
commit
d19f757641
@@ -43,13 +43,12 @@ def get_fragment_instances():
|
||||
if 'impala::Thread::SuperviseThread' in gdb.Frame.name(f):
|
||||
gdb.Frame.select(f)
|
||||
block = gdb.Frame.block(f)
|
||||
gdb.lookup_symbol('parent_thread_info', block)
|
||||
p = f.read_var('parent_thread_info')
|
||||
# No valid parent_thread_info pointer
|
||||
if not p:
|
||||
gdb.lookup_symbol('thread_debug_info', block)
|
||||
tdi = f.read_var('thread_debug_info')
|
||||
# No valid thread_debug_info
|
||||
if not tdi:
|
||||
break
|
||||
v = p.dereference()
|
||||
fi = str(v['instance_id_'])
|
||||
fi = str(tdi['instance_id_'])
|
||||
if ':' in fi:
|
||||
fragment_instances[fi.strip('"')].append(thread.num)
|
||||
break
|
||||
|
||||
Reference in New Issue
Block a user