• Tom Stellard's avatar
    ocl: Change static variable order in cl_context.cpp to avoid crashes during destruction · 8f3b876e
    Tom Stellard authored
    ContextImpl::currentContext contains a reference to one of the
    DeviceInfoImpl objects from:
    
    static std::vector<DeviceInfoImpl> global_devices;
    
    ContextImpl::currentContext is destroyed in the destructor
    for the statically defined object __module, and relies on its
    DeviceInfoImpl reference to query some hardware features while
    being destroyed.
    
    This means that we need to ensure that the global_devices vector is
    destroyed affter __module, otherwise ContextImpl::currentContext's
    DeviceInfoImpl reference will no longer be valid when __module is
    destroyed.
    
    Since these variables are all confined to a single compilation unit,
    they will be destruct from bottom to top, so we need to make sure
    that __module is the bottom definition so it can be destroyed first.
    8f3b876e
Name
Last commit
Last update
..
doc Loading commit data...
include/opencv2/ocl Loading commit data...
perf Loading commit data...
src Loading commit data...
test Loading commit data...
CMakeLists.txt Loading commit data...