- 
                Notifications
    You must be signed in to change notification settings 
- Fork 55
Open
Description
The following will segfault on my machine:
using FFTW
function make_plan()
    plan = FFTW.plan_fft(zeros(10))
    return deepcopy(plan)
end
plan = make_plan()
GC.gc() # presumably C datastructures are freed in this step, even though they remain live
plan * ones(10) # segfault
Since FFTW plans are immutable, a quick fix might be to have deepcopy return the original plan,
Base.deepcopy(plan::FFTW.cFFTWPlan) = plan
# ... repeat for all FFTW plan types
Alternatively, attempting to deepcopy an FFTW plan could throw an error explaining that deepcopy cannot be used in conjunction with bindings to C libraries.
Tested on FFTW v1.5.0 with Julia 1.9 beta 4:
julia> versioninfo()
Julia Version 1.9.0-beta4
Commit b75ddb787ff (2023-02-07 21:53 UTC)
Platform Info:
  OS: macOS (arm64-apple-darwin21.5.0)
  CPU: 8 × Apple M1 Pro
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-14.0.6 (ORCJIT, apple-m1)
  Threads: 1 on 6 virtual cores
Metadata
Metadata
Assignees
Labels
No labels