Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 5 additions & 7 deletions src/native/eventpipe/ep-session.c
Original file line number Diff line number Diff line change
Expand Up @@ -766,16 +766,15 @@ session_tracepoint_write_event (

// Setup iovec array
const int max_non_parameter_iov = 9;
const int max_static_io_capacity = 30; // Should account for most events that use EventData structs
struct iovec static_io[max_static_io_capacity];
struct iovec static_io[EP_USER_EVENTS_IOVEC_STACK_CAPACITY];
struct iovec *io = static_io;
ssize_t io_bytes_to_write = 0;

uint8_t *ep_event_data = ep_event_payload_get_data (ep_event_payload);
uint32_t ep_event_data_len = ep_event_payload_get_event_data_len (ep_event_payload);
int param_iov = ep_event_data != NULL ? 1 : ep_event_data_len;
int io_elem_capacity = param_iov + max_non_parameter_iov;
if (io_elem_capacity > max_static_io_capacity) {
if (io_elem_capacity > EP_USER_EVENTS_IOVEC_STACK_CAPACITY) {
io = (struct iovec *)malloc (sizeof (struct iovec) * io_elem_capacity);
if (io == NULL)
return false;
Expand Down Expand Up @@ -854,10 +853,9 @@ session_tracepoint_write_event (
}

// Extension Activity IDs
const int extension_activity_ids_max_len = 2 * (1 + EP_ACTIVITY_ID_SIZE);
uint8_t extension_activity_ids[extension_activity_ids_max_len];
uint16_t extension_activity_ids_len = construct_extension_activity_ids_buffer (extension_activity_ids, extension_activity_ids_max_len, activity_id, related_activity_id);
EP_ASSERT (extension_activity_ids_len <= extension_activity_ids_max_len);
uint8_t extension_activity_ids[EP_USER_EVENTS_ACTIVITY_ID_EXTENSION_MAX_SIZE];
uint16_t extension_activity_ids_len = construct_extension_activity_ids_buffer (extension_activity_ids, EP_USER_EVENTS_ACTIVITY_ID_EXTENSION_MAX_SIZE, activity_id, related_activity_id);
EP_ASSERT (extension_activity_ids_len <= EP_USER_EVENTS_ACTIVITY_ID_EXTENSION_MAX_SIZE);
io[io_index].iov_base = extension_activity_ids;
io[io_index].iov_len = extension_activity_ids_len;
io_index++;
Expand Down
6 changes: 6 additions & 0 deletions src/native/eventpipe/ep-types-forward.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,12 @@ typedef struct _StreamWriterVtable StreamWriterVtable;

#define EP_MAX_STACK_DEPTH 100

#define EP_USER_EVENTS_IOVEC_STACK_CAPACITY 30

// Maximum number of bytes needed to encode (ActivityId + RelatedActivityId),
// each as (1 marker byte + 16 byte GUID).
#define EP_USER_EVENTS_ACTIVITY_ID_EXTENSION_MAX_SIZE (2 * (1 + EP_ACTIVITY_ID_SIZE))

/*
* EventPipe Enums.
*/
Expand Down
Loading