|
@@ -480,6 +480,7 @@ static void flush_sample_queue(struct perf_session *s,
|
|
|
struct perf_sample sample;
|
|
|
u64 limit = os->next_flush;
|
|
|
u64 last_ts = os->last_sample ? os->last_sample->timestamp : 0ULL;
|
|
|
+ int ret;
|
|
|
|
|
|
if (!ops->ordered_samples || !limit)
|
|
|
return;
|
|
@@ -488,9 +489,12 @@ static void flush_sample_queue(struct perf_session *s,
|
|
|
if (iter->timestamp > limit)
|
|
|
break;
|
|
|
|
|
|
- perf_session__parse_sample(s, iter->event, &sample);
|
|
|
- perf_session_deliver_event(s, iter->event, &sample, ops,
|
|
|
- iter->file_offset);
|
|
|
+ ret = perf_session__parse_sample(s, iter->event, &sample);
|
|
|
+ if (ret)
|
|
|
+ pr_err("Can't parse sample, err = %d\n", ret);
|
|
|
+ else
|
|
|
+ perf_session_deliver_event(s, iter->event, &sample, ops,
|
|
|
+ iter->file_offset);
|
|
|
|
|
|
os->last_flush = iter->timestamp;
|
|
|
list_del(&iter->list);
|
|
@@ -806,7 +810,9 @@ static int perf_session__process_event(struct perf_session *session,
|
|
|
/*
|
|
|
* For all kernel events we get the sample data
|
|
|
*/
|
|
|
- perf_session__parse_sample(session, event, &sample);
|
|
|
+ ret = perf_session__parse_sample(session, event, &sample);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
|
|
|
/* Preprocess sample records - precheck callchains */
|
|
|
if (perf_session__preprocess_sample(session, event, &sample))
|