datadog 2.2.0 → 2.4.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 +87 -2
- data/ext/datadog_profiling_loader/datadog_profiling_loader.c +9 -1
- data/ext/datadog_profiling_loader/extconf.rb +14 -26
- data/ext/datadog_profiling_native_extension/clock_id.h +1 -0
- data/ext/datadog_profiling_native_extension/clock_id_from_pthread.c +1 -2
- data/ext/datadog_profiling_native_extension/clock_id_noop.c +1 -2
- data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +257 -69
- data/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.c +53 -28
- data/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.h +34 -4
- data/ext/datadog_profiling_native_extension/collectors_idle_sampling_helper.c +4 -0
- data/ext/datadog_profiling_native_extension/collectors_stack.c +136 -81
- data/ext/datadog_profiling_native_extension/collectors_stack.h +2 -2
- data/ext/datadog_profiling_native_extension/collectors_thread_context.c +661 -48
- data/ext/datadog_profiling_native_extension/collectors_thread_context.h +10 -1
- data/ext/datadog_profiling_native_extension/datadog_ruby_common.c +83 -0
- data/ext/datadog_profiling_native_extension/datadog_ruby_common.h +53 -0
- data/ext/datadog_profiling_native_extension/extconf.rb +91 -69
- data/ext/datadog_profiling_native_extension/gvl_profiling_helper.c +50 -0
- data/ext/datadog_profiling_native_extension/gvl_profiling_helper.h +75 -0
- data/ext/datadog_profiling_native_extension/heap_recorder.c +54 -12
- data/ext/datadog_profiling_native_extension/heap_recorder.h +3 -1
- data/ext/datadog_profiling_native_extension/helpers.h +6 -17
- data/ext/datadog_profiling_native_extension/http_transport.c +41 -9
- data/ext/datadog_profiling_native_extension/libdatadog_helpers.c +0 -86
- data/ext/datadog_profiling_native_extension/libdatadog_helpers.h +2 -23
- data/ext/datadog_profiling_native_extension/native_extension_helpers.rb +61 -172
- data/ext/datadog_profiling_native_extension/private_vm_api_access.c +116 -139
- data/ext/datadog_profiling_native_extension/private_vm_api_access.h +20 -11
- data/ext/datadog_profiling_native_extension/profiling.c +1 -3
- data/ext/datadog_profiling_native_extension/ruby_helpers.c +0 -33
- data/ext/datadog_profiling_native_extension/ruby_helpers.h +1 -26
- data/ext/datadog_profiling_native_extension/setup_signal_handler.h +1 -0
- data/ext/datadog_profiling_native_extension/stack_recorder.c +14 -2
- data/ext/datadog_profiling_native_extension/stack_recorder.h +2 -0
- data/ext/datadog_profiling_native_extension/time_helpers.c +0 -15
- data/ext/datadog_profiling_native_extension/time_helpers.h +36 -6
- data/ext/{datadog_profiling_native_extension → libdatadog_api}/crashtracker.c +37 -22
- data/ext/libdatadog_api/datadog_ruby_common.c +83 -0
- data/ext/libdatadog_api/datadog_ruby_common.h +53 -0
- data/ext/libdatadog_api/extconf.rb +108 -0
- data/ext/libdatadog_api/macos_development.md +26 -0
- data/ext/libdatadog_extconf_helpers.rb +130 -0
- data/lib/datadog/appsec/assets/waf_rules/recommended.json +2184 -108
- data/lib/datadog/appsec/assets/waf_rules/strict.json +1430 -2
- data/lib/datadog/appsec/component.rb +29 -8
- data/lib/datadog/appsec/configuration/settings.rb +2 -2
- data/lib/datadog/appsec/contrib/devise/patcher/authenticatable_patch.rb +1 -0
- data/lib/datadog/appsec/contrib/devise/patcher/rememberable_patch.rb +21 -0
- data/lib/datadog/appsec/contrib/devise/patcher.rb +12 -2
- data/lib/datadog/appsec/contrib/graphql/appsec_trace.rb +35 -0
- data/lib/datadog/appsec/contrib/graphql/gateway/multiplex.rb +109 -0
- data/lib/datadog/appsec/contrib/graphql/gateway/watcher.rb +71 -0
- data/lib/datadog/appsec/contrib/graphql/integration.rb +54 -0
- data/lib/datadog/appsec/contrib/graphql/patcher.rb +37 -0
- data/lib/datadog/appsec/contrib/graphql/reactive/multiplex.rb +59 -0
- data/lib/datadog/appsec/contrib/rack/gateway/request.rb +3 -6
- data/lib/datadog/appsec/event.rb +1 -1
- data/lib/datadog/appsec/processor/actions.rb +1 -1
- data/lib/datadog/appsec/processor/rule_loader.rb +3 -1
- data/lib/datadog/appsec/processor/rule_merger.rb +33 -15
- data/lib/datadog/appsec/processor.rb +36 -37
- data/lib/datadog/appsec/rate_limiter.rb +25 -40
- data/lib/datadog/appsec/remote.rb +7 -3
- data/lib/datadog/appsec/response.rb +15 -1
- data/lib/datadog/appsec.rb +3 -2
- data/lib/datadog/core/configuration/components.rb +18 -15
- data/lib/datadog/core/configuration/settings.rb +135 -9
- data/lib/datadog/core/crashtracking/agent_base_url.rb +21 -0
- data/lib/datadog/core/crashtracking/component.rb +111 -0
- data/lib/datadog/core/crashtracking/tag_builder.rb +39 -0
- data/lib/datadog/core/diagnostics/environment_logger.rb +8 -11
- data/lib/datadog/core/environment/execution.rb +5 -5
- data/lib/datadog/core/metrics/client.rb +7 -0
- data/lib/datadog/core/rate_limiter.rb +183 -0
- data/lib/datadog/core/remote/client/capabilities.rb +4 -3
- data/lib/datadog/core/remote/component.rb +4 -2
- data/lib/datadog/core/remote/negotiation.rb +4 -4
- data/lib/datadog/core/remote/tie.rb +2 -0
- data/lib/datadog/core/runtime/metrics.rb +1 -1
- data/lib/datadog/core/telemetry/component.rb +51 -2
- data/lib/datadog/core/telemetry/emitter.rb +9 -11
- data/lib/datadog/core/telemetry/event.rb +37 -1
- data/lib/datadog/core/telemetry/ext.rb +1 -0
- data/lib/datadog/core/telemetry/http/adapters/net.rb +10 -12
- data/lib/datadog/core/telemetry/http/ext.rb +3 -0
- data/lib/datadog/core/telemetry/http/transport.rb +38 -9
- data/lib/datadog/core/telemetry/logger.rb +51 -0
- data/lib/datadog/core/telemetry/logging.rb +71 -0
- data/lib/datadog/core/telemetry/request.rb +13 -1
- data/lib/datadog/core/utils/at_fork_monkey_patch.rb +102 -0
- data/lib/datadog/core/utils/time.rb +12 -0
- data/lib/datadog/di/code_tracker.rb +168 -0
- data/lib/datadog/di/configuration/settings.rb +163 -0
- data/lib/datadog/di/configuration.rb +11 -0
- data/lib/datadog/di/error.rb +31 -0
- data/lib/datadog/di/extensions.rb +16 -0
- data/lib/datadog/di/probe.rb +133 -0
- data/lib/datadog/di/probe_builder.rb +41 -0
- data/lib/datadog/di/redactor.rb +188 -0
- data/lib/datadog/di/serializer.rb +193 -0
- data/lib/datadog/di.rb +14 -0
- data/lib/datadog/kit/appsec/events.rb +2 -4
- data/lib/datadog/opentelemetry/sdk/propagator.rb +2 -0
- data/lib/datadog/opentelemetry/sdk/span_processor.rb +10 -0
- data/lib/datadog/opentelemetry/sdk/trace/span.rb +23 -0
- data/lib/datadog/profiling/collectors/code_provenance.rb +7 -7
- data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +28 -26
- data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +11 -13
- data/lib/datadog/profiling/collectors/info.rb +15 -6
- data/lib/datadog/profiling/collectors/thread_context.rb +30 -2
- data/lib/datadog/profiling/component.rb +89 -95
- data/lib/datadog/profiling/exporter.rb +3 -3
- data/lib/datadog/profiling/ext/dir_monkey_patches.rb +3 -3
- data/lib/datadog/profiling/ext.rb +21 -21
- data/lib/datadog/profiling/flush.rb +1 -1
- data/lib/datadog/profiling/http_transport.rb +14 -7
- data/lib/datadog/profiling/load_native_extension.rb +5 -5
- data/lib/datadog/profiling/preload.rb +1 -1
- data/lib/datadog/profiling/profiler.rb +5 -8
- data/lib/datadog/profiling/scheduler.rb +33 -25
- data/lib/datadog/profiling/stack_recorder.rb +3 -0
- data/lib/datadog/profiling/tag_builder.rb +2 -2
- data/lib/datadog/profiling/tasks/exec.rb +5 -5
- data/lib/datadog/profiling/tasks/setup.rb +16 -35
- data/lib/datadog/profiling.rb +4 -5
- data/lib/datadog/single_step_instrument.rb +12 -0
- data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +8 -12
- data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +5 -0
- data/lib/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rb +78 -0
- data/lib/datadog/tracing/contrib/action_pack/action_dispatch/patcher.rb +33 -0
- data/lib/datadog/tracing/contrib/action_pack/patcher.rb +2 -0
- data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +4 -0
- data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +3 -1
- data/lib/datadog/tracing/contrib/active_record/events/sql.rb +4 -1
- data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +5 -1
- data/lib/datadog/tracing/contrib/aws/instrumentation.rb +5 -0
- data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +6 -1
- data/lib/datadog/tracing/contrib/ext.rb +14 -0
- data/lib/datadog/tracing/contrib/faraday/middleware.rb +9 -0
- data/lib/datadog/tracing/contrib/grape/endpoint.rb +19 -0
- data/lib/datadog/tracing/contrib/graphql/patcher.rb +9 -12
- data/lib/datadog/tracing/contrib/graphql/trace_patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/graphql/tracing_patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +14 -10
- data/lib/datadog/tracing/contrib/graphql/unified_trace_patcher.rb +10 -4
- data/lib/datadog/tracing/contrib/http/instrumentation.rb +18 -15
- data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +6 -5
- data/lib/datadog/tracing/contrib/httpclient/patcher.rb +1 -14
- data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +5 -0
- data/lib/datadog/tracing/contrib/httprb/patcher.rb +1 -14
- data/lib/datadog/tracing/contrib/lograge/patcher.rb +15 -0
- data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +2 -0
- data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +5 -0
- data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +17 -13
- data/lib/datadog/tracing/contrib/opensearch/patcher.rb +13 -6
- data/lib/datadog/tracing/contrib/patcher.rb +2 -1
- data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +5 -0
- data/lib/datadog/tracing/contrib/pg/instrumentation.rb +4 -1
- data/lib/datadog/tracing/contrib/presto/patcher.rb +1 -13
- data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +28 -0
- data/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb +5 -1
- data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +22 -10
- data/lib/datadog/tracing/contrib/rack/middlewares.rb +27 -0
- data/lib/datadog/tracing/contrib/redis/tags.rb +4 -0
- data/lib/datadog/tracing/contrib/sinatra/tracer.rb +4 -0
- data/lib/datadog/tracing/contrib/stripe/request.rb +3 -2
- data/lib/datadog/tracing/contrib/trilogy/configuration/settings.rb +5 -0
- data/lib/datadog/tracing/contrib/trilogy/instrumentation.rb +4 -1
- data/lib/datadog/tracing/diagnostics/environment_logger.rb +14 -16
- data/lib/datadog/tracing/distributed/propagation.rb +7 -0
- data/lib/datadog/tracing/metadata/errors.rb +9 -1
- data/lib/datadog/tracing/metadata/ext.rb +6 -0
- data/lib/datadog/tracing/pipeline/span_filter.rb +2 -2
- data/lib/datadog/tracing/remote.rb +5 -2
- data/lib/datadog/tracing/sampling/matcher.rb +6 -1
- data/lib/datadog/tracing/sampling/rate_sampler.rb +1 -1
- data/lib/datadog/tracing/sampling/rule.rb +2 -0
- data/lib/datadog/tracing/sampling/rule_sampler.rb +9 -5
- data/lib/datadog/tracing/sampling/span/ext.rb +1 -1
- data/lib/datadog/tracing/sampling/span/rule.rb +2 -2
- data/lib/datadog/tracing/span.rb +9 -2
- data/lib/datadog/tracing/span_event.rb +41 -0
- data/lib/datadog/tracing/span_operation.rb +6 -2
- data/lib/datadog/tracing/trace_operation.rb +26 -2
- data/lib/datadog/tracing/tracer.rb +14 -12
- data/lib/datadog/tracing/transport/http/client.rb +1 -0
- data/lib/datadog/tracing/transport/io/client.rb +1 -0
- data/lib/datadog/tracing/transport/serializable_trace.rb +3 -0
- data/lib/datadog/tracing/workers/trace_writer.rb +1 -1
- data/lib/datadog/tracing/workers.rb +1 -1
- data/lib/datadog/version.rb +1 -1
- metadata +46 -11
- data/lib/datadog/profiling/crashtracker.rb +0 -91
- data/lib/datadog/profiling/ext/forking.rb +0 -98
- data/lib/datadog/tracing/sampling/rate_limiter.rb +0 -185
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: ba1dc00d9afe70c54ea0918673e832793bb7c7a629618dc3d36e066fd121ea56
         | 
