Skip to content

Commit 0d088b1

Browse files
committed
Make DD_LOG_BACKTRACE disabled by default again + make it mutually exclusive with DD_CRASHTRACKING_ENABLED
1 parent 8255aae commit 0d088b1

4 files changed

Lines changed: 35 additions & 8 deletions

File tree

ext/configuration.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,8 @@ enum ddtrace_sampling_rules_format {
9191
"(?i)(?:(?:\"|%22)?)(?:(?:old[-_]?|new[-_]?)?p(?:ass)?w(?:or)?d(?:1|2)?|pass(?:[-_]?phrase)?|secret|(?:api[-_]?|private[-_]?|public[-_]?|access[-_]?|secret[-_]?|app(?:lication)?[-_]?)key(?:[-_]?id)?|token|consumer[-_]?(?:id|key|secret)|sign(?:ed|ature)?|auth(?:entication|orization)?)(?:(?:\\s|%20)*(?:=|%3D)[^&]+|(?:\"|%22)(?:\\s|%20)*(?::|%3A)(?:\\s|%20)*(?:\"|%22)(?:%2[^2]|%[^2]|[^\"%])+(?:\"|%22))|(?:bearer(?:\\s|%20)+[a-z0-9._\\-]+|token(?::|%3A)[a-z0-9]{13}|gh[opsu]_[0-9a-zA-Z]{36}|ey[I-L](?:[\\w=-]|%3D)+\\.ey[I-L](?:[\\w=-]|%3D)+(?:\\.(?:[\\w.+/=-]|%3D|%2F|%2B)+)?|-{5}BEGIN(?:[a-z\\s]|%20)+PRIVATE(?:\\s|%20)KEY-{5}[^\\-]+-{5}END(?:[a-z\\s]|%20)+PRIVATE(?:\\s|%20)KEY(?:-{5})?(?:\\n|%0A)?|(?:ssh-(?:rsa|dss)|ecdsa-[a-z0-9]+-[a-z0-9]+)(?:\\s|%20|%09)+(?:[a-z0-9/.+]|%2F|%5C|%2B){100,}(?:=|%3D)*(?:(?:\\s|%20|%09)+[a-z0-9._-]+)?)"
9292

9393
#ifdef __SANITIZE_ADDRESS__
94-
#define DD_LOG_BACKTRACE_DEFAULT "false"
9594
#define DD_CRASHTRACKING_ENABLED_DEFAULT "false"
9695
#else
97-
#define DD_LOG_BACKTRACE_DEFAULT "true"
9896
#define DD_CRASHTRACKING_ENABLED_DEFAULT "true"
9997
#endif
10098

@@ -171,7 +169,7 @@ enum ddtrace_sampling_rules_format {
171169
CONFIG(INT, DD_TRACE_AGENT_CONNECT_TIMEOUT, DD_CFG_EXPSTR(DD_TRACE_AGENT_CONNECT_TIMEOUT_VAL), \
172170
.ini_change = zai_config_system_ini_change) \
173171
CONFIG(INT, DD_TRACE_DEBUG_PRNG_SEED, "-1", .ini_change = ddtrace_reseed_seed_change) \
174-
CONFIG(BOOL, DD_LOG_BACKTRACE, DD_LOG_BACKTRACE_DEFAULT) \
172+
CONFIG(BOOL, DD_LOG_BACKTRACE, "false") \
175173
CONFIG(BOOL, DD_CRASHTRACKING_ENABLED, DD_CRASHTRACKING_ENABLED_DEFAULT) \
176174
CONFIG(BOOL, DD_TRACE_GENERATE_ROOT_SPAN, "true", .ini_change = ddtrace_span_alter_root_span_config) \
177175
CONFIG(INT, DD_TRACE_SPANS_LIMIT, "1000") \

ext/signals.c

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,13 @@ void ddtrace_signals_first_rinit(void) {
169169
return;
170170
}
171171

172-
bool install_handler = get_DD_TRACE_HEALTH_METRICS_ENABLED();
172+
bool crashtracker_installed = false;
173+
if (get_DD_INSTRUMENTATION_TELEMETRY_ENABLED() && get_DD_CRASHTRACKING_ENABLED()) {
174+
crashtracker_installed = true;
175+
ddtrace_init_crashtracker();
176+
}
173177

178+
bool install_handler = get_DD_TRACE_HEALTH_METRICS_ENABLED();
174179
#if DDTRACE_HAVE_BACKTRACE
175180
install_handler |= get_DD_LOG_BACKTRACE();
176181
#endif
@@ -180,6 +185,11 @@ void ddtrace_signals_first_rinit(void) {
180185
* stack overflows.
181186
*/
182187
if (install_handler) {
188+
if (crashtracker_installed) {
189+
LOG(WARN, "Settings 'datadog.log_backtrace' and 'datadog.crashtracking_enabled' are mutually exclusive. Cannot enable the backtrace.");
190+
return;
191+
}
192+
183193
size_t stack_size = SIGSTKSZ < MIN_STACKSZ ? MIN_STACKSZ : SIGSTKSZ;
184194
if ((ddtrace_altstack.ss_sp = malloc(stack_size))) {
185195
ddtrace_altstack.ss_size = stack_size;
@@ -192,10 +202,6 @@ void ddtrace_signals_first_rinit(void) {
192202
}
193203
}
194204
}
195-
196-
if (get_DD_INSTRUMENTATION_TELEMETRY_ENABLED() && get_DD_CRASHTRACKING_ENABLED()) {
197-
ddtrace_init_crashtracker();
198-
}
199205
}
200206

201207
void ddtrace_signals_mshutdown(void) {
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
--TEST--
2+
Settings 'datadog.log_backtrace' and 'datadog.crashtracking_enabled' are mutually exclusive
3+
--SKIPIF--
4+
<?php
5+
if (PHP_OS != "Linux") die('skip: Crashtracker/backtrace are only available on Linux');
6+
if (getenv('DD_TRACE_CLI_ENABLED') === '0') die("skip: tracer is disabled");
7+
?>
8+
--ENV--
9+
DD_TRACE_LOG_LEVEL=warn,span=off,startup=off
10+
DD_LOG_BACKTRACE=1
11+
DD_CRASHTRACKING_ENABLED=1
12+
--INI--
13+
datadog.trace.log_file=file://stdout
14+
--FILE--
15+
<?php
16+
17+
print_r(1);
18+
19+
?>
20+
--EXPECTF--
21+
[ddtrace] [warning] Settings 'datadog.log_backtrace' and 'datadog.crashtracking_enabled' are mutually exclusive. Cannot enable the backtrace.
22+
1

tests/ext/crashtracker_segfault_disabled.phpt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,5 +50,6 @@ $rr->waitForRequest(function ($request) {
5050

5151
?>
5252
--EXPECTF--
53+
%A
5354
Fatal error: Uncaught Exception: wait for replay timeout in %s
5455
%A

0 commit comments

Comments
 (0)