forked from OSchip/llvm-project
Fix a deadlock issue that would happen when loading an AppleTV or watchOS binary.
This was a regression that was caused by svn revision 269877: commit 1ded4a2a25d60dd2c81bd432bcf63b6ded58e5d6 Author: Saleem Abdulrasool <compnerd@compnerd.org> Date: Wed May 18 01:59:10 2016 +0000 remove use of Mutex in favour of std::{,recursive_}mutex This is a pretty straightforward first pass over removing a number of uses of Mutex in favor of std::mutex or std::recursive_mutex. The problem is that there are interfaces which take Mutex::Locker & to lock internal locks. This patch cleans up most of the easy cases. The only non-trivial change is in CommandObjectTarget.cpp where a Mutex::Locker was split into two. git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@269877 91177308-0d34-0410-b5e6-96231b3b80d8 This change actually changed the Platform::m_mutex to be non-recursive which caused the regression. <rdar://problem/29094384> llvm-svn: 286908
This commit is contained in:
parent
9fc54826e0
commit
7b26dbb125
|
@ -263,7 +263,7 @@ EnumerateDirectoryCallback(void *baton, FileSpec::FileType file_type,
|
|||
}
|
||||
|
||||
const char *PlatformAppleWatchSimulator::GetSDKDirectoryAsCString() {
|
||||
std::lock_guard<std::mutex> guard(m_mutex);
|
||||
std::lock_guard<std::mutex> guard(m_sdk_dir_mutex);
|
||||
if (m_sdk_directory.empty()) {
|
||||
const char *developer_dir = GetDeveloperDirectory();
|
||||
if (developer_dir) {
|
||||
|
|
|
@ -86,6 +86,7 @@ public:
|
|||
}
|
||||
|
||||
protected:
|
||||
std::mutex m_sdk_dir_mutex;
|
||||
std::string m_sdk_directory;
|
||||
std::string m_build_update;
|
||||
|
||||
|
|
|
@ -258,6 +258,7 @@ PlatformRemoteAppleTV::GetContainedFilesIntoVectorOfStringsCallback(
|
|||
|
||||
bool PlatformRemoteAppleTV::UpdateSDKDirectoryInfosIfNeeded() {
|
||||
Log *log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_HOST);
|
||||
std::lock_guard<std::mutex> guard(m_sdk_dir_mutex);
|
||||
if (m_sdk_directory_infos.empty()) {
|
||||
const char *device_support_dir = GetDeviceSupportDirectory();
|
||||
if (log) {
|
||||
|
|
|
@ -96,6 +96,7 @@ protected:
|
|||
bool user_cached;
|
||||
};
|
||||
typedef std::vector<SDKDirectoryInfo> SDKDirectoryInfoCollection;
|
||||
std::mutex m_sdk_dir_mutex;
|
||||
SDKDirectoryInfoCollection m_sdk_directory_infos;
|
||||
std::string m_device_support_directory;
|
||||
std::string m_device_support_directory_for_os_version;
|
||||
|
|
|
@ -268,6 +268,7 @@ PlatformRemoteAppleWatch::GetContainedFilesIntoVectorOfStringsCallback(
|
|||
|
||||
bool PlatformRemoteAppleWatch::UpdateSDKDirectoryInfosIfNeeded() {
|
||||
Log *log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_HOST);
|
||||
std::lock_guard<std::mutex> guard(m_sdk_dir_mutex);
|
||||
if (m_sdk_directory_infos.empty()) {
|
||||
const char *device_support_dir = GetDeviceSupportDirectory();
|
||||
if (log) {
|
||||
|
|
|
@ -98,6 +98,7 @@ protected:
|
|||
bool user_cached;
|
||||
};
|
||||
typedef std::vector<SDKDirectoryInfo> SDKDirectoryInfoCollection;
|
||||
std::mutex m_sdk_dir_mutex;
|
||||
SDKDirectoryInfoCollection m_sdk_directory_infos;
|
||||
std::string m_device_support_directory;
|
||||
std::string m_device_support_directory_for_os_version;
|
||||
|
|
|
@ -263,6 +263,7 @@ PlatformRemoteiOS::GetContainedFilesIntoVectorOfStringsCallback(
|
|||
|
||||
bool PlatformRemoteiOS::UpdateSDKDirectoryInfosIfNeeded() {
|
||||
Log *log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_HOST);
|
||||
std::lock_guard<std::mutex> guard(m_sdk_dir_mutex);
|
||||
if (m_sdk_directory_infos.empty()) {
|
||||
// A --sysroot option was supplied - add it to our list of SDKs to check
|
||||
if (m_sdk_sysroot) {
|
||||
|
|
|
@ -94,6 +94,7 @@ protected:
|
|||
|
||||
typedef std::vector<SDKDirectoryInfo> SDKDirectoryInfoCollection;
|
||||
|
||||
std::mutex m_sdk_dir_mutex;
|
||||
SDKDirectoryInfoCollection m_sdk_directory_infos;
|
||||
std::string m_device_support_directory;
|
||||
std::string m_device_support_directory_for_os_version;
|
||||
|
|
Loading…
Reference in New Issue