From: Jonathan Rajotte Date: Thu, 16 Apr 2020 20:31:16 +0000 (-0400) Subject: Use bytecode seqnum to force the evaluation ordering of capture bytecode X-Git-Tag: v2.13.0-rc1~239 X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=commitdiff_plain;h=11f6ce94d8fb73f017888681aaba5d7df55fc735;ds=sidebyside Use bytecode seqnum to force the evaluation ordering of capture bytecode This ensure that the resulting payload is ordered as expected. Signed-off-by: Jonathan Rajotte Signed-off-by: Jérémie Galarneau Change-Id: I74c87cdc7098030e05b060f287561b4177739cc1 Depends-on: lttng-ust: I8423c510bf6af2f9bf85256e8d6f931d36f7054b --- diff --git a/src/bin/lttng-sessiond/ust-app.c b/src/bin/lttng-sessiond/ust-app.c index cc027be99..43864bd0f 100644 --- a/src/bin/lttng-sessiond/ust-app.c +++ b/src/bin/lttng-sessiond/ust-app.c @@ -1579,9 +1579,12 @@ error: /* * Set a capture bytecode for the passed object. + * The sequence number enforces the ordering at runtime and on reception of + * the captured payloads. */ static int set_ust_capture(struct ust_app *app, const struct lttng_bytecode *bytecode, + unsigned int capture_seqnum, struct lttng_ust_object_data *ust_object) { int ret; @@ -1595,6 +1598,11 @@ static int set_ust_capture(struct ust_app *app, goto error; } + /* + * Set the sequence number to ensure the capture of fields is ordered. + */ + ust_bytecode->seqnum = capture_seqnum; + pthread_mutex_lock(&app->sock_lock); ret = ustctl_set_capture(app->sock, ust_bytecode, ust_object); @@ -2159,7 +2167,7 @@ static int create_ust_event_notifier(struct ust_app *app, lttng_condition_event_rule_get_capture_bytecode_at_index( condition, i); - ret = set_ust_capture(app, capture_bytecode, + ret = set_ust_capture(app, capture_bytecode, i, ua_event_notifier_rule->obj); if (ret < 0) { goto error;