Merge "[tp]: Fix runnable state after process fork" into main
diff --git a/src/trace_processor/importers/ftrace/ftrace_parser.cc b/src/trace_processor/importers/ftrace/ftrace_parser.cc
index f0b3dca..9773b44 100644
--- a/src/trace_processor/importers/ftrace/ftrace_parser.cc
+++ b/src/trace_processor/importers/ftrace/ftrace_parser.cc
@@ -1741,6 +1741,12 @@
// This is a plain-old fork() or equivalent.
proc_tracker->StartNewProcess(timestamp, source_tid, new_tid, new_comm,
ThreadNamePriority::kFtrace);
+
+ auto source_utid = proc_tracker->GetOrCreateThread(source_tid);
+ auto new_utid = proc_tracker->GetOrCreateThread(new_tid);
+
+ ThreadStateTracker::GetOrCreate(context_)->PushNewTaskEvent(
+ timestamp, new_utid, source_utid);
return;
}
diff --git a/test/trace_processor/diff_tests/parsing/tests.py b/test/trace_processor/diff_tests/parsing/tests.py
index 6426060..705b2bb 100644
--- a/test/trace_processor/diff_tests/parsing/tests.py
+++ b/test/trace_processor/diff_tests/parsing/tests.py
@@ -1171,6 +1171,7 @@
out=Csv("""
"waker_utid"
1
+ 1
"""))
# Parsing of mdss/tracing_mark_write events
diff --git a/test/trace_processor/diff_tests/startup/android_startup_process_track.out b/test/trace_processor/diff_tests/startup/android_startup_process_track.out
index 561fb0d..bd6ccea 100644
--- a/test/trace_processor/diff_tests/startup/android_startup_process_track.out
+++ b/test/trace_processor/diff_tests/startup/android_startup_process_track.out
@@ -8,7 +8,7 @@
dur_ns: 7
main_thread_by_task_state {
running_dur_ns: 0
- runnable_dur_ns: 0
+ runnable_dur_ns: 4
uninterruptible_sleep_dur_ns: 0
interruptible_sleep_dur_ns: 0
uninterruptible_io_sleep_dur_ns: 0
@@ -66,6 +66,7 @@
dex2oat_dur_ns: 0
}
startup_type: "cold"
+ slow_start_reason: "Main Thread - Time spent in Runnable state"
}
startup {
startup_id: 2
@@ -76,7 +77,7 @@
dur_ns: 7
main_thread_by_task_state {
running_dur_ns: 0
- runnable_dur_ns: 0
+ runnable_dur_ns: 4
uninterruptible_sleep_dur_ns: 0
interruptible_sleep_dur_ns: 0
uninterruptible_io_sleep_dur_ns: 0
@@ -134,5 +135,6 @@
dex2oat_dur_ns: 0
}
startup_type: "cold"
+ slow_start_reason: "Main Thread - Time spent in Runnable state"
}
}
diff --git a/test/trace_processor/diff_tests/tables/tests_sched.py b/test/trace_processor/diff_tests/tables/tests_sched.py
index c468790..92bbe64 100644
--- a/test/trace_processor/diff_tests/tables/tests_sched.py
+++ b/test/trace_processor/diff_tests/tables/tests_sched.py
@@ -89,16 +89,16 @@
""",
out=Csv("""
"id","type","ts","thread_state_id","irq_context","utid","waker_utid"
- 0,"spurious_sched_wakeup",1735850782904,422,0,230,1465
- 1,"spurious_sched_wakeup",1736413914899,884,0,230,1467
- 2,"spurious_sched_wakeup",1736977755745,1295,0,230,1469
- 3,"spurious_sched_wakeup",1737046900004,1468,0,1472,1473
- 4,"spurious_sched_wakeup",1737047159060,1497,0,1474,1472
- 5,"spurious_sched_wakeup",1737081636170,2987,0,1214,1319
- 6,"spurious_sched_wakeup",1737108696536,5005,0,501,557
- 7,"spurious_sched_wakeup",1737153309978,6426,0,11,506
- 8,"spurious_sched_wakeup",1737165240546,6910,0,565,499
- 9,"spurious_sched_wakeup",1737211563344,8994,0,178,1195
+ 0,"spurious_sched_wakeup",1735850782904,423,0,230,1465
+ 1,"spurious_sched_wakeup",1736413914899,886,0,230,1467
+ 2,"spurious_sched_wakeup",1736977755745,1298,0,230,1469
+ 3,"spurious_sched_wakeup",1737046900004,1473,0,1472,1473
+ 4,"spurious_sched_wakeup",1737047159060,1502,0,1474,1472
+ 5,"spurious_sched_wakeup",1737081636170,2992,0,1214,1319
+ 6,"spurious_sched_wakeup",1737108696536,5010,0,501,557
+ 7,"spurious_sched_wakeup",1737153309978,6431,0,11,506
+ 8,"spurious_sched_wakeup",1737165240546,6915,0,565,499
+ 9,"spurious_sched_wakeup",1737211563344,8999,0,178,1195
"""))
def test_raw_common_flags(self):
@@ -175,7 +175,7 @@
blocked_state,
blocked_function
FROM experimental_thread_executing_span_graph
- WHERE id = 375
+ WHERE id = 376
""",
out=Csv("""
"ts","dur","tid","pid","thread_name","process_name","waker_thread_name","waker_process_name","blocked_dur","blocked_state","blocked_function"
@@ -243,16 +243,16 @@
""",
out=Csv("""
"ts","dur","tid","pid","thread_name","process_name","waker_thread_name","waker_process_name","blocked_dur","blocked_state","blocked_function","depth","is_root"
- 1740321632480,20897,404,398,"binder:398_2","/apex/com.android.os.statsd/bin/statsd","statsd.writer","/apex/com.android.os.statsd/bin/statsd",64173354,"S","[NULL]",424,0
- 1740470009095,113509,3494,3487,"HeapTaskDaemon","com.android.providers.media.module","AsyncTask #1","com.android.providers.media.module",1204928,"S","[NULL]",424,0
- 1740470126280,60885652,3494,3487,"HeapTaskDaemon","com.android.providers.media.module","AsyncTask #1","com.android.providers.media.module",3676,"S","[NULL]",424,0
- 1740321596028,46679,633,398,"statsd.writer","/apex/com.android.os.statsd/bin/statsd","mediametrics","media.metrics",64143546,"S","[NULL]",423,0
- 1740468702535,1449612,3548,3487,"AsyncTask #1","com.android.providers.media.module","HeapTaskDaemon","com.android.providers.media.module",1003391,"S","[NULL]",423,0
- 1740321315576,62532,2161,553,"binder:553_7","/system/bin/mediaserver","binder:551_4","media.extractor",63953635,"S","[NULL]",422,0
- 1740321322095,60476,553,553,"mediaserver","/system/bin/mediaserver","binder:551_4","media.extractor","[NULL]","[NULL]","[NULL]",422,0
- 1740321326214,144263,2135,553,"binder:553_4","/system/bin/mediaserver","binder:551_4","media.extractor","[NULL]","[NULL]","[NULL]",422,0
- 1740321344727,346525,552,552,"mediametrics","media.metrics","binder:551_4","media.extractor",63860347,"S","[NULL]",422,0
- 1740419776108,13020460,3494,3487,"HeapTaskDaemon","com.android.providers.media.module","AsyncTask #1","com.android.providers.media.module",597159,"S","[NULL]",422,0
+ 1740321632480,20897,404,398,"binder:398_2","/apex/com.android.os.statsd/bin/statsd","statsd.writer","/apex/com.android.os.statsd/bin/statsd",64173354,"S","[NULL]",445,0
+ 1740470009095,113509,3494,3487,"HeapTaskDaemon","com.android.providers.media.module","AsyncTask #1","com.android.providers.media.module",1204928,"S","[NULL]",445,0
+ 1740470126280,60885652,3494,3487,"HeapTaskDaemon","com.android.providers.media.module","AsyncTask #1","com.android.providers.media.module",3676,"S","[NULL]",445,0
+ 1740321596028,46679,633,398,"statsd.writer","/apex/com.android.os.statsd/bin/statsd","mediametrics","media.metrics",64143546,"S","[NULL]",444,0
+ 1740468702535,1449612,3548,3487,"AsyncTask #1","com.android.providers.media.module","HeapTaskDaemon","com.android.providers.media.module",1003391,"S","[NULL]",444,0
+ 1740321315576,62532,2161,553,"binder:553_7","/system/bin/mediaserver","binder:551_4","media.extractor",63953635,"S","[NULL]",443,0
+ 1740321322095,60476,553,553,"mediaserver","/system/bin/mediaserver","binder:551_4","media.extractor","[NULL]","[NULL]","[NULL]",443,0
+ 1740321326214,144263,2135,553,"binder:553_4","/system/bin/mediaserver","binder:551_4","media.extractor","[NULL]","[NULL]","[NULL]",443,0
+ 1740321344727,346525,552,552,"mediametrics","media.metrics","binder:551_4","media.extractor",63860347,"S","[NULL]",443,0
+ 1740419776108,13020460,3494,3487,"HeapTaskDaemon","com.android.providers.media.module","AsyncTask #1","com.android.providers.media.module",597159,"S","[NULL]",443,0
"""))
def test_thread_executing_span_ancestors_null(self):
@@ -308,15 +308,14 @@
depth,
is_root,
COUNT(thread_name) AS count
- FROM EXPERIMENTAL_THREAD_EXECUTING_SPAN_DESCENDANTS(22886)
+ FROM EXPERIMENTAL_THREAD_EXECUTING_SPAN_DESCENDANTS(15923)
GROUP BY 1,2,3,4
ORDER BY depth
""",
out=Csv("""
"thread_name","waker_thread_name","depth","is_root","count"
- "SensorService","android.hardwar",0,0,1
- "android.ui","SensorService",1,0,1
- "system_server","SensorService",1,0,1
+ "rs.media.module","binder:642_1",0,0,1
+ "binder:642_A","rs.media.module",1,0,1
"""))
def test_thread_executing_span_ancestors_id(self):
@@ -329,12 +328,12 @@
waker_thread_name,
height,
is_leaf
- FROM EXPERIMENTAL_THREAD_EXECUTING_SPAN_ANCESTORS(15601) ORDER BY height
+ FROM EXPERIMENTAL_THREAD_EXECUTING_SPAN_ANCESTORS(15923) ORDER BY height
""",
out=Csv("""
"thread_name","waker_thread_name","height","is_leaf"
- "rcu_exp_gp_kthr","binder:243_4",0,1
- "binder:243_4","init",1,0
+ "rs.media.module","binder:642_1",0,0
+ "binder:642_1","rs.media.module",1,0
"""))
def test_thread_executing_span_from_non_sleep_thread_state(self):
@@ -342,11 +341,11 @@
trace=DataPath('sched_wakeup_trace.atr'),
query="""
SELECT IMPORT('experimental.thread_executing_span');
- SELECT EXPERIMENTAL_THREAD_EXECUTING_SPAN_ID_FROM_THREAD_STATE_ID(16170) AS thread_executing_span_id
+ SELECT EXPERIMENTAL_THREAD_EXECUTING_SPAN_ID_FROM_THREAD_STATE_ID(12394) AS thread_executing_span_id
""",
out=Csv("""
"thread_executing_span_id"
- 16022
+ 12254
"""))
def test_thread_executing_span_from_sleep_thread_state(self):
@@ -354,7 +353,7 @@
trace=DataPath('sched_wakeup_trace.atr'),
query="""
SELECT IMPORT('experimental.thread_executing_span');
- SELECT EXPERIMENTAL_THREAD_EXECUTING_SPAN_ID_FROM_THREAD_STATE_ID(15957) AS thread_executing_span_id
+ SELECT EXPERIMENTAL_THREAD_EXECUTING_SPAN_ID_FROM_THREAD_STATE_ID(13120) AS thread_executing_span_id
""",
out=Csv("""
"thread_executing_span_id"