Author: jmolenda Date: Fri Sep 6 18:38:37 2019 New Revision: 371280 URL: http://llvm.org/viewvc/llvm-project?rev=371280&view=rev Log: Long timeouts for the MacOSX SystemRuntime plugins under ASAN; else quick.
In April via r357829, Adrian unified timeouts across lldb and set the default value high so that we wouldn't get timeouts on ASAN bots that were running under load. The library that the MacOSX SystemRuntime has functions that need to take a lock, and if that lock is held already, those functions will never complete; we're seeing the 15 second timeout being hit with inferiors that are doing a lot of enqueuing and dequeuing of libdispatch work items causing this deadlocking behavior. This patch reverts to a very short timeout for these SystemRuntime function calls, given the behavior of this library that they are calling into. When lldb is built with AddressSanitizer enabled, they will use the default 15 second timeout. tl;dr: this reverts to the previous timeouts for these SystemRuntime inf func calls. <rdar://problem/54538149> Modified: lldb/trunk/source/Plugins/SystemRuntime/MacOSX/AppleGetItemInfoHandler.cpp lldb/trunk/source/Plugins/SystemRuntime/MacOSX/AppleGetPendingItemsHandler.cpp lldb/trunk/source/Plugins/SystemRuntime/MacOSX/AppleGetQueuesHandler.cpp lldb/trunk/source/Plugins/SystemRuntime/MacOSX/AppleGetThreadItemInfoHandler.cpp Modified: lldb/trunk/source/Plugins/SystemRuntime/MacOSX/AppleGetItemInfoHandler.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SystemRuntime/MacOSX/AppleGetItemInfoHandler.cpp?rev=371280&r1=371279&r2=371280&view=diff ============================================================================== --- lldb/trunk/source/Plugins/SystemRuntime/MacOSX/AppleGetItemInfoHandler.cpp (original) +++ lldb/trunk/source/Plugins/SystemRuntime/MacOSX/AppleGetItemInfoHandler.cpp Fri Sep 6 18:38:37 2019 @@ -332,6 +332,11 @@ AppleGetItemInfoHandler::GetItemInfo(Thr options.SetUnwindOnError(true); options.SetIgnoreBreakpoints(true); options.SetStopOthers(true); +#if __has_feature(address_sanitizer) + options.SetTimeout(process_sp->GetUtilityExpressionTimeout()); +#else + options.SetTimeout(std::chrono::milliseconds(500)); +#endif options.SetTimeout(process_sp->GetUtilityExpressionTimeout()); options.SetTryAllThreads(false); options.SetIsForUtilityExpr(true); Modified: lldb/trunk/source/Plugins/SystemRuntime/MacOSX/AppleGetPendingItemsHandler.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SystemRuntime/MacOSX/AppleGetPendingItemsHandler.cpp?rev=371280&r1=371279&r2=371280&view=diff ============================================================================== --- lldb/trunk/source/Plugins/SystemRuntime/MacOSX/AppleGetPendingItemsHandler.cpp (original) +++ lldb/trunk/source/Plugins/SystemRuntime/MacOSX/AppleGetPendingItemsHandler.cpp Fri Sep 6 18:38:37 2019 @@ -338,7 +338,11 @@ AppleGetPendingItemsHandler::GetPendingI options.SetUnwindOnError(true); options.SetIgnoreBreakpoints(true); options.SetStopOthers(true); +#if __has_feature(address_sanitizer) options.SetTimeout(process_sp->GetUtilityExpressionTimeout()); +#else + options.SetTimeout(std::chrono::milliseconds(500)); +#endif options.SetTryAllThreads(false); options.SetIsForUtilityExpr(true); thread.CalculateExecutionContext(exe_ctx); Modified: lldb/trunk/source/Plugins/SystemRuntime/MacOSX/AppleGetQueuesHandler.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SystemRuntime/MacOSX/AppleGetQueuesHandler.cpp?rev=371280&r1=371279&r2=371280&view=diff ============================================================================== --- lldb/trunk/source/Plugins/SystemRuntime/MacOSX/AppleGetQueuesHandler.cpp (original) +++ lldb/trunk/source/Plugins/SystemRuntime/MacOSX/AppleGetQueuesHandler.cpp Fri Sep 6 18:38:37 2019 @@ -344,7 +344,11 @@ AppleGetQueuesHandler::GetCurrentQueues( options.SetUnwindOnError(true); options.SetIgnoreBreakpoints(true); options.SetStopOthers(true); +#if __has_feature(address_sanitizer) options.SetTimeout(process_sp->GetUtilityExpressionTimeout()); +#else + options.SetTimeout(std::chrono::milliseconds(500)); +#endif options.SetTryAllThreads(false); options.SetIsForUtilityExpr(true); thread.CalculateExecutionContext(exe_ctx); Modified: lldb/trunk/source/Plugins/SystemRuntime/MacOSX/AppleGetThreadItemInfoHandler.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SystemRuntime/MacOSX/AppleGetThreadItemInfoHandler.cpp?rev=371280&r1=371279&r2=371280&view=diff ============================================================================== --- lldb/trunk/source/Plugins/SystemRuntime/MacOSX/AppleGetThreadItemInfoHandler.cpp (original) +++ lldb/trunk/source/Plugins/SystemRuntime/MacOSX/AppleGetThreadItemInfoHandler.cpp Fri Sep 6 18:38:37 2019 @@ -341,7 +341,11 @@ AppleGetThreadItemInfoHandler::GetThread options.SetUnwindOnError(true); options.SetIgnoreBreakpoints(true); options.SetStopOthers(true); +#if __has_feature(address_sanitizer) options.SetTimeout(process_sp->GetUtilityExpressionTimeout()); +#else + options.SetTimeout(std::chrono::milliseconds(500)); +#endif options.SetTryAllThreads(false); options.SetIsForUtilityExpr(true); thread.CalculateExecutionContext(exe_ctx); _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits