When the AvailableModulesList is destroyed, it will wait for the current module scanning job (running on a background thread) to complete. This job will try to take the AvailableModulesList::lock when it completes, so the lock must outlive the background thread.v6.1.6