[Lldb-commits] [PATCH] D29669: Hardware breakpoints implementation for Arm/AArch64 targets
labath requested changes to this revision. labath added a comment. This revision now requires changes to proceed. I am sorry about the delay - I was busy last week and then this kinda fell off my radar. The change looks good, but I want to make the test more stable - we are running these in CI and I've already seen some very unlikely things happen, so I don't want this to be flaky. Also, it looks like you didn't catch all instances of using printf-style logging. Comment at: packages/Python/lldbsuite/test/functionalities/breakpoint/hardware_breakpoints/hardware_breakpoint_on_multiple_threads/TestHWBreakMultiThread.py:78 + +while count < 4 : + This is quite racy. There is nothing that guarantees that we will stop on the breakpoint at least four times. In particular, it can happen that all 8 threads hit the breakpoint simultaneously, and then you have only one stop of the whole process. If you want to have more than one stop you need to either: - make sure that no two threads can hit the breakpoint simultaneously (e.g., add some kind of a mutex in the inferior), - or count the stops more diligently (after each stop, count the number of threads stopped at the location, as in e.g. TestConcurrentEvents) However, if the purpose of this test is to make sure the breakpoint applies to newly-created threads, then I think you don't need than many threads, and one thread would suffice. Then the test could be: - set a breakpoint - inferior spins up a thread and hits it - remove/disable the breakpoint - inferior joins the first thread - inferior spins up another thread which does *not* hit the breakpoint This should make debugging any failures easier as the test is more deterministic. Comment at: packages/Python/lldbsuite/test/functionalities/breakpoint/hardware_breakpoints/hardware_breakpoint_on_multiple_threads/TestHWBreakMultiThread.py:108 +# Continue. Program should exit without stopping anywhere. +self.runCmd("process continue") It looks like you are missing an assertion to verify that the exit actually happened here. Comment at: source/Plugins/Process/Linux/NativeRegisterContextLinux_arm.cpp:362 + if (log) +log->Printf("NativeRegisterContextLinux_arm::%s()", __FUNCTION__); + LLDB_LOG (or just remove the log statement as it does not convey much information). Comment at: source/Plugins/Process/Linux/NativeRegisterContextLinux_arm.cpp:474 + if (log) +log->Printf("NativeRegisterContextLinux_arm64::%s()", __FUNCTION__); LLDB_LOG (and in below function as well) https://reviews.llvm.org/D29669 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] r295712 - Log: Fix race in accessing the stream variable
Author: labath Date: Tue Feb 21 03:58:23 2017 New Revision: 295712 URL: http://llvm.org/viewvc/llvm-project?rev=295712&view=rev Log: Log: Fix race in accessing the stream variable Summary: The code was attempting to copy the shared pointer member in order to guarantee atomicity, but this is not enough. Instead, protect the pointer with a proper read-write mutex. This bug was present here for a long time, but my recent refactors must have altered the timings slightly, such that now this fails fairly often when running the tests: the test runner runs the "log disable" command just as the thread monitoring the lldb-server child is about to report that the server has exited. I add a test case for this. It's not possible to reproduce the race deterministically in normal circumstances, but I have verified that before the fix, the test failed when run under tsan, and was running fine afterwards. Reviewers: clayborg, zturner Subscribers: lldb-commits Differential Revision: https://reviews.llvm.org/D30168 Modified: lldb/trunk/include/lldb/Core/Log.h lldb/trunk/source/Core/Log.cpp lldb/trunk/unittests/Core/LogTest.cpp Modified: lldb/trunk/include/lldb/Core/Log.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/Log.h?rev=295712&r1=295711&r2=295712&view=diff == --- lldb/trunk/include/lldb/Core/Log.h (original) +++ lldb/trunk/include/lldb/Core/Log.h Tue Feb 21 03:58:23 2017 @@ -18,6 +18,7 @@ // Other libraries and framework includes #include "llvm/Support/FormatVariadic.h" +#include "llvm/Support/RWMutex.h" // C++ Includes #include #include @@ -184,14 +185,22 @@ public: bool GetVerbose() const; void SetStream(const std::shared_ptr &stream_sp) { +llvm::sys::ScopedWriter lock(m_stream_mutex); m_stream_sp = stream_sp; } + std::shared_ptr GetStream() { +llvm::sys::ScopedReader lock(m_stream_mutex); +return m_stream_sp; + } + protected: //-- // Member variables //-- + llvm::sys::RWMutex m_stream_mutex; // Protects m_stream_sp std::shared_ptr m_stream_sp; + Flags m_options; Flags m_mask_bits; Modified: lldb/trunk/source/Core/Log.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/Log.cpp?rev=295712&r1=295711&r2=295712&view=diff == --- lldb/trunk/source/Core/Log.cpp (original) +++ lldb/trunk/source/Core/Log.cpp Tue Feb 21 03:58:23 2017 @@ -400,7 +400,7 @@ void Log::WriteHeader(llvm::raw_ostream void Log::WriteMessage(const std::string &message) { // Make a copy of our stream shared pointer in case someone disables our // log while we are logging and releases the stream - auto stream_sp = m_stream_sp; + auto stream_sp = GetStream(); if (!stream_sp) return; Modified: lldb/trunk/unittests/Core/LogTest.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Core/LogTest.cpp?rev=295712&r1=295711&r2=295712&view=diff == --- lldb/trunk/unittests/Core/LogTest.cpp (original) +++ lldb/trunk/unittests/Core/LogTest.cpp Tue Feb 21 03:58:23 2017 @@ -13,6 +13,7 @@ #include "lldb/Host/Host.h" #include "lldb/Utility/StreamString.h" #include "llvm/Support/ManagedStatic.h" +#include using namespace lldb; using namespace lldb_private; @@ -26,6 +27,8 @@ static constexpr uint32_t default_flags static Log::Channel test_channel(test_categories, default_flags); struct LogChannelTest : public ::testing::Test { + void TearDown() override { Log::DisableAllLogChannels(nullptr); } + static void SetUpTestCase() { Log::Register("chan", test_channel); } @@ -170,3 +173,26 @@ TEST_F(LogChannelTest, List) { EXPECT_FALSE(Log::ListChannelCategories("chanchan", str)); EXPECT_EQ("Invalid log channel 'chanchan'.\n", str.GetString().str()); } + +TEST_F(LogChannelTest, LogThread) { + // Test that we are able to concurrently write to a log channel and disable + // it. + std::string message; + std::shared_ptr stream_sp( + new llvm::raw_string_ostream(message)); + StreamString err; + EXPECT_TRUE(Log::EnableLogChannel(stream_sp, 0, "chan", nullptr, err)); + + Log *log = test_channel.GetLogIfAll(FOO); + + // Start logging on one thread. Concurrently, try disabling the log channel. + std::thread log_thread([log] { LLDB_LOG(log, "Hello World"); }); + EXPECT_TRUE(Log::DisableLogChannel("chan", nullptr, err)); + log_thread.join(); + + // The log thread either managed to write to the log in time, or it didn't. In + // either case, we should not trip any undefined behavior (run the test under + // TSAN to verify this). + EXPECT_TRUE(stream_sp->str() == "" || stream_sp->str() == "Hello World\n") + << "str(): " << stream_sp-
[Lldb-commits] [PATCH] D30168: Log: Fix race in accessing the stream variable
This revision was automatically updated to reflect the committed changes. Closed by commit rL295712: Log: Fix race in accessing the stream variable (authored by labath). Changed prior to commit: https://reviews.llvm.org/D30168?vs=89120&id=89178#toc Repository: rL LLVM https://reviews.llvm.org/D30168 Files: lldb/trunk/include/lldb/Core/Log.h lldb/trunk/source/Core/Log.cpp lldb/trunk/unittests/Core/LogTest.cpp Index: lldb/trunk/unittests/Core/LogTest.cpp === --- lldb/trunk/unittests/Core/LogTest.cpp +++ lldb/trunk/unittests/Core/LogTest.cpp @@ -13,6 +13,7 @@ #include "lldb/Host/Host.h" #include "lldb/Utility/StreamString.h" #include "llvm/Support/ManagedStatic.h" +#include using namespace lldb; using namespace lldb_private; @@ -26,6 +27,8 @@ static Log::Channel test_channel(test_categories, default_flags); struct LogChannelTest : public ::testing::Test { + void TearDown() override { Log::DisableAllLogChannels(nullptr); } + static void SetUpTestCase() { Log::Register("chan", test_channel); } @@ -170,3 +173,26 @@ EXPECT_FALSE(Log::ListChannelCategories("chanchan", str)); EXPECT_EQ("Invalid log channel 'chanchan'.\n", str.GetString().str()); } + +TEST_F(LogChannelTest, LogThread) { + // Test that we are able to concurrently write to a log channel and disable + // it. + std::string message; + std::shared_ptr stream_sp( + new llvm::raw_string_ostream(message)); + StreamString err; + EXPECT_TRUE(Log::EnableLogChannel(stream_sp, 0, "chan", nullptr, err)); + + Log *log = test_channel.GetLogIfAll(FOO); + + // Start logging on one thread. Concurrently, try disabling the log channel. + std::thread log_thread([log] { LLDB_LOG(log, "Hello World"); }); + EXPECT_TRUE(Log::DisableLogChannel("chan", nullptr, err)); + log_thread.join(); + + // The log thread either managed to write to the log in time, or it didn't. In + // either case, we should not trip any undefined behavior (run the test under + // TSAN to verify this). + EXPECT_TRUE(stream_sp->str() == "" || stream_sp->str() == "Hello World\n") + << "str(): " << stream_sp->str(); +} Index: lldb/trunk/source/Core/Log.cpp === --- lldb/trunk/source/Core/Log.cpp +++ lldb/trunk/source/Core/Log.cpp @@ -400,7 +400,7 @@ void Log::WriteMessage(const std::string &message) { // Make a copy of our stream shared pointer in case someone disables our // log while we are logging and releases the stream - auto stream_sp = m_stream_sp; + auto stream_sp = GetStream(); if (!stream_sp) return; Index: lldb/trunk/include/lldb/Core/Log.h === --- lldb/trunk/include/lldb/Core/Log.h +++ lldb/trunk/include/lldb/Core/Log.h @@ -18,6 +18,7 @@ // Other libraries and framework includes #include "llvm/Support/FormatVariadic.h" +#include "llvm/Support/RWMutex.h" // C++ Includes #include #include @@ -184,14 +185,22 @@ bool GetVerbose() const; void SetStream(const std::shared_ptr &stream_sp) { +llvm::sys::ScopedWriter lock(m_stream_mutex); m_stream_sp = stream_sp; } + std::shared_ptr GetStream() { +llvm::sys::ScopedReader lock(m_stream_mutex); +return m_stream_sp; + } + protected: //-- // Member variables //-- + llvm::sys::RWMutex m_stream_mutex; // Protects m_stream_sp std::shared_ptr m_stream_sp; + Flags m_options; Flags m_mask_bits; Index: lldb/trunk/unittests/Core/LogTest.cpp === --- lldb/trunk/unittests/Core/LogTest.cpp +++ lldb/trunk/unittests/Core/LogTest.cpp @@ -13,6 +13,7 @@ #include "lldb/Host/Host.h" #include "lldb/Utility/StreamString.h" #include "llvm/Support/ManagedStatic.h" +#include using namespace lldb; using namespace lldb_private; @@ -26,6 +27,8 @@ static Log::Channel test_channel(test_categories, default_flags); struct LogChannelTest : public ::testing::Test { + void TearDown() override { Log::DisableAllLogChannels(nullptr); } + static void SetUpTestCase() { Log::Register("chan", test_channel); } @@ -170,3 +173,26 @@ EXPECT_FALSE(Log::ListChannelCategories("chanchan", str)); EXPECT_EQ("Invalid log channel 'chanchan'.\n", str.GetString().str()); } + +TEST_F(LogChannelTest, LogThread) { + // Test that we are able to concurrently write to a log channel and disable + // it. + std::string message; + std::shared_ptr stream_sp( + new llvm::raw_string_ostream(message)); + StreamString err; + EXPECT_TRUE(Log::EnableLogChannel(stream_sp, 0, "chan", nullptr, err)); + + Log *log = test_channel.GetLogIfAll(FOO); + + // Start logging on one thread. Concurrently, try disabling the log channel. + std::thread log_thread([log] { L
[Lldb-commits] [PATCH] D30172: Replace WINLOG_*** macros with LLDB_LOG
amccarth accepted this revision. amccarth added a comment. This revision is now accepted and ready to land. LGTM. Maybe we have too many categories. Comment at: source/Plugins/Process/Windows/Common/DebuggerThread.cpp:207 if (m_active_exception.get()) { -WINLOG_IFANY(WINDOWS_LOG_PROCESS | WINDOWS_LOG_EXCEPTION, - "StopDebugging masking active exception"); - +LLDB_LOG(log, "masking active exception"); ContinueAsyncException(ExceptionResult::MaskException); This looks like the only possibly controversial change in this file. This log message will no longer happen for those logging just exception-related events. I guess that's acceptable as it's unlikely. Comment at: source/Plugins/Process/Windows/Common/ProcessWindows.cpp:873 + log, + "Hit loader breakpoint at address {0:x}, setting initial stop event.", + record.GetExceptionAddress()); This one and the next one seem unfortunate, as the messages are indeed something you'd expect to see when logging breakpoints. It makes me wonder if all these categories are worth the effort. https://reviews.llvm.org/D30172 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D30234: Reformat inferior's main.cpp in lldb-server test
eugene created this revision. eugene added a project: LLDB. main.cpp is complete mess of tabs and spaces. This change brings it to compliance with LLVM coding style. https://reviews.llvm.org/D30234 Files: packages/Python/lldbsuite/test/tools/lldb-server/main.cpp Index: packages/Python/lldbsuite/test/tools/lldb-server/main.cpp === --- packages/Python/lldbsuite/test/tools/lldb-server/main.cpp +++ packages/Python/lldbsuite/test/tools/lldb-server/main.cpp @@ -1,3 +1,12 @@ +//===-- main.cpp *- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===--===// + #include #include #include @@ -15,22 +24,22 @@ #if defined(__APPLE__) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2) -int pthread_threadid_np(pthread_t,__uint64_t*); +int pthread_threadid_np(pthread_t, __uint64_t *); #elif defined(__linux__) #include #endif -static const char *const RETVAL_PREFIX = "retval:"; -static const char *const SLEEP_PREFIX= "sleep:"; -static const char *const STDERR_PREFIX = "stderr:"; -static const char *const SET_MESSAGE_PREFIX = "set-message:"; -static const char *const PRINT_MESSAGE_COMMAND = "print-message:"; -static const char *const GET_DATA_ADDRESS_PREFIX = "get-data-address-hex:"; -static const char *const GET_STACK_ADDRESS_COMMAND = "get-stack-address-hex:"; -static const char *const GET_HEAP_ADDRESS_COMMAND= "get-heap-address-hex:"; +static const char *const RETVAL_PREFIX = "retval:"; +static const char *const SLEEP_PREFIX = "sleep:"; +static const char *const STDERR_PREFIX = "stderr:"; +static const char *const SET_MESSAGE_PREFIX = "set-message:"; +static const char *const PRINT_MESSAGE_COMMAND = "print-message:"; +static const char *const GET_DATA_ADDRESS_PREFIX = "get-data-address-hex:"; +static const char *const GET_STACK_ADDRESS_COMMAND = "get-stack-address-hex:"; +static const char *const GET_HEAP_ADDRESS_COMMAND = "get-heap-address-hex:"; -static const char *const GET_CODE_ADDRESS_PREFIX = "get-code-address-hex:"; -static const char *const CALL_FUNCTION_PREFIX= "call-function:"; +static const char *const GET_CODE_ADDRESS_PREFIX = "get-code-address-hex:"; +static const char *const CALL_FUNCTION_PREFIX = "call-function:"; static const char *const THREAD_PREFIX = "thread:"; static const char *const THREAD_COMMAND_NEW = "new"; @@ -50,342 +59,301 @@ static volatile char g_c1 = '0'; static volatile char g_c2 = '1'; -static void -print_thread_id () -{ - // Put in the right magic here for your platform to spit out the thread id (tid) that debugserver/lldb-gdbserver would see as a TID. - // Otherwise, let the else clause print out the unsupported text so that the unit test knows to skip verifying thread ids. +static void print_thread_id() { +// Put in the right magic here for your platform to spit out the thread id (tid) +// that debugserver/lldb-gdbserver would see as a TID. Otherwise, let the else +// clause print out the unsupported text so that the unit test knows to skip +// verifying thread ids. #if defined(__APPLE__) - __uint64_t tid = 0; - pthread_threadid_np(pthread_self(), &tid); - printf ("%" PRIx64, tid); -#elif defined (__linux__) - // This is a call to gettid() via syscall. - printf ("%" PRIx64, static_cast (syscall (__NR_gettid))); + __uint64_t tid = 0; + pthread_threadid_np(pthread_self(), &tid); + printf("%" PRIx64, tid); +#elif defined(__linux__) + // This is a call to gettid() via syscall. + printf("%" PRIx64, static_cast(syscall(__NR_gettid))); #else - printf("{no-tid-support}"); + printf("{no-tid-support}"); #endif } -static void -signal_handler (int signo) -{ - const char *signal_name = nullptr; - switch (signo) - { - case SIGUSR1: signal_name = "SIGUSR1"; break; - case SIGSEGV: signal_name = "SIGSEGV"; break; - default: signal_name = nullptr; - } - - // Print notice that we received the signal on a given thread. - pthread_mutex_lock (&g_print_mutex); - if (signal_name) - printf ("received %s on thread id: ", signal_name); - else - printf ("received signo %d (%s) on thread id: ", signo, strsignal (signo)); - print_thread_id (); - printf ("\n"); - pthread_mutex_unlock (&g_print_mutex); - - // Reset the signal handler if we're one of the expected signal handlers. - switch (signo) - { -case SIGSEGV: - if (g_is_segfaulting) - { - // Fix up the pointer we're writing to. This needs to happen if nothing intercepts the SIGSEGV - // (i.e. if somebody runs this from the command line). - longjmp(g_jump_buffer, 1); - } -break; -case SIGUSR1: -if (g_is_segfaulti
[Lldb-commits] [PATCH] D30234: Reformat inferior's main.cpp in lldb-server test
jmajors accepted this revision. jmajors added a comment. This revision is now accepted and ready to land. Do we have any plans to put something like cpplint into effect? https://reviews.llvm.org/D30234 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D30234: Reformat inferior's main.cpp in lldb-server test
eugene added a comment. In https://reviews.llvm.org/D30234#682990, @jmajors wrote: > Do we have any plans to put something like cpplint into effect? First step would be to have warning free build. Then we can turn "warnings as errors" on. https://reviews.llvm.org/D30234 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D30234: Reformat inferior's main.cpp in lldb-server test
jingham added a comment. It looks like clang-format wasn't run over this file as it was over all the main lldb sources in the infamous universal code reformatting. That seems odd. Anyway, it might be better just to do that to this file using the top level .clang-format. Note that you are making several choices which were not the choices made by clang-format using the .clang-format file that was used to implement this reformatting. We probably shouldn't revise that decision piecemeal. Comment at: packages/Python/lldbsuite/test/tools/lldb-server/main.cpp:32-42 +static const char *const RETVAL_PREFIX = "retval:"; +static const char *const SLEEP_PREFIX = "sleep:"; +static const char *const STDERR_PREFIX = "stderr:"; +static const char *const SET_MESSAGE_PREFIX = "set-message:"; +static const char *const PRINT_MESSAGE_COMMAND = "print-message:"; +static const char *const GET_DATA_ADDRESS_PREFIX = "get-data-address-hex:"; +static const char *const GET_STACK_ADDRESS_COMMAND = "get-stack-address-hex:"; This change seems a shame, the original was much easier to read. Comment at: packages/Python/lldbsuite/test/tools/lldb-server/main.cpp:62 -static void -print_thread_id () -{ - // Put in the right magic here for your platform to spit out the thread id (tid) that debugserver/lldb-gdbserver would see as a TID. - // Otherwise, let the else clause print out the unsupported text so that the unit test knows to skip verifying thread ids. +static void print_thread_id() { +// Put in the right magic here for your platform to spit out the thread id (tid) clang-format moved the initial { for functions into the function definition line universally when it was run over the lldb sources. If we want to revise that decision, and go back to the initial function curly starting a line, that would be fine by me, but I don't think we should do it piecemeal. Ditto for separating the return type & function name onto separate lines. That was the way we did it originally, but the clang-format style that was chosen for the reformatting undid that. I much prefer the way you changed it to here, but that's a decision we should make globally, not file by file. https://reviews.llvm.org/D30234 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D30234: Reformat inferior's main.cpp in lldb-server test
jingham added a comment. Actually, we didn't run the clang-format over the test case source files, since we didn't want to have to deal with the possible failures resulting. So just clang-formatting this file is probably the right way to go. https://reviews.llvm.org/D30234 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] Buildbot numbers for the week of 02/12/2017 - 02/18/2017
Hello everyone, Below are some buildbot numbers for the last week of 02/12/2017 - 02/18/2017. Please see the same data in attached csv files: The longest time each builder was red during the last week; "Status change ratio" by active builder (percent of builds that changed the builder status from greed to red or from red to green); Count of commits by project; Number of completed builds, failed builds and average build time for successful builds per active builder; Average waiting time for a revision to get build result per active builder (response time). Thanks Galina The longest time each builder was red during the last week: buildername | was_red +- lldb-x86_64-ubuntu-14.04-android | 63:39:17 clang-x64-ninja-win7 | 59:12:13 lldb-x86_64-darwin-13.4| 49:09:06 lldb-windows7-android | 24:51:31 sanitizer-ppc64le-linux| 22:55:53 perf-x86_64-penryn-O3-polly-before-vectorizer | 17:56:35 libcxx-libcxxabi-libunwind-aarch64-linux-noexceptions | 17:39:22 lldb-x86_64-ubuntu-14.04-cmake | 17:10:44 libcxx-libcxxabi-libunwind-aarch64-linux | 16:13:50 clang-x86-windows-msvc2015 | 15:28:02 perf-x86_64-penryn-O3 | 14:24:10 sanitizer-x86_64-linux-bootstrap | 12:39:53 clang-cmake-mipsel | 12:39:34 sanitizer-x86_64-linux-fast| 12:00:54 clang-cmake-armv7-a15-full | 11:30:23 sanitizer-x86_64-linux | 11:28:54 clang-cmake-thumbv7-a15-full-sh| 11:27:43 clang-cmake-armv7-a15 | 11:14:19 clang-with-lto-ubuntu | 11:11:05 clang-cuda-build | 10:58:26 clang-cmake-thumbv7-a15| 10:51:21 perf-x86_64-penryn-O3-polly-unprofitable | 10:29:50 perf-x86_64-penryn-O3-polly-parallel-fast | 10:29:36 perf-x86_64-penryn-O3-polly-before-vectorizer-detect-only | 10:21:45 clang-with-thin-lto-ubuntu | 10:16:24 clang-cmake-armv7-a15-selfhost-neon| 10:08:44 perf-x86_64-penryn-O3-polly| 09:50:26 sanitizer-ppc64be-linux| 09:48:48 perf-x86_64-penryn-O3-polly-fast | 09:05:48 perf-x86_64-penryn-O3-polly-before-vectorizer-unprofitable | 08:54:57 clang-ppc64le-linux-multistage | 06:49:12 clang-x86_64-debian-fast | 06:33:05 clang-cmake-armv7-a15-selfhost | 06:25:29 clang-lld-x86_64-2stage| 06:12:05 clang-cmake-mips | 05:54:04 clang-ppc64le-linux| 05:42:01 clang-cmake-aarch64-full | 05:34:30 clang-ppc64be-linux-multistage | 05:19:27 libcxx-libcxxabi-x86_64-linux-ubuntu-asan | 05:15:12 clang-x86_64-linux-selfhost-modules-2 | 04:11:31 lldb-x86_64-ubuntu-14.04-buildserver | 04:07:45 libcxx-libcxxabi-x86_64-linux-ubuntu-tsan | 03:47:39 lldb-amd64-ninja-netbsd7 | 03:44:56 clang-x86_64-linux-selfhost-modules| 03:42:39 llvm-mips-linux| 03:12:36 polly-amd64-linux | 02:56:44 clang-ppc64le-linux-lnt| 02:55:18 lldb-amd64-ninja-freebsd11 | 02:54:47 polly-arm-linux| 02:49:00 llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast | 02:45:53 clang-ppc64be-linux| 02:39:11 libcxx-libcxxabi-x86_64-linux-ubuntu-msan | 02:32:26 libcxx-libcxxabi-x86_64-linux-ubuntu-ubsan | 02:23:26 clang-atom-d525-fedora-rel | 02:22:54 clang-cmake-aarch64-42vma | 02:21:28 clang-cmake-aarch64-lld| 02:17:45 clang-cmake-aarch64-39vma | 01:56:36 clang-ppc64be-linux-lnt| 01:49:50 libcxx-libcxxabi-libunwind-x86_64-linux-debian | 01:48:30 clang-s390x-linux
[Lldb-commits] Buildbot numbers for the week of 02/05/2017 - 02/11/2017
Hello everyone, Below are some buildbot numbers for the week of 02/05/2017 - 02/11/2017. Please see the same data in attached csv files: The longest time each builder was red during the last week; "Status change ratio" by active builder (percent of builds that changed the builder status from greed to red or from red to green); Count of commits by project; Number of completed builds, failed builds and average build time for successful builds per active builder; Average waiting time for a revision to get build result per active builder (response time). Thanks Galina The longest time each builder was red during the last week: buildername | was_red +- lld-x86_64-win7| 46:33:59 libcxx-libcxxabi-x86_64-linux-ubuntu-ubsan | 39:43:26 sanitizer-x86_64-linux | 35:32:15 sanitizer-ppc64le-linux| 32:43:54 llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast | 29:14:54 clang-x86-windows-msvc2015 | 25:56:55 sanitizer-x86_64-linux-bootstrap | 25:45:40 clang-cmake-aarch64-quick | 21:46:28 clang-s390x-linux | 16:33:32 clang-cmake-thumbv7-a15-full-sh| 16:28:14 llvm-mips-linux| 15:52:35 sanitizer-x86_64-linux-fast| 10:58:24 sanitizer-x86_64-linux-fuzzer | 10:43:53 lldb-x86_64-ubuntu-14.04-android | 09:38:04 clang-cmake-mips | 09:23:42 libcxx-libcxxabi-libunwind-x86_64-linux-debian | 08:58:08 clang-cmake-armv7-a15-selfhost | 07:06:04 lldb-x86_64-darwin-13.4| 06:48:29 clang-ppc64le-linux-multistage | 06:33:54 clang-cmake-aarch64-full | 06:26:59 perf-x86_64-penryn-O3-polly| 06:20:04 clang-cmake-aarch64-lld| 06:17:55 clang-ppc64be-linux-multistage | 06:01:18 clang-lld-x86_64-2stage| 05:44:44 clang-ppc64le-linux-lnt| 05:27:25 clang-ppc64le-linux| 05:10:33 clang-x86_64-linux-selfhost-modules| 04:50:04 clang-ppc64be-linux-lnt| 04:50:02 clang-cuda-build | 04:49:19 clang-cmake-mipsel | 04:45:50 clang-x86_64-debian-fast | 04:40:33 clang-hexagon-elf | 04:28:15 clang-ppc64be-linux| 04:18:02 clang-cmake-armv7-a15-full | 04:17:34 clang-cmake-aarch64-39vma | 04:15:56 clang-cmake-aarch64-42vma | 04:13:41 clang-cmake-armv7-a15 | 04:11:52 llvm-hexagon-elf | 04:08:13 clang-x64-ninja-win7 | 03:57:04 clang-cmake-thumbv7-a15| 03:53:12 clang-cmake-armv7-a15-selfhost-neon| 03:35:19 clang-with-thin-lto-ubuntu | 03:26:46 clang-with-lto-ubuntu | 03:17:06 lldb-x86_64-ubuntu-14.04-buildserver | 02:42:39 sanitizer-x86_64-linux-autoconf| 02:41:06 polly-amd64-linux | 02:40:22 clang-atom-d525-fedora-rel | 02:28:32 libcxx-libcxxabi-x86_64-linux-ubuntu-gcc49-cxx11 | 02:28:08 libcxx-libcxxabi-x86_64-linux-ubuntu-tsan | 02:16:43 clang-x86_64-linux-selfhost-modules-2 | 02:16:14 perf-x86_64-penryn-O3-polly-unprofitable | 02:14:43 libcxx-libcxxabi-x86_64-linux-ubuntu-asan | 02:11:03 lld-x86_64-darwin13| 02:09:15 lldb-windows7-android | 01:59:06 lldb-amd64-ninja-netbsd7 | 01:58:38 libcxx-libcxxabi-x86_64-linux-ubuntu-cxx14 | 01:50:30 polly-arm-linux| 01:48:59 sanitizer-ppc64be-linux| 01:43:47 clang-native-arm-lnt | 01:39:14 libcxx-libcxxabi-libunwind-x8
[Lldb-commits] [PATCH] D30234: Reformat inferior's main.cpp in lldb-server test
eugene updated this revision to Diff 89311. https://reviews.llvm.org/D30234 Files: packages/Python/lldbsuite/test/tools/lldb-server/main.cpp Index: packages/Python/lldbsuite/test/tools/lldb-server/main.cpp === --- packages/Python/lldbsuite/test/tools/lldb-server/main.cpp +++ packages/Python/lldbsuite/test/tools/lldb-server/main.cpp @@ -1,36 +1,45 @@ -#include -#include +//===-- main.cpp *- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===--===// + #include #include -#include #include #include #include #include #include #include #include #include +#include +#include +#include #include #if defined(__APPLE__) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2) -int pthread_threadid_np(pthread_t,__uint64_t*); +int pthread_threadid_np(pthread_t, __uint64_t *); #elif defined(__linux__) #include #endif -static const char *const RETVAL_PREFIX = "retval:"; -static const char *const SLEEP_PREFIX= "sleep:"; -static const char *const STDERR_PREFIX = "stderr:"; -static const char *const SET_MESSAGE_PREFIX = "set-message:"; -static const char *const PRINT_MESSAGE_COMMAND = "print-message:"; -static const char *const GET_DATA_ADDRESS_PREFIX = "get-data-address-hex:"; -static const char *const GET_STACK_ADDRESS_COMMAND = "get-stack-address-hex:"; -static const char *const GET_HEAP_ADDRESS_COMMAND= "get-heap-address-hex:"; +static const char *const RETVAL_PREFIX = "retval:"; +static const char *const SLEEP_PREFIX = "sleep:"; +static const char *const STDERR_PREFIX = "stderr:"; +static const char *const SET_MESSAGE_PREFIX = "set-message:"; +static const char *const PRINT_MESSAGE_COMMAND = "print-message:"; +static const char *const GET_DATA_ADDRESS_PREFIX = "get-data-address-hex:"; +static const char *const GET_STACK_ADDRESS_COMMAND = "get-stack-address-hex:"; +static const char *const GET_HEAP_ADDRESS_COMMAND = "get-heap-address-hex:"; -static const char *const GET_CODE_ADDRESS_PREFIX = "get-code-address-hex:"; -static const char *const CALL_FUNCTION_PREFIX= "call-function:"; +static const char *const GET_CODE_ADDRESS_PREFIX = "get-code-address-hex:"; +static const char *const CALL_FUNCTION_PREFIX = "call-function:"; static const char *const THREAD_PREFIX = "thread:"; static const char *const THREAD_COMMAND_NEW = "new"; @@ -50,342 +59,299 @@ static volatile char g_c1 = '0'; static volatile char g_c2 = '1'; -static void -print_thread_id () -{ - // Put in the right magic here for your platform to spit out the thread id (tid) that debugserver/lldb-gdbserver would see as a TID. - // Otherwise, let the else clause print out the unsupported text so that the unit test knows to skip verifying thread ids. +static void print_thread_id() { +// Put in the right magic here for your platform to spit out the thread id (tid) +// that debugserver/lldb-gdbserver would see as a TID. Otherwise, let the else +// clause print out the unsupported text so that the unit test knows to skip +// verifying thread ids. #if defined(__APPLE__) - __uint64_t tid = 0; - pthread_threadid_np(pthread_self(), &tid); - printf ("%" PRIx64, tid); -#elif defined (__linux__) - // This is a call to gettid() via syscall. - printf ("%" PRIx64, static_cast (syscall (__NR_gettid))); + __uint64_t tid = 0; + pthread_threadid_np(pthread_self(), &tid); + printf("%" PRIx64, tid); +#elif defined(__linux__) + // This is a call to gettid() via syscall. + printf("%" PRIx64, static_cast(syscall(__NR_gettid))); #else - printf("{no-tid-support}"); + printf("{no-tid-support}"); #endif } -static void -signal_handler (int signo) -{ - const char *signal_name = nullptr; - switch (signo) - { - case SIGUSR1: signal_name = "SIGUSR1"; break; - case SIGSEGV: signal_name = "SIGSEGV"; break; - default: signal_name = nullptr; - } - - // Print notice that we received the signal on a given thread. - pthread_mutex_lock (&g_print_mutex); - if (signal_name) - printf ("received %s on thread id: ", signal_name); - else - printf ("received signo %d (%s) on thread id: ", signo, strsignal (signo)); - print_thread_id (); - printf ("\n"); - pthread_mutex_unlock (&g_print_mutex); - - // Reset the signal handler if we're one of the expected signal handlers. - switch (signo) - { -case SIGSEGV: - if (g_is_segfaulting) - { - // Fix up the pointer we're writing to. This needs to happen if nothing intercepts the SIGSEGV - // (i.e. if somebody runs this from the command line). - longjmp(g_jump_buffer, 1); - } -break; -case SIGUSR1: -if (g_is
[Lldb-commits] [PATCH] D30234: Reformat inferior's main.cpp in lldb-server test
eugene updated this revision to Diff 89312. https://reviews.llvm.org/D30234 Files: packages/Python/lldbsuite/test/tools/lldb-server/main.cpp Index: packages/Python/lldbsuite/test/tools/lldb-server/main.cpp === --- packages/Python/lldbsuite/test/tools/lldb-server/main.cpp +++ packages/Python/lldbsuite/test/tools/lldb-server/main.cpp @@ -1,3 +1,12 @@ +//===-- main.cpp *- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===--===// + #include #include #include @@ -15,22 +24,22 @@ #if defined(__APPLE__) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2) -int pthread_threadid_np(pthread_t,__uint64_t*); +int pthread_threadid_np(pthread_t, __uint64_t *); #elif defined(__linux__) #include #endif -static const char *const RETVAL_PREFIX = "retval:"; -static const char *const SLEEP_PREFIX= "sleep:"; -static const char *const STDERR_PREFIX = "stderr:"; -static const char *const SET_MESSAGE_PREFIX = "set-message:"; -static const char *const PRINT_MESSAGE_COMMAND = "print-message:"; -static const char *const GET_DATA_ADDRESS_PREFIX = "get-data-address-hex:"; -static const char *const GET_STACK_ADDRESS_COMMAND = "get-stack-address-hex:"; -static const char *const GET_HEAP_ADDRESS_COMMAND= "get-heap-address-hex:"; +static const char *const RETVAL_PREFIX = "retval:"; +static const char *const SLEEP_PREFIX = "sleep:"; +static const char *const STDERR_PREFIX = "stderr:"; +static const char *const SET_MESSAGE_PREFIX = "set-message:"; +static const char *const PRINT_MESSAGE_COMMAND = "print-message:"; +static const char *const GET_DATA_ADDRESS_PREFIX = "get-data-address-hex:"; +static const char *const GET_STACK_ADDRESS_COMMAND = "get-stack-address-hex:"; +static const char *const GET_HEAP_ADDRESS_COMMAND = "get-heap-address-hex:"; -static const char *const GET_CODE_ADDRESS_PREFIX = "get-code-address-hex:"; -static const char *const CALL_FUNCTION_PREFIX= "call-function:"; +static const char *const GET_CODE_ADDRESS_PREFIX = "get-code-address-hex:"; +static const char *const CALL_FUNCTION_PREFIX = "call-function:"; static const char *const THREAD_PREFIX = "thread:"; static const char *const THREAD_COMMAND_NEW = "new"; @@ -50,342 +59,301 @@ static volatile char g_c1 = '0'; static volatile char g_c2 = '1'; -static void -print_thread_id () -{ - // Put in the right magic here for your platform to spit out the thread id (tid) that debugserver/lldb-gdbserver would see as a TID. - // Otherwise, let the else clause print out the unsupported text so that the unit test knows to skip verifying thread ids. +static void print_thread_id() { +// Put in the right magic here for your platform to spit out the thread id (tid) +// that debugserver/lldb-gdbserver would see as a TID. Otherwise, let the else +// clause print out the unsupported text so that the unit test knows to skip +// verifying thread ids. #if defined(__APPLE__) - __uint64_t tid = 0; - pthread_threadid_np(pthread_self(), &tid); - printf ("%" PRIx64, tid); -#elif defined (__linux__) - // This is a call to gettid() via syscall. - printf ("%" PRIx64, static_cast (syscall (__NR_gettid))); + __uint64_t tid = 0; + pthread_threadid_np(pthread_self(), &tid); + printf("%" PRIx64, tid); +#elif defined(__linux__) + // This is a call to gettid() via syscall. + printf("%" PRIx64, static_cast(syscall(__NR_gettid))); #else - printf("{no-tid-support}"); + printf("{no-tid-support}"); #endif } -static void -signal_handler (int signo) -{ - const char *signal_name = nullptr; - switch (signo) - { - case SIGUSR1: signal_name = "SIGUSR1"; break; - case SIGSEGV: signal_name = "SIGSEGV"; break; - default: signal_name = nullptr; - } - - // Print notice that we received the signal on a given thread. - pthread_mutex_lock (&g_print_mutex); - if (signal_name) - printf ("received %s on thread id: ", signal_name); - else - printf ("received signo %d (%s) on thread id: ", signo, strsignal (signo)); - print_thread_id (); - printf ("\n"); - pthread_mutex_unlock (&g_print_mutex); - - // Reset the signal handler if we're one of the expected signal handlers. - switch (signo) - { -case SIGSEGV: - if (g_is_segfaulting) - { - // Fix up the pointer we're writing to. This needs to happen if nothing intercepts the SIGSEGV - // (i.e. if somebody runs this from the command line). - longjmp(g_jump_buffer, 1); - } -break; -case SIGUSR1: -if (g_is_segfaulting) -{ -// Fix up the pointer we're writing to. This is used to test gdb remote signal delivery.
[Lldb-commits] [PATCH] D30234: Reformat inferior's main.cpp in lldb-server test
eugene added a comment. In https://reviews.llvm.org/D30234#683018, @jingham wrote: > Anyway, it might be better just to do that to this file using the top level > .clang-format. Note that you are making several choices which were not the > choices made by clang-format using the .clang-format file that was used to > implement this reformatting. We probably shouldn't revise that decision > piecemeal. It wasn't my intention to revise any formatting decisions made earlier. I just ran 'clang-format -style=file -i main.cpp' assuming that it will actually make the file complaint with the lldb's coding style by using top level .clang-format. Is there any document other than http://llvm.org/docs/CodingStandards.html describing LLDB coding conventions? https://reviews.llvm.org/D30234 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] r295804 - Mark TestDarwinLogBasic.py as an xfail because the logging is
Author: jmolenda Date: Tue Feb 21 20:10:00 2017 New Revision: 295804 URL: http://llvm.org/viewvc/llvm-project?rev=295804&view=rev Log: Mark TestDarwinLogBasic.py as an xfail because the logging is not being picked up; filed to track the work to investigate this. Modified: lldb/trunk/packages/Python/lldbsuite/test/functionalities/darwin_log/basic/TestDarwinLogBasic.py Modified: lldb/trunk/packages/Python/lldbsuite/test/functionalities/darwin_log/basic/TestDarwinLogBasic.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/darwin_log/basic/TestDarwinLogBasic.py?rev=295804&r1=295803&r2=295804&view=diff == --- lldb/trunk/packages/Python/lldbsuite/test/functionalities/darwin_log/basic/TestDarwinLogBasic.py (original) +++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/darwin_log/basic/TestDarwinLogBasic.py Tue Feb 21 20:10:00 2017 @@ -22,6 +22,7 @@ class TestDarwinLogBasic(darwin_log.Darw @decorators.add_test_categories(['pyapi']) @decorators.skipUnlessDarwin @decorators.expectedFailureAll(archs=["i386"], bugnumber="rdar://28655626") +@decorators.expectedFailureAll(bugnumber="rdar://30645203") def test_SBStructuredData_gets_broadcasted(self): """Exercise SBStructuredData API.""" ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D30234: Reformat inferior's main.cpp in lldb-server test
eugene marked an inline comment as done. eugene added inline comments. Comment at: packages/Python/lldbsuite/test/tools/lldb-server/main.cpp:32-42 +static const char *const RETVAL_PREFIX = "retval:"; +static const char *const SLEEP_PREFIX = "sleep:"; +static const char *const STDERR_PREFIX = "stderr:"; +static const char *const SET_MESSAGE_PREFIX = "set-message:"; +static const char *const PRINT_MESSAGE_COMMAND = "print-message:"; +static const char *const GET_DATA_ADDRESS_PREFIX = "get-data-address-hex:"; +static const char *const GET_STACK_ADDRESS_COMMAND = "get-stack-address-hex:"; jingham wrote: > This change seems a shame, the original was much easier to read. Agree. But I think consistency is better than beauty in case of code formatting. Comment at: packages/Python/lldbsuite/test/tools/lldb-server/main.cpp:62 -static void -print_thread_id () -{ - // Put in the right magic here for your platform to spit out the thread id (tid) that debugserver/lldb-gdbserver would see as a TID. - // Otherwise, let the else clause print out the unsupported text so that the unit test knows to skip verifying thread ids. +static void print_thread_id() { +// Put in the right magic here for your platform to spit out the thread id (tid) jingham wrote: > clang-format moved the initial { for functions into the function definition > line universally when it was run over the lldb sources. If we want to revise > that decision, and go back to the initial function curly starting a line, > that would be fine by me, but I don't think we should do it piecemeal. > > Ditto for separating the return type & function name onto separate lines. > That was the way we did it originally, but the clang-format style that was > chosen for the reformatting undid that. I much prefer the way you changed it > to here, but that's a decision we should make globally, not file by file. Could you please elaborate. I just ran 'clang-format -style=file -i main.cpp' assuming that it will actually make the file complaint with the lldb's coding style by using top level .clang-format. https://reviews.llvm.org/D30234 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits