From bd30bbe641be56b525dbb2ef273562c155d31f06 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 10 Dec 2024 21:54:56 +0000 Subject: [PATCH] fix(setup): suppress int-ptr conversion errors for stack profiler v1 [backport 2.17] (#11658) Backport c226dd1f64a03e0fc9d815783f0883f9876b7b6c from #11651 to 2.17. The root issue is that * Alpine 3.21.0 was released on Dec 5 * Alpine 3.21.0 includes an update to gcc (gcc 14) * gcc 14 is more strict (yay!) about pointer<->integer conversions. However, cython does not generate code with the proper incantation to avoid compiler errors (I blame pthreads having opaque pointer types) * Subsequently, any and every python-alpine container image (even and especially patch versions) cut after Dec 5 will have the updated Alpine image, which will have the updated gcc, which will start to break during builds. This PR effectively undoes the gcc 14 behavior by making int<->ptr conversions less strict again (only for the stack.c cython-generated file which is currently throwing the error). ## Checklist - [X] PR author has checked that all the criteria below are met - The PR description includes an overview of the change - The PR description articulates the motivation for the change - The change includes tests OR the PR description describes a testing strategy - The PR description notes risks associated with the change, if any - Newly-added code is easy to change - The change follows the [library release note guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html) - The change includes or references documentation updates if necessary - Backport labels are set (if [applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)) ## Reviewer Checklist - [x] Reviewer has checked that all the criteria below are met - Title is accurate - All changes are related to the pull request's stated goal - Avoids breaking [API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces) changes - Testing strategy adequately addresses listed risks - Newly-added code is easy to change - Release note makes sense to a user of the library - If necessary, author has acknowledged and discussed the performance implications of this PR as reported in the benchmarks PR comment - Backport labels are set in a manner that is consistent with the [release branch maintenance policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting) Co-authored-by: David Sanchez <838104+sanchda@users.noreply.github.com> --- ddtrace/internal/datadog/profiling/stack_v2/CMakeLists.txt | 2 +- .../fix-profiler-int-ptr-conversion-4377fbd8724eeaec.yaml | 6 ++++++ setup.py | 6 +++++- 3 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 releasenotes/notes/fix-profiler-int-ptr-conversion-4377fbd8724eeaec.yaml diff --git a/ddtrace/internal/datadog/profiling/stack_v2/CMakeLists.txt b/ddtrace/internal/datadog/profiling/stack_v2/CMakeLists.txt index 19f3955dab0..02058e59feb 100644 --- a/ddtrace/internal/datadog/profiling/stack_v2/CMakeLists.txt +++ b/ddtrace/internal/datadog/profiling/stack_v2/CMakeLists.txt @@ -37,7 +37,7 @@ endif() # Add echion set(ECHION_COMMIT - "9d5bcc5867d7aefff73c837adcba4ef46eecebc6" + "ed744987f224fae3f93c842b2b5ffb083984ff8b" CACHE STRING "Commit hash of echion to use") FetchContent_Declare( echion diff --git a/releasenotes/notes/fix-profiler-int-ptr-conversion-4377fbd8724eeaec.yaml b/releasenotes/notes/fix-profiler-int-ptr-conversion-4377fbd8724eeaec.yaml new file mode 100644 index 00000000000..cadb50628fa --- /dev/null +++ b/releasenotes/notes/fix-profiler-int-ptr-conversion-4377fbd8724eeaec.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + Updates setup.py to ignore int-ptr conversion warnings for the profiler stack.pyx file. + This is important because gcc 14 makes these conversions an error, alpine 3.21.0 ships with gcc 14, + and any patch version of a Python alpine image cut after December 5th, 2024, will have this issue. diff --git a/setup.py b/setup.py index ce1aa685596..af30b20df31 100644 --- a/setup.py +++ b/setup.py @@ -610,7 +610,11 @@ def get_exts_for(name): "ddtrace.profiling.collector.stack", sources=["ddtrace/profiling/collector/stack.pyx"], language="c", - extra_compile_args=extra_compile_args, + # cython generated code errors on build in toolchains that are strict about int->ptr conversion + # OTOH, the MSVC toolchain is different. In a perfect world we'd deduce the underlying toolchain and + # emit the right flags, but as a compromise we assume Windows implies MSVC and everything else is on a + # GNU-like toolchain + extra_compile_args=extra_compile_args + (["-Wno-int-conversion"] if CURRENT_OS != "Windows" else []), ), Cython.Distutils.Extension( "ddtrace.profiling.collector._traceback",