Skip to content

Commit 27ae4af

Browse files
committed
Fix rust span pointer invalidation on inferred span serialization
1 parent 6b5659e commit 27ae4af

1 file changed

Lines changed: 3 additions & 1 deletion

File tree

ext/serializer.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1548,7 +1548,8 @@ ddog_SpanBytes *ddtrace_serialize_span_to_rust_span(ddtrace_span_data *span, ddo
15481548
}
15491549
}
15501550

1551-
bool is_first_span = ddog_get_trace_size(trace) == 0;
1551+
uintptr_t rust_span_index = ddog_get_trace_size(trace);
1552+
bool is_first_span = rust_span_index == 0;
15521553
ddog_SpanBytes *rust_span = ddog_trace_new_span(trace);
15531554

15541555
ddog_set_span_trace_id(rust_span, span->root->trace_id.low);
@@ -1834,6 +1835,7 @@ ddog_SpanBytes *ddtrace_serialize_span_to_rust_span(ddtrace_span_data *span, ddo
18341835

18351836
if (inferred_span) {
18361837
ddog_SpanBytes *serialized_inferred_span = ddtrace_serialize_span_to_rust_span(inferred_span, trace);
1838+
rust_span = ddog_get_span(trace, rust_span_index);
18371839

18381840
transfer_metrics_data(rust_span, serialized_inferred_span, "_dd.agent_psr", true);
18391841
transfer_metrics_data(rust_span, serialized_inferred_span, "_dd.rule_psr", true);

0 commit comments

Comments
 (0)