summaryrefslogtreecommitdiffstats
path: root/69.patch
blob: 3589d4b9a3a585c52989dada0baf1d998bc92a87 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
From 4d1ec38c5cdf104f4167faf47378c4f19e7c25b9 Mon Sep 17 00:00:00 2001
From: Remi Collet <remi@remirepo.net>
Date: Fri, 5 Feb 2021 12:05:28 +0100
Subject: [PATCH 1/3] fix globals init and ZTS

---
 config.m4       |  2 +-
 zend_scoutapm.c | 15 ++++++++++++++-
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/config.m4 b/config.m4
index 771fc1d..5e8d1d0 100644
--- a/config.m4
+++ b/config.m4
@@ -80,7 +80,7 @@ if test "$PHP_SCOUTAPM" != "no"; then
     STD_CFLAGS="-g -O0 -Wall"
   fi
 
-  PHP_SCOUTAPM_CFLAGS="$STD_CFLAGS $MAINTAINER_CFLAGS"
+  PHP_SCOUTAPM_CFLAGS="-DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 $STD_CFLAGS $MAINTAINER_CFLAGS"
 
   PHP_NEW_EXTENSION(scoutapm, zend_scoutapm.c scout_curl_wrapper.c scout_file_wrapper.c scout_pdo_wrapper.c,
         $ext_shared,,$PHP_SCOUTAPM_CFLAGS,,yes)
diff --git a/zend_scoutapm.c b/zend_scoutapm.c
index 739dc66..7139a52 100644
--- a/zend_scoutapm.c
+++ b/zend_scoutapm.c
@@ -82,6 +82,12 @@ PHP_MINFO_FUNCTION(scoutapm)
 	php_info_print_table_end();
 }
 
+static
+PHP_GINIT_FUNCTION(scoutapm)
+{
+    scoutapm_globals->handlers_set = 0;
+}
+
 /* scoutapm_module_entry provides the metadata/information for PHP about this PHP module */
 static zend_module_entry scoutapm_module_entry = {
     STANDARD_MODULE_HEADER,
@@ -94,7 +100,7 @@ static zend_module_entry scoutapm_module_entry = {
     PHP_MINFO(scoutapm),            /* module information */
     PHP_SCOUTAPM_VERSION,           /* module version */
     PHP_MODULE_GLOBALS(scoutapm),   /* module global variables */
-    NULL,
+    PHP_GINIT(scoutapm),            /* init global */
     NULL,
     NULL,
     STANDARD_MODULE_PROPERTIES_EX
@@ -105,6 +111,9 @@ static zend_module_entry scoutapm_module_entry = {
  * Instead, see `zend_scoutapm_startup` - we load the module there.
 ZEND_GET_MODULE(scoutapm);
  */
+#if defined(COMPILE_DL_SCOUTAPM) && defined(ZTS)
+ZEND_TSRMLS_CACHE_DEFINE()
+#endif
 
 /* extension_version_info is used by PHP */
 zend_extension_version_info extension_version_info = {
@@ -178,6 +187,10 @@ static PHP_RINIT_FUNCTION(scoutapm)
     int handler_index;
     zend_class_entry *ce;
 
+#if defined(COMPILE_DL_SCOUTAPM) && defined(ZTS)
+	ZEND_TSRMLS_CACHE_UPDATE();
+#endif
+
     SCOUTAPM_DEBUG_MESSAGE("Initialising stacks...");
     SCOUTAPM_G(observed_stack_frames_count) = 0;
     SCOUTAPM_G(observed_stack_frames) = calloc(0, sizeof(scoutapm_stack_frame));

From 2794f94a9ce0e30451a2d1fd64701e4500644453 Mon Sep 17 00:00:00 2001
From: Remi Collet <remi@remirepo.net>
Date: Fri, 5 Feb 2021 12:15:56 +0100
Subject: [PATCH 2/3] zero all globals

---
 zend_scoutapm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/zend_scoutapm.c b/zend_scoutapm.c
index 7139a52..2b70a07 100644
--- a/zend_scoutapm.c
+++ b/zend_scoutapm.c
@@ -85,7 +85,7 @@ PHP_MINFO_FUNCTION(scoutapm)
 static
 PHP_GINIT_FUNCTION(scoutapm)
 {
-    scoutapm_globals->handlers_set = 0;
+    memset(scoutapm_globals, 0, sizeof(zend_scoutapm_globals));
 }
 
 /* scoutapm_module_entry provides the metadata/information for PHP about this PHP module */

From 8330d02f790a0aa6f82a94d13b2b94a9d6f8a109 Mon Sep 17 00:00:00 2001
From: Remi Collet <remi@remirepo.net>
Date: Fri, 5 Feb 2021 14:15:59 +0100
Subject: [PATCH 3/3] missing ZEND_TSRMLS_CACHE_UPDATE in GINIT

---
 zend_scoutapm.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/zend_scoutapm.c b/zend_scoutapm.c
index 2b70a07..5be730b 100644
--- a/zend_scoutapm.c
+++ b/zend_scoutapm.c
@@ -85,6 +85,9 @@ PHP_MINFO_FUNCTION(scoutapm)
 static
 PHP_GINIT_FUNCTION(scoutapm)
 {
+#if defined(COMPILE_DL_SCOUTAPM) && defined(ZTS)
+	ZEND_TSRMLS_CACHE_UPDATE();
+#endif
     memset(scoutapm_globals, 0, sizeof(zend_scoutapm_globals));
 }