Hi there. I'm raising this as an issue here because it appears as if it is originating from the opencensus module. If this isn't the right place, I'm happy to close it and raise it where it should be raised.
It appears as if the parallel and opencensus modules don't play very well together. When I have both modules enabled, any attempts to create a new runtime from the parallel module yields a segfault. When the opencensus module is disabled, the runtime executes just fine without a segfault.
I have almost zero knowledge when it comes to PHP modules and source code, so please excuse any inconsistencies.
It appears as if the segfault is occurring in opencensus_trace_generate_class_name (ext/opencensus_trace.c:392). I have an example Docker image that replicates this behaviour:
-
Run the working example:
docker run --rm garbetjie/opencensus-segfault ./run.sh oc-disabled.
You should receive output of string(30) "got return value: return value".
-
Run the segfaulting example:
docker run --rm -v $PWD:/app/mnt garbetjie/opencensus-segfault ./run.sh oc-enabled
This will segfault, and will copy the core dump from the container to your current working directory on your Docker host.
PHP version is 7.3.11. GDB backtrace is below:
(gdb) backtrace 10
#0 0x00007f02a7fb348e in opencensus_trace_execute_internal (execute_data=0x7f02a7c1d190, return_value=0x7f02a7c1d120) at /tmp/opencensus-php-d1512abf456761165419a7b236e046a38b61219e/ext/opencensus_trace.c:623
#1 0x00007f02a7fb361b in opencensus_trace_execute_internal (execute_data=0x7f02a7c1d190, return_value=0x7f02a7c1d120) at /tmp/opencensus-php-d1512abf456761165419a7b236e046a38b61219e/ext/opencensus_trace.c:641
#2 0x00007f02a7fb361b in opencensus_trace_execute_internal (execute_data=0x7f02a7c1d190, return_value=0x7f02a7c1d120) at /tmp/opencensus-php-d1512abf456761165419a7b236e046a38b61219e/ext/opencensus_trace.c:641
#3 0x00007f02a7fb361b in opencensus_trace_execute_internal (execute_data=0x7f02a7c1d190, return_value=0x7f02a7c1d120) at /tmp/opencensus-php-d1512abf456761165419a7b236e046a38b61219e/ext/opencensus_trace.c:641
#4 0x00007f02a7fb361b in opencensus_trace_execute_internal (execute_data=0x7f02a7c1d190, return_value=0x7f02a7c1d120) at /tmp/opencensus-php-d1512abf456761165419a7b236e046a38b61219e/ext/opencensus_trace.c:641
#5 0x00007f02a7fb361b in opencensus_trace_execute_internal (execute_data=0x7f02a7c1d190, return_value=0x7f02a7c1d120) at /tmp/opencensus-php-d1512abf456761165419a7b236e046a38b61219e/ext/opencensus_trace.c:641
#6 0x00007f02a7fb361b in opencensus_trace_execute_internal (execute_data=0x7f02a7c1d190, return_value=0x7f02a7c1d120) at /tmp/opencensus-php-d1512abf456761165419a7b236e046a38b61219e/ext/opencensus_trace.c:641
#7 0x00007f02a7fb361b in opencensus_trace_execute_internal (execute_data=0x7f02a7c1d190, return_value=0x7f02a7c1d120) at /tmp/opencensus-php-d1512abf456761165419a7b236e046a38b61219e/ext/opencensus_trace.c:641
#8 0x00007f02a7fb361b in opencensus_trace_execute_internal (execute_data=0x7f02a7c1d190, return_value=0x7f02a7c1d120) at /tmp/opencensus-php-d1512abf456761165419a7b236e046a38b61219e/ext/opencensus_trace.c:641
#9 0x00007f02a7fb361b in opencensus_trace_execute_internal (execute_data=0x7f02a7c1d190, return_value=0x7f02a7c1d120) at /tmp/opencensus-php-d1512abf456761165419a7b236e046a38b61219e/ext/opencensus_trace.c:641
I'm not sure how much more information I can supply. However, if any more information is required, I'd be happy to try provide it.
Hi there. I'm raising this as an issue here because it appears as if it is originating from the
opencensusmodule. If this isn't the right place, I'm happy to close it and raise it where it should be raised.It appears as if the
parallelandopencensusmodules don't play very well together. When I have both modules enabled, any attempts to create a new runtime from theparallelmodule yields a segfault. When theopencensusmodule is disabled, the runtime executes just fine without a segfault.I have almost zero knowledge when it comes to PHP modules and source code, so please excuse any inconsistencies.
It appears as if the segfault is occurring in
opencensus_trace_generate_class_name(ext/opencensus_trace.c:392). I have an example Docker image that replicates this behaviour:Run the working example:
docker run --rm garbetjie/opencensus-segfault ./run.sh oc-disabled.You should receive output of
string(30) "got return value: return value".Run the segfaulting example:
docker run --rm -v $PWD:/app/mnt garbetjie/opencensus-segfault ./run.sh oc-enabledThis will segfault, and will copy the core dump from the container to your current working directory on your Docker host.
PHP version is 7.3.11. GDB backtrace is below:
I'm not sure how much more information I can supply. However, if any more information is required, I'd be happy to try provide it.