| 4 | 
            +
              data.tar.gz: 9818bf0ba8dbd989451b7b0492efe848a9cdf97239acac3637aaa9d17937b541
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 419ac80497f45159d199d2b9d3b16c70c46903d65d828c6e5ab52029758c9b38e11b243e112d52e3e9d45f05d5e1acf814bcb3f7582496f1e5be120c13f0f685
         | 
| 7 | 
            +
              data.tar.gz: ce8f36e974b194fbdedd40fdf634e49115c0bd6befb350092dfc4cb94185a173a7d3325b6adc9cf50e060b05a4968ca7858a52082748a4979090a7eb32aa96ba
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -2,6 +2,57 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            ## [Unreleased]
         | 
| 4 4 |  | 
| 5 | 
            +
            ## [2.4.0] - 2024-10-11
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            ### Added
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            * Core: Allow changing sampling rate for customer defined tags and resources ([#3956][])
         | 
| 10 | 
            +
            * Profiling: Add GVL profiling for Ruby 3.2+ as a preview feature ([#3929][])
         | 
| 11 | 
            +
            * Profiling: Otel: Add preview support for correlating profiling with otel ruby gem ([#3984][])
         | 
| 12 | 
            +
            * Tracing: AppSec: Add http.route tag to Rails, Grape, and Sinatra integrations ([#3849][])
         | 
| 13 | 
            +
            * Tracing: Add capabilities to remote config: tracing sample rate, tracing logs injection, tracing http header tags ([#3888][])
         | 
| 14 | 
            +
            * AppSec: Add a force disable of AppSec feature when using Ruby >= 3.3 with old FFI gem version ([#3969][])
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            ### Changed
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            * AppSec: Improve PII compliance ([#3857][])
         | 
| 19 | 
            +
            * AppSec: Integrations: Improve accuracy of login tracking for Devise ([#3867][])
         | 
| 20 | 
            +
            * Crashtracking feature is now disabled by default ([#3970][])
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            ### Fixed
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            * AppSec: Integrations: Fix GraphQL instrumentation for query fragments ([#3887][])
         | 
| 25 | 
            +
            * Bug: Profiling: Fix (small) memory leak in profiler when forking ([#3852][])
         | 
| 26 | 
            +
            * Tracing: Integrations: Fix GraphQL integration reconfiguration ([#3859][])
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            ## [2.3.0] - 2024-08-22
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            ### Added
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            * Core: Support agentless telemetry ([#3779][])
         | 
| 33 | 
            +
            * Tracing: Add support for span events ([#3776][])
         | 
| 34 | 
            +
            * Tracing: Add tags to enable inferred service dependencies for databases ([#3789][])
         | 
| 35 | 
            +
            * Tracing: Emit log message and instructions for incompatible Lograge setup ([#3812][], [#3839][])
         | 
| 36 | 
            +
            * Tracing: Add `append_comment` option to append SQL comment propagation for `mysql`, `pg` and `trilogy` ([#3809][])
         | 
| 37 | 
            +
            * AppSec: Add threat detection and protection for `graphql` ([#3769][], [#3814][])
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            ### Changed
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            * Core: Enable crashtracking by default ([#3826][])
         | 
| 42 | 
            +
            * Profiling: Reduce allocation overhead ([#3805][], [#3797][])
         | 
| 43 | 
            +
            * Profiling: Speed up stack sampling ([#3837][])
         | 
| 44 | 
            +
            * Profiling: Upgrade to libdatadog 11 ([#3799][])
         | 
| 45 | 
            +
            * Profiling: Disable allocation counting feature by default ([#3798][])
         | 
| 46 | 
            +
            * Profiling: Reduce the maximum biased result for allocation samples ([#3793][])
         | 
| 47 | 
            +
            * Tracing: Reduce noisy integration logs ([#3785][])
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            ### Fixed
         | 
| 50 | 
            +
             | 
| 51 | 
            +
            * Tracing: Fix `require` issue for `graphql` ([#3813][])
         | 
| 52 | 
            +
            * AppSec: Fix an error when parsing http headers with integer value ([#3790][])
         | 
| 53 | 
            +
            * AppSec: Fix an error when tracking login failure without `user_id` ([#3841][])
         | 
| 54 | 
            +
            * Fix a syntax error for Ruby < 2.4 during single step instrumentation ([#3795][])
         | 
| 55 | 
            +
             | 
| 5 56 | 
             
            ## [2.2.0] - 2024-07-11
         | 
| 6 57 |  | 
| 7 58 | 
             
            ### Added
         | 
| @@ -2934,7 +2985,9 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.3.1 | |
| 2934 2985 | 
             
            Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
         | 
| 2935 2986 |  | 
| 2936 2987 |  | 
| 2937 | 
            -
            [Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v2. | 
| 2988 | 
            +
            [Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v2.4.0...master
         | 
| 2989 | 
            +
            [2.4.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.3.0...v2.4.0
         | 
| 2990 | 
            +
            [2.3.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.2.0...v2.3.0
         | 
| 2938 2991 | 
             
            [2.2.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.1.0...v2.2.0
         | 
| 2939 2992 | 
             
            [2.1.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.0.0...v2.1.0
         | 
| 2940 2993 | 
             
            [2.0.0]: https://github.com/DataDog/dd-trace-rb/compare/v2.0.0.rc1...v2.0.0
         | 
| @@ -4331,9 +4384,41 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1 | |
| 4331 4384 | 
             
            [#3753]: https://github.com/DataDog/dd-trace-rb/issues/3753
         | 
| 4332 4385 | 
             
            [#3757]: https://github.com/DataDog/dd-trace-rb/issues/3757
         | 
| 4333 4386 | 
             
            [#3759]: https://github.com/DataDog/dd-trace-rb/issues/3759
         | 
| 4387 | 
            +
            [#3769]: https://github.com/DataDog/dd-trace-rb/issues/3769
         | 
| 4334 4388 | 
             
            [#3770]: https://github.com/DataDog/dd-trace-rb/issues/3770
         | 
| 4335 4389 | 
             
            [#3772]: https://github.com/DataDog/dd-trace-rb/issues/3772
         | 
| 4336 4390 | 
             
            [#3774]: https://github.com/DataDog/dd-trace-rb/issues/3774
         | 
| 4391 | 
            +
            [#3776]: https://github.com/DataDog/dd-trace-rb/issues/3776
         | 
| 4392 | 
            +
            [#3779]: https://github.com/DataDog/dd-trace-rb/issues/3779
         | 
| 4393 | 
            +
            [#3785]: https://github.com/DataDog/dd-trace-rb/issues/3785
         | 
| 4394 | 
            +
            [#3789]: https://github.com/DataDog/dd-trace-rb/issues/3789
         | 
| 4395 | 
            +
            [#3790]: https://github.com/DataDog/dd-trace-rb/issues/3790
         | 
| 4396 | 
            +
            [#3793]: https://github.com/DataDog/dd-trace-rb/issues/3793
         | 
| 4397 | 
            +
            [#3795]: https://github.com/DataDog/dd-trace-rb/issues/3795
         | 
| 4398 | 
            +
            [#3797]: https://github.com/DataDog/dd-trace-rb/issues/3797
         | 
| 4399 | 
            +
            [#3798]: https://github.com/DataDog/dd-trace-rb/issues/3798
         | 
| 4400 | 
            +
            [#3799]: https://github.com/DataDog/dd-trace-rb/issues/3799
         | 
| 4401 | 
            +
            [#3805]: https://github.com/DataDog/dd-trace-rb/issues/3805
         | 
| 4402 | 
            +
            [#3809]: https://github.com/DataDog/dd-trace-rb/issues/3809
         | 
| 4403 | 
            +
            [#3812]: https://github.com/DataDog/dd-trace-rb/issues/3812
         | 
| 4404 | 
            +
            [#3813]: https://github.com/DataDog/dd-trace-rb/issues/3813
         | 
| 4405 | 
            +
            [#3814]: https://github.com/DataDog/dd-trace-rb/issues/3814
         | 
| 4406 | 
            +
            [#3826]: https://github.com/DataDog/dd-trace-rb/issues/3826
         | 
| 4407 | 
            +
            [#3837]: https://github.com/DataDog/dd-trace-rb/issues/3837
         | 
| 4408 | 
            +
            [#3839]: https://github.com/DataDog/dd-trace-rb/issues/3839
         | 
| 4409 | 
            +
            [#3841]: https://github.com/DataDog/dd-trace-rb/issues/3841
         | 
| 4410 | 
            +
            [#3849]: https://github.com/DataDog/dd-trace-rb/issues/3849
         | 
| 4411 | 
            +
            [#3852]: https://github.com/DataDog/dd-trace-rb/issues/3852
         | 
| 4412 | 
            +
            [#3857]: https://github.com/DataDog/dd-trace-rb/issues/3857
         | 
| 4413 | 
            +
            [#3859]: https://github.com/DataDog/dd-trace-rb/issues/3859
         | 
| 4414 | 
            +
            [#3867]: https://github.com/DataDog/dd-trace-rb/issues/3867
         | 
| 4415 | 
            +
            [#3887]: https://github.com/DataDog/dd-trace-rb/issues/3887
         | 
| 4416 | 
            +
            [#3888]: https://github.com/DataDog/dd-trace-rb/issues/3888
         | 
| 4417 | 
            +
            [#3929]: https://github.com/DataDog/dd-trace-rb/issues/3929
         | 
| 4418 | 
            +
            [#3956]: https://github.com/DataDog/dd-trace-rb/issues/3956
         | 
| 4419 | 
            +
            [#3969]: https://github.com/DataDog/dd-trace-rb/issues/3969
         | 
| 4420 | 
            +
            [#3970]: https://github.com/DataDog/dd-trace-rb/issues/3970
         | 
| 4421 | 
            +
            [#3984]: https://github.com/DataDog/dd-trace-rb/issues/3984
         | 
| 4337 4422 | 
             
            [@AdrianLC]: https://github.com/AdrianLC
         | 
| 4338 4423 | 
             
            [@Azure7111]: https://github.com/Azure7111
         | 
| 4339 4424 | 
             
            [@BabyGroot]: https://github.com/BabyGroot
         | 
| @@ -4485,4 +4570,4 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1 | |
| 4485 4570 | 
             
            [@y-yagi]: https://github.com/y-yagi
         | 
| 4486 4571 | 
             
            [@yujideveloper]: https://github.com/yujideveloper
         | 
| 4487 4572 | 
             
            [@yukimurasawa]: https://github.com/yukimurasawa
         | 
| 4488 | 
            -
            [@zachmccormick]: https://github.com/zachmccormick
         | 
| 4573 | 
            +
            [@zachmccormick]: https://github.com/zachmccormick
         | 
| @@ -65,7 +65,15 @@ static VALUE _native_load(DDTRACE_UNUSED VALUE self, VALUE ruby_path, VALUE ruby | |
| 65 65 | 
             
              char *path = StringValueCStr(ruby_path);
         | 
| 66 66 | 
             
              char *init_name = StringValueCStr(ruby_init_name);
         | 
| 67 67 |  | 
| 68 | 
            -
               | 
| 68 | 
            +
              int dlopen_flags = RTLD_LAZY | RTLD_LOCAL | RTLD_DEEPBIND;
         | 
| 69 | 
            +
             | 
| 70 | 
            +
              #if defined(__has_feature)
         | 
| 71 | 
            +
                #if __has_feature(address_sanitizer)
         | 
| 72 | 
            +
                  dlopen_flags &= ~RTLD_DEEPBIND; // Not supported by ASAN
         | 
| 73 | 
            +
                #endif
         | 
| 74 | 
            +
              #endif
         | 
| 75 | 
            +
             | 
| 76 | 
            +
              void *handle = dlopen(path, dlopen_flags);
         | 
| 69 77 |  | 
| 70 78 | 
             
              VALUE failure_details = Qnil;
         | 
| 71 79 |  | 
| @@ -1,49 +1,38 @@ | |
| 1 1 | 
             
            # rubocop:disable Style/StderrPuts
         | 
| 2 | 
            -
            # rubocop:disable Style/GlobalVars
         | 
| 3 2 |  | 
| 4 | 
            -
            if RUBY_ENGINE !=  | 
| 3 | 
            +
            if RUBY_ENGINE != "ruby" || Gem.win_platform?
         | 
| 5 4 | 
             
              $stderr.puts(
         | 
| 6 | 
            -
                 | 
| 5 | 
            +
                "WARN: Skipping build of Datadog profiling loader. See Datadog profiling native extension note for details."
         | 
| 7 6 | 
             
              )
         | 
| 8 7 |  | 
| 9 | 
            -
              File.write( | 
| 8 | 
            +
              File.write("Makefile", "all install clean: # dummy makefile that does nothing")
         | 
| 10 9 | 
             
              exit
         | 
| 11 10 | 
             
            end
         | 
| 12 11 |  | 
| 13 | 
            -
            require  | 
| 14 | 
            -
             | 
| 15 | 
            -
            # mkmf on modern Rubies actually has an append_cflags that does something similar
         | 
| 16 | 
            -
            # (see https://github.com/ruby/ruby/pull/5760), but as usual we need a bit more boilerplate to deal with legacy Rubies
         | 
| 17 | 
            -
            def add_compiler_flag(flag)
         | 
| 18 | 
            -
              if try_cflags(flag)
         | 
| 19 | 
            -
                $CFLAGS << ' ' << flag
         | 
| 20 | 
            -
              else
         | 
| 21 | 
            -
                $stderr.puts("WARNING: '#{flag}' not accepted by compiler, skipping it")
         | 
| 22 | 
            -
              end
         | 
| 23 | 
            -
            end
         | 
| 12 | 
            +
            require "mkmf"
         | 
| 24 13 |  | 
| 25 14 | 
             
            # Because we can't control what compiler versions our customers use, shipping with -Werror by default is a no-go.
         | 
| 26 15 | 
             
            # But we can enable it in CI, so that we quickly spot any new warnings that just got introduced.
         | 
| 27 | 
            -
             | 
| 16 | 
            +
            append_cflags "-Werror" if ENV["DATADOG_GEM_CI"] == "true"
         | 
| 28 17 |  | 
| 29 18 | 
             
            # Older gcc releases may not default to C99 and we need to ask for this. This is also used:
         | 
| 30 19 | 
             
            # * by upstream Ruby -- search for gnu99 in the codebase
         | 
| 31 20 | 
             
            # * by msgpack, another datadog gem dependency
         | 
| 32 21 | 
             
            #   (https://github.com/msgpack/msgpack-ruby/blob/18ce08f6d612fe973843c366ac9a0b74c4e50599/ext/msgpack/extconf.rb#L8)
         | 
| 33 | 
            -
             | 
| 22 | 
            +
            append_cflags "-std=gnu99"
         | 
| 34 23 |  | 
| 35 24 | 
             
            # Gets really noisy when we include the MJIT header, let's omit it (TODO: Use #pragma GCC diagnostic instead?)
         | 
| 36 | 
            -
             | 
| 25 | 
            +
            append_cflags "-Wno-unused-function"
         | 
| 37 26 |  | 
| 38 27 | 
             
            # Allow defining variables at any point in a function
         | 
| 39 | 
            -
             | 
| 28 | 
            +
            append_cflags "-Wno-declaration-after-statement"
         | 
| 40 29 |  | 
| 41 30 | 
             
            # If we forget to include a Ruby header, the function call may still appear to work, but then
         | 
| 42 31 | 
             
            # cause a segfault later. Let's ensure that never happens.
         | 
| 43 | 
            -
             | 
| 32 | 
            +
            append_cflags "-Werror-implicit-function-declaration"
         | 
| 44 33 |  | 
| 45 34 | 
             
            # Warn on unused parameters to functions. Use `DDTRACE_UNUSED` to mark things as known-to-not-be-used.
         | 
| 46 | 
            -
             | 
| 35 | 
            +
            append_cflags "-Wunused-parameter"
         | 
| 47 36 |  | 
| 48 37 | 
             
            # The native extension is not intended to expose any symbols/functions for other native libraries to use;
         | 
| 49 38 | 
             
            # the sole exception being `Init_datadog_profiling_loader` which needs to be visible for Ruby to call it when
         | 
| @@ -51,14 +40,14 @@ add_compiler_flag '-Wunused-parameter' | |
| 51 40 | 
             
            #
         | 
| 52 41 | 
             
            # By setting this compiler flag, we tell it to assume that everything is private unless explicitly stated.
         | 
| 53 42 | 
             
            # For more details see https://gcc.gnu.org/wiki/Visibility
         | 
| 54 | 
            -
             | 
| 43 | 
            +
            append_cflags "-fvisibility=hidden"
         | 
| 55 44 |  | 
| 56 45 | 
             
            # Avoid legacy C definitions
         | 
| 57 | 
            -
             | 
| 46 | 
            +
            append_cflags "-Wold-style-definition"
         | 
| 58 47 |  | 
| 59 48 | 
             
            # Enable all other compiler warnings
         | 
| 60 | 
            -
             | 
| 61 | 
            -
             | 
| 49 | 
            +
            append_cflags "-Wall"
         | 
| 50 | 
            +
            append_cflags "-Wextra"
         | 
| 62 51 |  | 
| 63 52 | 
             
            # Tag the native extension library with the Ruby version and Ruby platform.
         | 
| 64 53 | 
             
            # This makes it easier for development (avoids "oops I forgot to rebuild when I switched my Ruby") and ensures that
         | 
| @@ -68,5 +57,4 @@ EXTENSION_NAME = "datadog_profiling_loader.#{RUBY_VERSION}_#{RUBY_PLATFORM}".fre | |
| 68 57 |  | 
| 69 58 | 
             
            create_makefile(EXTENSION_NAME)
         | 
| 70 59 |  | 
| 71 | 
            -
            # rubocop:enable Style/GlobalVars
         | 
| 72 60 | 
             
            # rubocop:enable Style/StderrPuts
         | 
| @@ -7,11 +7,10 @@ | |
| 7 7 | 
             
            #include <pthread.h>
         | 
| 8 8 | 
             
            #include <time.h>
         | 
| 9 9 | 
             
            #include <errno.h>
         | 
| 10 | 
            -
            #include <ruby.h>
         | 
| 11 10 |  | 
| 11 | 
            +
            #include "clock_id.h"
         | 
| 12 12 | 
             
            #include "helpers.h"
         | 
| 13 13 | 
             
            #include "private_vm_api_access.h"
         | 
| 14 | 
            -
            #include "clock_id.h"
         | 
| 15 14 | 
             
            #include "time_helpers.h"
         | 
| 16 15 |  | 
| 17 16 | 
             
            // Validate that our home-cooked pthread_id_for() matches pthread_self() for the current thread
         |