Commit 051c3b8
committed
PYCBC-1811: Fix conditional GIL hold in pycbc_logger_sink
Changes
--------
* Add pycbc::gil_acquire_guard in src/gil_guard.hxx, a sibling of Ticket
I's gil_release_guard that wraps PyGILState_Ensure/Release instead of
PyEval_SaveThread/RestoreThread, since the sink runs on a core IO
thread that may hold no Python thread state at all
* Replace the raw PyGILState_Ensure/Release pair and try/catch in
pycbc_logger_sink::log_it_ with the guard. The catch(...) block only
released the GIL when active_ was still true, so a throw racing the
atexit deactivate() call held the GIL forever on that thread; the
guard now releases unconditionally on every exit path, including
exception unwind, so the try/catch is no longer needed
* Leave ~pycbc_logger_sink's conditional Ensure/Release alone, it is
intentional and already balanced
Change-Id: I3fb7c793200dcd51dd91899a0bf06339d25a37fa
Reviewed-on: https://review.couchbase.org/c/couchbase-python-client/+/250498
Reviewed-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Tested-by: Build Bot <build@couchbase.com>1 parent 1c1f21b commit 051c3b8
2 files changed
Lines changed: 62 additions & 46 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
46 | 46 | | |
47 | 47 | | |
48 | 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 | + | |
49 | 74 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
| 21 | + | |
21 | 22 | | |
22 | 23 | | |
23 | 24 | | |
| |||
132 | 133 | | |
133 | 134 | | |
134 | 135 | | |
135 | | - | |
136 | | - | |
| 136 | + | |
137 | 137 | | |
138 | | - | |
139 | | - | |
140 | | - | |
141 | | - | |
142 | | - | |
143 | | - | |
144 | | - | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
145 | 144 | | |
146 | | - | |
147 | | - | |
148 | | - | |
149 | | - | |
150 | | - | |
151 | | - | |
152 | | - | |
153 | | - | |
154 | | - | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
155 | 157 | | |
156 | | - | |
157 | | - | |
158 | | - | |
159 | | - | |
160 | | - | |
161 | 158 | | |
| 159 | + | |
| 160 | + | |
162 | 161 | | |
163 | | - | |
164 | | - | |
165 | | - | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
166 | 170 | | |
167 | 171 | | |
168 | | - | |
169 | | - | |
170 | | - | |
171 | | - | |
172 | | - | |
173 | | - | |
174 | | - | |
175 | | - | |
| 172 | + | |
176 | 173 | | |
177 | | - | |
178 | | - | |
179 | | - | |
180 | | - | |
181 | | - | |
182 | | - | |
183 | | - | |
184 | | - | |
185 | | - | |
186 | | - | |
187 | | - | |
| 174 | + | |
188 | 175 | | |
189 | | - | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
190 | 181 | | |
191 | 182 | | |
192 | 183 | | |
| |||
0 commit comments