File tree Expand file tree Collapse file tree 2 files changed +6
-2
lines changed Expand file tree Collapse file tree 2 files changed +6
-2
lines changed Original file line number Diff line number Diff line change 1
1
name = " FFTW"
2
2
uuid = " 7a1cc6ca-52ef-59f5-83cd-3a7055c09341"
3
- version = " 1.4.1 "
3
+ version = " 1.4.2 "
4
4
5
5
[deps ]
6
6
AbstractFFTs = " 621f4979-c628-5d54-868e-fcf4e3e8185c"
Original file line number Diff line number Diff line change @@ -304,7 +304,11 @@ function maybe_destroy_plan(plan::FFTWPlan)
304
304
# since task switches aren't permitted in finalizers. This has suboptimal efficiency,
305
305
# but we shouldn't waste too many cycles since destroying plans is quick and contention
306
306
# should be rare.
307
- while ! trylock (deferred_destroy_lock); end
307
+ while ! trylock (deferred_destroy_lock)
308
+ # Need a safepoint in here because without it, this loop blocks forward progress in the GC and can deadlock
309
+ # the program.
310
+ GC. safepoint ()
311
+ end
308
312
try
309
313
# note: fftwlock is re-entrant, so trylock will succeed here if we
310
314
# are in the task that holds the planner lock. That's okay —
You can’t perform that action at this time.
0 commit comments