diff options
author | Jan Kiszka <jan.kiszka@web.de> | 2010-10-14 15:23:45 -0400 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2010-12-02 09:19:42 -0500 |
commit | 8f4e2562ff415a6d30fe333b3a1548a3081ef41b (patch) | |
tree | 477e83ea6691f5589e524eceb5c705e7e61095a5 | |
parent | 5fe98c8ffae2ccb1606ec05f281327259d1efc48 (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.c | 7 |
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); |