Closed DuckThom closed 8 months ago
~Hey, we know about this issue and have a fix for this ready already: #2446.~
~We'll release it soon, in the meantime, feel free to download and install with this generated installer for the bugfix branch: https://output.circle-artifacts.com/output/job/4429d2ad-e1ab-486b-b7c5-17006d5ed0e2/artifacts/0/datadog-setup.php~
EDIT: Read too fast, I saw PHP 8.1.2 and a similar backtrace to that issue, but it's different, sorry. I'm looking at it more closely.
Aah yes, I was just checking v0.96.0+6fc83d6357315310881ff7a7fb0067e27620839c
and the segfault is indeed still there, no worries 😄
I can confirm the issue, it should be broken between 8.1.0 and 8.1.3.
Given that you are using Fibers, I'd like to point out that fibers do have problems with garbage collection in early 8.1 and 8.2 versions, see https://github.com/php/php-src/issues/10496 (< 8.1.17, <8.2.4).
Anyhow, I'll look at how we can fix this.
I see, thanks for looking into it. We're unfortunately not able to update to a newer PHP version as this is the one provided by Ubuntu's latest LTS (22.04.3) when installing php8.1
.
Hey @DuckThom,
please try https://output.circle-artifacts.com/output/job/ae5cabd4-20fc-4602-88b2-d5d9dd2bdfe2/artifacts/0/datadog-setup.php (#2473) - this should actually fix your issue :-)
Yes, looks like it's not segfaulting anymore!
root@da900e3e96d7:/# php -v
PHP 8.1.2-1ubuntu2.14 (cli) (built: Aug 18 2023 11:41:11) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2-1ubuntu2.14, Copyright (c), by Zend Technologies
with ddtrace v0.96.0+cc0141a367abcf01b32ed2c50e166edb2255baa8, Copyright Datadog, by Datadog
with datadog-profiling v0.96.0+cc0141a367abcf01b32ed2c50e166edb2255baa8, Copyright Datadog, by Datadog
with ddappsec v0.96.0, Copyright Datadog, by Datadog
root@da900e3e96d7:/# php script.php
For reference, I've been using this Dockerfile for testing:
FROM ubuntu:jammy
ARG DD_SETUP_URL
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update -y \
&& apt-get install -y wget curl php8.1 \
&& wget $DD_SETUP_URL \
&& php datadog-setup.php --php-bin all --enable-profiling \
&& echo "<?php \$fiber = new Fiber( function() { \$a = 1; } ); \$return = \$fiber->start();" > script.php
CMD php script.php
Broken setup:
docker build --build-arg DD_SETUP_URL="https://github.com/DataDog/dd-trace-php/releases/download/0.96.0/datadog-setup.php" -t dd-test . && docker run --rm dd-test; echo $?
Segmentation fault
139
Working:
docker build --build-arg DD_SETUP_URL="https://output.circle-artifacts.com/output/job/ae5cabd4-20fc-4602-88b2-d5d9dd2bdfe2/artifacts/0/datadog-setup.php" -t dd-test . && docker run --rm dd-test; echo $?
0
Bug report
When running a CLI script with a Fiber in it, the php process crashes with a Segmentation Fault. When disabling the datadog modules, this issue is gone.
This is happening both on amd64 and arm64 platforms.
Test script:
Error in GDB:
PHP version
8.1.2-1ubuntu2.14
Tracer or profiler version
0.96.0
Installed extensions
[PHP Modules] calendar Core ctype datadog-profiling date ddappsec ddtrace exif FFI fileinfo filter ftp gettext hash iconv json libxml openssl pcntl pcre PDO Phar posix readline Reflection session shmop sockets sodium SPL standard sysvmsg sysvsem sysvshm tokenizer Zend OPcache zlib
[Zend Modules] Zend OPcache datadog-profiling ddappsec ddtrace
Output of
phpinfo()
Upgrading from
No response