Fix: incorrect rwbs field type in block_bio_queue
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mon, 5 May 2014 14:32:44 +0000 (10:32 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mon, 5 May 2014 14:41:44 +0000 (10:41 -0400)
Within lttng-modules instrumentation starting from kernel 3.9.0, the
block_bio_queue instrumentation has incorrect rwbs field type, and does
not print "comm" as an array of text.

The result is that we are writing values to what we believe to be an
"unsigned int", which is actually described as an array of RWBS_LEN byte
(8 bytes). This discrepancy between type description and the actual
tp_assign() incrementing the write offset leads to what appears as
corruption of the following "comm" field in the trace viewer output: the
viewer will skip the first bytes of the "comm" field, erroneously
thinking they belong the the previous "rwbs" field.

Fixes #794

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
instrumentation/events/lttng-module/block.h

index 5ea557d9a9b722ff96e893d3be440e65dfda612c..e3e6b4cef1236237375d60713429af7235eef9e9 100644 (file)
@@ -558,8 +558,8 @@ TRACE_EVENT(block_bio_queue,
                __field( dev_t,         dev                     )
                __field( sector_t,      sector                  )
                __field( unsigned int,  nr_sector               )
-               __array( char,          rwbs,   RWBS_LEN        )
-               __array( char,          comm,   TASK_COMM_LEN   )
+               __field( unsigned int,  rwbs                    )
+               __array_text( char,             comm,   TASK_COMM_LEN   )
        ),
 
        TP_fast_assign(
This page took 0.027003 seconds and 4 git commands to generate.