Skip to content

Commit

Permalink
fix(setup): suppress int-ptr conversion errors for stack profiler v1 …
Browse files Browse the repository at this point in the history
…[backport 2.16] (#11657)

Backport c226dd1 from #11651 to 2.16.

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 <[email protected]>
  • Loading branch information
github-actions[bot] and sanchda authored Dec 11, 2024
1 parent 7fb8f7d commit d5f9c27
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 2 deletions.
2 changes: 1 addition & 1 deletion ddtrace/internal/datadog/profiling/stack_v2/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ endif()

# Add echion
set(ECHION_COMMIT
"9d5bcc5867d7aefff73c837adcba4ef46eecebc6"
"ed744987f224fae3f93c842b2b5ffb083984ff8b"
CACHE STRING "Commit hash of echion to use")
FetchContent_Declare(
echion
Expand Down
Original file line number Diff line number Diff line change
@@ -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.
6 changes: 5 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -603,7 +603,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",
Expand Down

0 comments on commit d5f9c27

Please sign in to comment.