Skip to contentSkip to conversation

UST "Tracepoint signature mismatch" with C99 bool.

DISCUSSION Alexandre Montplaisir 2 participants 2 messages Jun 5, 2012 1 message not in the archive

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

#1 lore raw
Quoted 1 line · John Steele Scott

I originally sent this on the 22nd of May, but it looks like it got stuck in moderation since I'm not subscribed. Reposting via gmane.comp.sysutils.lttng.devel . . .

It seems the list stopped sending daily reminders again...
I just flushed the moderation queue, there might be some 2-3 weeks old emails appearing. Please ignore them if they have already been replied to.

Cheers,

Signature · 3 lines
Alexandre Montplaisir
DORSAL lab,
École Polytechnique de Montréal
#2 lore raw
In reply to a message not in the archive
Quoted 5 lines · * John Steele Scott ([email protected]) wrote:

I originally sent this on the 22nd of May, but it looks like it got stuck in moderation since I'm not subscribed. Reposting via gmane.comp.sysutils.lttng.devel . . .

I'm just getting started wiring my up to lttng-ust, and unfortunately ran into an issue with the first probe I tried, which used a C99 bool argument.

Fixed by commit:

commit 9eb061825ad8ebdf8c22d812eff0232d97d72cd2

Author: Mathieu Desnoyers <[email protected]>
Date:   Tue Jun 5 13:08:54 2012 -0400

Fix: perform macro expansion on tracepoint signatures

The problem can be seen by patching the demo test from lttng-ust as follows:

--- a/tests/demo/ust_tests_demo3.h
+++ b/tests/demo/ust_tests_demo3.h
@@ -22,12 +22,14 @@ extern "C" {
* all copies or substantial portions of the Software. */

+#include <stdbool.h>
+
#include <lttng/tracepoint.h>

TRACEPOINT_EVENT(ust_tests_demo3, done,
- TP_ARGS(int, value),
+ TP_ARGS(bool, value),
TP_FIELDS(
- ctf_integer(int, value, value)
+ ctf_integer(bool, value, value)
)
)

Then when the demo is run with LTTNG_UST_DEBUG=1, a warning is shown, like:

liblttng_ust_tracepoint[3315/3315]: Warning: Tracepoint signature mismatch, enabling one or more tracepoints. Ensure that the tracepoint probes prototyp match the application. (in set_tracepoint() at tracepoint.c:310) liblttng_ust_tracepoint[3315/3315]: Warning: Tracepoint "ust_tests_demo3:don
signatures: call: "_Bool, value" vs probe: "bool, value". (in set_tracepoint at tracepoint.c:312)

It seems that TP_ARGS does not perform preprocessor expansion on the "bool" type spec, while something underneath TP_FIELDS does. And since (at least on this Centos 6.2 box) stdbool.h uses a #define rather than a typedef to make bool equivalent to _Bool, liblttng detects a mismatch.

And tested by commit f121009f677db0f9444e0683e24315eed9c5973d

(master branch commits).

I'll immediately merge these into stable-2.0.

Thanks!

Mathieu

Quoted 50 lines

The problem can be seen by patching the demo test from lttng-ust as follows:

tests/demo/ust_tests_demo3.h +4 -2
@@ -22,12 +22,14 @@ extern "C" {
  * all copies or substantial portions of the Software.
  */
 
+#include <stdbool.h>
+
 #include <lttng/tracepoint.h>
 
 TRACEPOINT_EVENT(ust_tests_demo3, done,
-	TP_ARGS(int, value),
+	TP_ARGS(bool, value),
 	TP_FIELDS(
-		ctf_integer(int, value, value)
+		ctf_integer(bool, value, value)
 	)
 )
 

Then when the demo is run with LTTNG_UST_DEBUG=1, a warning is shown, like:

liblttng_ust_tracepoint[3315/3315]: Warning: Tracepoint signature mismatch, not enabling one or more tracepoints. Ensure that the tracepoint probes prototypes match the application. (in set_tracepoint() at tracepoint.c:310) liblttng_ust_tracepoint[3315/3315]: Warning: Tracepoint "ust_tests_demo3:done" signatures: call: "_Bool, value" vs probe: "bool, value". (in set_tracepoint() at tracepoint.c:312)

It seems that TP_ARGS does not perform preprocessor expansion on the "bool" type spec, while something underneath TP_FIELDS does. And since (at least on this Centos 6.2 box) stdbool.h uses a #define rather than a typedef to make bool equivalent to _Bool, liblttng detects a mismatch.

So in my tracepoint specifications, I need to remember to use the less attractive _Bool instead of bool.

Perhaps it's worth having a special case for this where the trace/probe signatures are compared? On the other hand, I guess nobody complained until now?

cheers,

John

_______________________________________________
lttng-dev mailing list
[email protected]
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

Signature · 4 lines
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com