Sha256: 57fcd5adf4de4b9b6f028733441b63ca49aea17a66b1945345748ecf5f93c7ee

Contents?: true

Size: 1.6 KB

Versions: 15

Compression:

Stored size: 1.6 KB

Contents

# frozen_string_literal: true

module Datadog
  module Kit
    # This helper is used to enable core dumps for the current Ruby app. This is useful when debugging native-level
    # crashes.
    #
    # It can be enabled simply by adding `require 'datadog/kit/enable_core_dumps'` to start of the app.
    module EnableCoreDumps
      def self.call
        current_size, maximum_size = Process.getrlimit(:CORE)
        core_pattern =
          begin
            File.read('/proc/sys/kernel/core_pattern').strip
          rescue
            '(Could not open /proc/sys/kernel/core_pattern)'
          end

        if maximum_size <= 0
          Kernel.warn("[ddtrace] Could not enable core dumps on crash, maximum size is #{maximum_size} (disabled).")
          return
        elsif maximum_size == current_size
          Kernel.warn('[ddtrace] Core dumps already enabled, nothing to do!')
          return
        end

        begin
          Process.setrlimit(:CORE, maximum_size)
        rescue => e
          Kernel.warn(
            "[ddtrace] Failed to enable core dumps. Cause: #{e.class.name} #{e.message} " \
            "Location: #{Array(e.backtrace).first}"
          )
          return
        end

        if current_size == 0
          Kernel.warn("[ddtrace] Enabled core dumps. Maximum size: #{maximum_size} Output pattern: '#{core_pattern}'")
        else
          Kernel.warn(
            "[ddtrace] Raised core dump limit. Old size: #{current_size} " \
            "Maximum size: #{maximum_size} Output pattern: '#{core_pattern}'"
          )
        end
      end
    end
  end
end

Datadog::Kit::EnableCoreDumps.call

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
ddtrace-1.17.0 lib/datadog/kit/enable_core_dumps.rb
ddtrace-1.16.2 lib/datadog/kit/enable_core_dumps.rb
ddtrace-1.16.1 lib/datadog/kit/enable_core_dumps.rb
ddtrace-1.16.0 lib/datadog/kit/enable_core_dumps.rb
ddtrace-1.15.0 lib/datadog/kit/enable_core_dumps.rb
ddtrace-1.14.0 lib/datadog/kit/enable_core_dumps.rb
ddtrace-1.13.1 lib/datadog/kit/enable_core_dumps.rb
ddtrace-1.13.0 lib/datadog/kit/enable_core_dumps.rb
ddtrace-1.12.1 lib/datadog/kit/enable_core_dumps.rb
ddtrace-1.12.0 lib/datadog/kit/enable_core_dumps.rb
ddtrace-1.11.1 lib/datadog/kit/enable_core_dumps.rb
ddtrace-1.11.0 lib/datadog/kit/enable_core_dumps.rb
ddtrace-1.11.0.beta1 lib/datadog/kit/enable_core_dumps.rb
ddtrace-1.10.1 lib/datadog/kit/enable_core_dumps.rb
ddtrace-1.10.0 lib/datadog/kit/enable_core_dumps.rb