Skip to content

Commit

Permalink
Avoid remapping freed memory in trace sender fallback
Browse files Browse the repository at this point in the history
Signed-off-by: Bob Weinand <bob.weinand@datadoghq.com>
  • Loading branch information
bwoebi committed Feb 28, 2024
1 parent b436003 commit 7c3beba
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 5 deletions.
12 changes: 8 additions & 4 deletions ext/auto_flush.c
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,14 @@ ZEND_RESULT_CODE ddtrace_flush_tracer(bool force_on_startup, bool collect_cycles
do {
if (send_error.tag == DDOG_OPTION_VEC_U8_SOME_VEC_U8) {
// retry sending it directly through the socket as last resort. May block though with large traces.
ddog_map_shm(shm, &mapped_shm, &ptr, &size);
ddog_MaybeError retry_error = ddog_sidecar_send_trace_v04_bytes(&ddtrace_sidecar, ddtrace_sidecar_instance_id, (ddog_CharSlice){ .ptr = ptr, .len = size }, &tags);
shm = ddog_unmap_shm(mapped_shm);
ddog_drop_anon_shm_handle(shm);
ptr = emalloc(written);
// write the same thing again
ddtrace_serialize_simple_array_into_mapped_menory(&traces, ptr, written);

ddog_MaybeError retry_error = ddog_sidecar_send_trace_v04_bytes(&ddtrace_sidecar, ddtrace_sidecar_instance_id, (ddog_CharSlice){ .ptr = ptr, .len = written }, &tags);

efree(ptr);

if (ddtrace_ffi_try("Failed sending traces to the sidecar", retry_error)) {
LOG(DEBUG, "Failed sending traces via shm to sidecar: %.*s", (int) send_error.some.len, send_error.some.ptr);
} else {
Expand Down
2 changes: 1 addition & 1 deletion ext/serializer.c
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ size_t ddtrace_serialize_simple_array_into_mapped_menory(zval *trace, char *map,
mpack_writer_destroy(&writer);
return 0;
}
size_t written = mpack_writer_buffer_size(&writer);
size_t written = mpack_writer_buffer_used(&writer);
// finish writing
if (mpack_writer_destroy(&writer) != mpack_ok) {
return 0;
Expand Down

0 comments on commit 7c3beba

Please sign in to comment.