aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Kiszka <jan.kiszka@web.de>2010-10-14 15:23:45 -0400
committerSteven Rostedt <rostedt@goodmis.org>2010-12-02 09:19:42 -0500
commit8f4e2562ff415a6d30fe333b3a1548a3081ef41b (patch)
tree477e83ea6691f5589e524eceb5c705e7e61095a5
parent5fe98c8ffae2ccb1606ec05f281327259d1efc48 (diff)
trace-view: Handle unknown events more gracefully
Kernel 2.6.35.7 generates invalid trace files due to /sys/kernel/debug/tracing/events/scsi/scsi_dispatch_cmd_timeout/format returning "FORMAT TOO BIG" (seems to be fixed in 2.6.36). This makes pevent_data_event_from_type return NULL, and dereferencing of event crashes the viewer. Catch and report the error properly. Signed-off-by: Jan Kiszka <jan.kiszka@web.de> LKML-Reference: <4CB758C1.8090906@web.de> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r--trace-view-store.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/trace-view-store.c b/trace-view-store.c
index 0834df7..34f8155 100644
--- a/trace-view-store.c
+++ b/trace-view-store.c
@@ -507,12 +507,17 @@ trace_view_store_get_value (GtkTreeModel *tree_model,
507 case TRACE_VIEW_STORE_COL_INFO: 507 case TRACE_VIEW_STORE_COL_INFO:
508 val = pevent_data_type(pevent, data); 508 val = pevent_data_type(pevent, data);
509 event = pevent_data_event_from_type(pevent, val); 509 event = pevent_data_event_from_type(pevent, val);
510 if (!event) {
511 if (column == TRACE_VIEW_STORE_COL_EVENT)
512 g_value_set_string(value, "[UNKNOWN EVENT]");
513 break;
514 }
515
510 if (column == TRACE_VIEW_STORE_COL_EVENT) { 516 if (column == TRACE_VIEW_STORE_COL_EVENT) {
511 g_value_set_string(value, event->name); 517 g_value_set_string(value, event->name);
512 break; 518 break;
513 } 519 }
514 520
515
516 trace_seq_init(&s); 521 trace_seq_init(&s);
517 pevent_event_info(&s, event, data); 522 pevent_event_info(&s, event, data);
518 g_value_set_string(value, s.buffer); 523 g_value_set_string(value, s.buffer);