ddtrace 1.17.0 → 1.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +85 -2
- data/ext/ddtrace_profiling_native_extension/clock_id_from_pthread.c +3 -0
- data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +67 -52
- data/ext/ddtrace_profiling_native_extension/collectors_dynamic_sampling_rate.c +22 -14
- data/ext/ddtrace_profiling_native_extension/collectors_dynamic_sampling_rate.h +4 -0
- data/ext/ddtrace_profiling_native_extension/collectors_gc_profiling_helper.c +156 -0
- data/ext/ddtrace_profiling_native_extension/collectors_gc_profiling_helper.h +5 -0
- data/ext/ddtrace_profiling_native_extension/collectors_stack.c +43 -102
- data/ext/ddtrace_profiling_native_extension/collectors_stack.h +10 -3
- data/ext/ddtrace_profiling_native_extension/collectors_thread_context.c +167 -125
- data/ext/ddtrace_profiling_native_extension/collectors_thread_context.h +2 -1
- data/ext/ddtrace_profiling_native_extension/extconf.rb +44 -10
- data/ext/ddtrace_profiling_native_extension/heap_recorder.c +970 -0
- data/ext/ddtrace_profiling_native_extension/heap_recorder.h +155 -0
- data/ext/ddtrace_profiling_native_extension/helpers.h +2 -0
- data/ext/ddtrace_profiling_native_extension/http_transport.c +5 -2
- data/ext/ddtrace_profiling_native_extension/libdatadog_helpers.c +20 -0
- data/ext/ddtrace_profiling_native_extension/libdatadog_helpers.h +11 -0
- data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +83 -18
- data/ext/ddtrace_profiling_native_extension/private_vm_api_access.h +6 -0
- data/ext/ddtrace_profiling_native_extension/profiling.c +2 -0
- data/ext/ddtrace_profiling_native_extension/ruby_helpers.c +147 -0
- data/ext/ddtrace_profiling_native_extension/ruby_helpers.h +28 -0
- data/ext/ddtrace_profiling_native_extension/stack_recorder.c +330 -13
- data/ext/ddtrace_profiling_native_extension/stack_recorder.h +3 -0
- data/lib/datadog/appsec/component.rb +4 -1
- data/lib/datadog/appsec/configuration/settings.rb +4 -0
- data/lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb +2 -0
- data/lib/datadog/appsec/processor/rule_loader.rb +60 -0
- data/lib/datadog/appsec/remote.rb +12 -9
- data/lib/datadog/core/configuration/settings.rb +139 -22
- data/lib/datadog/core/configuration.rb +4 -0
- data/lib/datadog/core/remote/worker.rb +1 -0
- data/lib/datadog/core/telemetry/collector.rb +10 -0
- data/lib/datadog/core/telemetry/event.rb +2 -1
- data/lib/datadog/core/telemetry/ext.rb +3 -0
- data/lib/datadog/core/telemetry/v1/app_event.rb +8 -1
- data/lib/datadog/core/telemetry/v1/install_signature.rb +38 -0
- data/lib/datadog/core/workers/async.rb +1 -0
- data/lib/datadog/kit/enable_core_dumps.rb +5 -6
- data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +7 -11
- data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +1 -0
- data/lib/datadog/profiling/component.rb +210 -18
- data/lib/datadog/profiling/scheduler.rb +4 -6
- data/lib/datadog/profiling/stack_recorder.rb +13 -2
- data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +4 -0
- data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +2 -1
- data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +5 -0
- data/lib/datadog/tracing/contrib/pg/instrumentation.rb +24 -0
- data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +0 -2
- data/lib/datadog/tracing/workers.rb +1 -0
- data/lib/ddtrace/version.rb +1 -1
- metadata +11 -6
@@ -81,10 +81,7 @@ end
|
|
81
81
|
|
82
82
|
# Because we can't control what compiler versions our customers use, shipping with -Werror by default is a no-go.
|
83
83
|
# But we can enable it in CI, so that we quickly spot any new warnings that just got introduced.
|
84
|
-
|
85
|
-
# @ivoanjo TODO: 3.3.0-preview releases are causing issues in CI because `have_header('vm_core.h')` below triggers warnings;
|
86
|
-
# I've chosen to disable `-Werror` for this Ruby version for now, and we can revisit this on a later 3.3 release.
|
87
|
-
add_compiler_flag '-Werror' if ENV['DDTRACE_CI'] == 'true' && !RUBY_DESCRIPTION.include?('3.3.0preview')
|
84
|
+
add_compiler_flag '-Werror' if ENV['DDTRACE_CI'] == 'true'
|
88
85
|
|
89
86
|
# Older gcc releases may not default to C99 and we need to ask for this. This is also used:
|
90
87
|
# * by upstream Ruby -- search for gnu99 in the codebase
|
@@ -102,9 +99,6 @@ add_compiler_flag '-Wno-declaration-after-statement'
|
|
102
99
|
# cause a segfault later. Let's ensure that never happens.
|
103
100
|
add_compiler_flag '-Werror-implicit-function-declaration'
|
104
101
|
|
105
|
-
# Warn on unused parameters to functions. Use `DDTRACE_UNUSED` to mark things as known-to-not-be-used.
|
106
|
-
add_compiler_flag '-Wunused-parameter'
|
107
|
-
|
108
102
|
# The native extension is not intended to expose any symbols/functions for other native libraries to use;
|
109
103
|
# the sole exception being `Init_ddtrace_profiling_native_extension` which needs to be visible for Ruby to call it when
|
110
104
|
# it `dlopen`s the library.
|
@@ -120,6 +114,11 @@ add_compiler_flag '-Wold-style-definition'
|
|
120
114
|
add_compiler_flag '-Wall'
|
121
115
|
add_compiler_flag '-Wextra'
|
122
116
|
|
117
|
+
if ENV['DDTRACE_DEBUG']
|
118
|
+
CONFIG['optflags'] = '-O0'
|
119
|
+
CONFIG['debugflags'] = '-ggdb3'
|
120
|
+
end
|
121
|
+
|
123
122
|
if RUBY_PLATFORM.include?('linux')
|
124
123
|
# Supposedly, the correct way to do this is
|
125
124
|
# ```
|
@@ -131,6 +130,12 @@ if RUBY_PLATFORM.include?('linux')
|
|
131
130
|
$defs << '-DHAVE_PTHREAD_GETCPUCLOCKID'
|
132
131
|
end
|
133
132
|
|
133
|
+
# On older Rubies, rb_postponed_job_preregister/rb_postponed_job_trigger did not exist
|
134
|
+
$defs << '-DNO_POSTPONED_TRIGGER' if RUBY_VERSION < '3.3'
|
135
|
+
|
136
|
+
# On older Rubies, M:N threads were not available
|
137
|
+
$defs << '-DNO_MN_THREADS_AVAILABLE' if RUBY_VERSION < '3.3'
|
138
|
+
|
134
139
|
# On older Rubies, we did not need to include the ractor header (this was built into the MJIT header)
|
135
140
|
$defs << '-DNO_RACTOR_HEADER_INCLUDE' if RUBY_VERSION < '3.3'
|
136
141
|
|
@@ -152,12 +157,18 @@ $defs << '-DNO_PRIMITIVE_POP' if RUBY_VERSION < '3.2'
|
|
152
157
|
# On older Rubies, there was no tid member in the internal thread structure
|
153
158
|
$defs << '-DNO_THREAD_TID' if RUBY_VERSION < '3.1'
|
154
159
|
|
160
|
+
# On older Rubies, there was no jit_return member on the rb_control_frame_t struct
|
161
|
+
$defs << '-DNO_JIT_RETURN' if RUBY_VERSION < '3.1'
|
162
|
+
|
155
163
|
# On older Rubies, we need to use a backported version of this function. See private_vm_api_access.h for details.
|
156
164
|
$defs << '-DUSE_BACKPORTED_RB_PROFILE_FRAME_METHOD_NAME' if RUBY_VERSION < '3'
|
157
165
|
|
158
166
|
# On older Rubies, there are no Ractors
|
159
167
|
$defs << '-DNO_RACTORS' if RUBY_VERSION < '3'
|
160
168
|
|
169
|
+
# On older Rubies, rb_imemo_name did not exist
|
170
|
+
$defs << '-DNO_IMEMO_NAME' if RUBY_VERSION < '3'
|
171
|
+
|
161
172
|
# On older Rubies, objects would not move
|
162
173
|
$defs << '-DNO_T_MOVED' if RUBY_VERSION < '2.7'
|
163
174
|
|
@@ -181,6 +192,14 @@ if RUBY_VERSION < '2.4'
|
|
181
192
|
$defs << '-DUSE_LEGACY_RB_VM_FRAME_METHOD_ENTRY'
|
182
193
|
end
|
183
194
|
|
195
|
+
# On older Rubies, rb_gc_force_recycle allowed to free objects in a way that
|
196
|
+
# would be invisible to free tracepoints, finalizers and without cleaning
|
197
|
+
# obj_to_id_tbl mappings.
|
198
|
+
$defs << '-DHAVE_WORKING_RB_GC_FORCE_RECYCLE' if RUBY_VERSION < '3.1'
|
199
|
+
|
200
|
+
# On older Rubies, there was no RUBY_SEEN_OBJ_ID flag
|
201
|
+
$defs << '-DNO_SEEN_OBJ_ID_FLAG' if RUBY_VERSION < '2.7'
|
202
|
+
|
184
203
|
# If we got here, libdatadog is available and loaded
|
185
204
|
ENV['PKG_CONFIG_PATH'] = "#{ENV['PKG_CONFIG_PATH']}:#{Libdatadog.pkgconfig_folder}"
|
186
205
|
Logging.message("[ddtrace] PKG_CONFIG_PATH set to #{ENV['PKG_CONFIG_PATH'].inspect}\n")
|
@@ -238,6 +257,10 @@ if Datadog::Profiling::NativeExtensionHelpers::CAN_USE_MJIT_HEADER
|
|
238
257
|
# NOTE: This needs to come after all changes to $defs
|
239
258
|
create_header
|
240
259
|
|
260
|
+
# Warn on unused parameters to functions. Use `DDTRACE_UNUSED` to mark things as known-to-not-be-used.
|
261
|
+
# See the comment on the same flag below for why this is done last.
|
262
|
+
add_compiler_flag '-Wunused-parameter'
|
263
|
+
|
241
264
|
create_makefile EXTENSION_NAME
|
242
265
|
else
|
243
266
|
# The MJIT header was introduced on 2.6 and removed on 3.3; for other Rubies we rely on
|
@@ -253,9 +276,20 @@ else
|
|
253
276
|
Debase::RubyCoreSource
|
254
277
|
.create_makefile_with_core(
|
255
278
|
proc do
|
256
|
-
|
257
|
-
|
258
|
-
|
279
|
+
headers_available =
|
280
|
+
have_header('vm_core.h') &&
|
281
|
+
have_header('iseq.h') &&
|
282
|
+
(RUBY_VERSION < '3.3' || have_header('ractor_core.h'))
|
283
|
+
|
284
|
+
if headers_available
|
285
|
+
# Warn on unused parameters to functions. Use `DDTRACE_UNUSED` to mark things as known-to-not-be-used.
|
286
|
+
# This is added as late as possible because in some Rubies we support (e.g. 3.3), adding this flag before
|
287
|
+
# checking if internal VM headers are available causes those checks to fail because of this warning (and not
|
288
|
+
# because the headers are not available.)
|
289
|
+
add_compiler_flag '-Wunused-parameter'
|
290
|
+
end
|
291
|
+
|
292
|
+
headers_available
|
259
293
|
end,
|
260
294
|
EXTENSION_NAME,
|
261
295
|
)
|