X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=lttng-context-vtid.c;h=264bbb3011da08760bbb85697de1bf64f1f6f048;hb=76730a64abf3909600801eb2f3ca1aa524a724cb;hp=f81fff636acd35d914a2756c567e68d03d562c24;hpb=09fec6b43d11b3e0ece36f9e9e44b9627c1b565d;p=lttng-modules.git diff --git a/lttng-context-vtid.c b/lttng-context-vtid.c index f81fff63..264bbb30 100644 --- a/lttng-context-vtid.c +++ b/lttng-context-vtid.c @@ -32,7 +32,13 @@ void vtid_record(struct lttng_ctx_field *field, { pid_t vtid; - vtid = task_pid_vnr(current); + /* + * nsproxy can be NULL when scheduled out of exit. + */ + if (!current->nsproxy) + vtid = 0; + else + vtid = task_pid_vnr(current); lib_ring_buffer_align_ctx(ctx, ltt_alignof(vtid)); chan->ops->event_write(ctx, &vtid, sizeof(vtid)); } @@ -40,11 +46,14 @@ void vtid_record(struct lttng_ctx_field *field, int lttng_add_vtid_to_ctx(struct lttng_ctx **ctx) { struct lttng_ctx_field *field; - int ret; field = lttng_append_context(ctx); if (!field) return -ENOMEM; + if (lttng_find_context(*ctx, "vtid")) { + lttng_remove_context_field(ctx, field); + return -EEXIST; + } field->event_field.name = "vtid"; field->event_field.type.atype = atype_integer; field->event_field.type.u.basic.integer.size = sizeof(pid_t) * CHAR_BIT;