You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/crashtracker-unix-socket-communication.md
+18-89Lines changed: 18 additions & 89 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,25 +1,14 @@
1
1
# Crash Tracker Unix Socket Communication Protocol
2
2
3
-
**Date**: September 23, 2025
3
+
**Date**: September 24, 2025
4
4
5
5
## Overview
6
6
7
7
This document describes the Unix domain socket communication protocol used between the crash tracker's collector and receiver processes. The crash tracker uses a two-process architecture where the collector (a fork of the crashing process) communicates crash data to the receiver (a fork+execve process) via an anonymous Unix domain socket pair.
8
8
9
9
## Socket Creation and Setup
10
10
11
-
The communication channel is established using `socketpair()` to create an anonymous Unix domain socket pair:
The communication channel is established using `socketpair()` to create an anonymous Unix domain socket pair with Unix address family and stream socket type.
23
12
24
13
### File Descriptor Management
25
14
@@ -31,7 +20,7 @@ let (uds_parent, uds_child) = socket::socketpair(
31
20
32
21
### Data Format
33
22
34
-
The crash data is transmitted as a structured text stream with distinct sections delimited by markers defined in `datadog-crashtracker/src/shared/constants.rs`.
23
+
The crash data is transmitted as a structured text stream with distinct sections delimited by predefined markers.
35
24
36
25
### Message Structure
37
26
@@ -85,8 +74,6 @@ DD_CRASHTRACK_END_SIGINFO
85
74
86
75
Contains signal details extracted from `siginfo_t` structure.
Receiver::from_socket(unix_socket_path)?// Named socket mode
286
-
};
287
-
```
288
-
289
-
This allows integration with long-lived receiver processes.
218
+
When a Unix socket path is configured, the collector connects to an existing Unix socket instead of using the fork+execve receiver. This allows integration with long-lived receiver processes that can handle multiple crash reports.
290
219
291
220
**Linux Abstract Sockets**: On Linux, socket paths not starting with `.` or `/` are treated as abstract socket names.
0 commit comments