From 369a011cee0779973849a8283fb5d1bdc2e3cb90 Mon Sep 17 00:00:00 2001 From: Michal Gorny Date: Sun, 10 Mar 2019 09:50:36 +0000 Subject: [PATCH] [lldb] [test] Make 2lwp_process_SIGSEGV test more portable Fix 2lwp_process_SIGSEGV NetBSD core test to terminate inside regular function rather than libc call, in order to get reproducible backtrace on different platforms. Differential Revision: https://reviews.llvm.org/D59177 llvm-svn: 355786 --- .../netbsd-core/2lwp_process_SIGSEGV.amd64 | Bin 15816 -> 16344 bytes .../2lwp_process_SIGSEGV.amd64.core | Bin 121208 -> 121216 bytes .../netbsd-core/2lwp_process_SIGSEGV.c | 7 ++++++- .../postmortem/netbsd-core/TestNetBSDCore.py | 6 ++---- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/netbsd-core/2lwp_process_SIGSEGV.amd64 b/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/netbsd-core/2lwp_process_SIGSEGV.amd64 index 00f61dfce84e5a25e5bb6ac149daa90feb67a35a..32a49852215a752fac1582053b51a68c92ce4933 100755 GIT binary patch delta 3822 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 diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/netbsd-core/2lwp_process_SIGSEGV.amd64.core b/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/netbsd-core/2lwp_process_SIGSEGV.amd64.core index f9c2b562fba01bd26aa85f21d6c4f1b96f90dbf1..2dbb299bbfb0a7aefd1534fad97d24cc2ea8e463 100644 GIT binary patch delta 941 zcmY*XZAep57(Va4bMEH68-BEVjd1ogM6>D8%}COS1wmo`2wV7Lf2==|60|VLSr|fu zlM@^Ug-ap(_>*4a;-9n$(I#adN?U|jiVzx_LG>fCd(SM>^}kq1AMQUum`taPR^{p5xHZT;tp<8oZV99>(|j zZqn+W#v7DZ*NkqBRS_E7my|$W1>{Fqom|=tp;)f|h~0QRUlMdl8w?7QN;9~I3!H^Y zEZM=~zA_rJo8o`Ij1%JOXcG2ua^@n)-b(Z5R*VZx5O@VE4X2ik(9h%+#++NmCk}e*w9;AIty% delta 1239 zcmZuwT}TvB6uxKNbzOhM3Fy4N*H$M&YiUf@5A@aoO8Z2XU@4tkaSBA zbgm!(Q=20mCdDMk0+Z;V*gdrh)EE?QM3kRL5WyM@U7TJ zuuJq%1daS`r+9{7wb)D1N715{Er+yk3|A0Br#XZ!076MfObL7rNSY7q)97W7d_r)& z2cpCm29u>I&AC`thY&{u^w@ZXvBOJ3mP3L7;d(FZvc!CEq>+0Szh6-;6^B-FmOl%M zd(A}gdZbtKYQ%xiDBR@*UfgdqL4Z_jyv@NK5yGQ(PlPEkUl{*p9B5GNd8}3wtEBr@ z3#}+UuZi;9f>acq0_IAl3uBcE*kOP~aVR2Mnu^#LiCx2B!q;`cXY!Fgsyua|k}?yZ zNuQv+Uz?>|qg5(sI6Oq&acvgFY*b^N|7l6bSC3QHlHZL@U|IZGS7VUe_D#HwgvFVK zT%`(i6bZ!2Z=-1tnq(q9<09XYJTt)oW*bjhWRa%EOY9JVa|{pI8L;Hs6nT`_oSOJt9+joH8eLn%#7mzjZ)WBW6dbtGmx%1%8CFWGJOR;Jj*Ju|$ z?t#r_|9-F^;&3<7K`DOhfs-(Ztz^eYGO~5?Y~x_iJ?w=o9C@98MM5R4e+{!a`9D@x ztj&dl)}u>}5QG?W0fy$UQI$_CQTWsx1xw9EWKx!{&bX9zp^X)AS_N J;$t7c`VXkhWSam0 diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/netbsd-core/2lwp_process_SIGSEGV.c b/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/netbsd-core/2lwp_process_SIGSEGV.c index ce583aaada94..fcbfa8a6b51c 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/netbsd-core/2lwp_process_SIGSEGV.c +++ b/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/netbsd-core/2lwp_process_SIGSEGV.c @@ -4,9 +4,12 @@ #include #include +volatile int sem = 0; + static void bar() { char F = 'b'; - kill(getpid(), SIGSEGV); // Frame bar + sem = 1; + while (1) continue; // Frame bar } static void foo(void (*boomer)()) { @@ -28,5 +31,7 @@ int main(int argc, char **argv) { stack = malloc(ssize); _lwp_makecontext(&uc, lwp_main, NULL, NULL, stack, ssize); _lwp_create(&uc, 0, &lid); + while (sem != 1) continue; + kill(getpid(), SIGSEGV); _lwp_wait(lid, NULL); } diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/netbsd-core/TestNetBSDCore.py b/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/netbsd-core/TestNetBSDCore.py index 15af96177548..6d3037417a90 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/netbsd-core/TestNetBSDCore.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/netbsd-core/TestNetBSDCore.py @@ -206,11 +206,10 @@ class NetBSD2LWPProcessSigCoreTestCase(NetBSDCoreCommonTestCase): thread = process.GetSelectedThread() self.assertTrue(thread) self.assertEqual(thread.GetThreadID(), 2) - self.assertEqual(thread.GetThreadID(), 2) self.assertEqual(thread.GetStopReason(), lldb.eStopReasonSignal) self.assertEqual(thread.GetStopReasonDataCount(), 1) self.assertEqual(thread.GetStopReasonDataAtIndex(0), signal.SIGSEGV) - backtrace = ["_kill", "bar", "foo", "lwp_main"] + backtrace = ["bar", "foo", "lwp_main"] self.check_backtrace(thread, filename, backtrace) # thread 1 should have the same signal @@ -219,8 +218,7 @@ class NetBSD2LWPProcessSigCoreTestCase(NetBSDCoreCommonTestCase): self.assertEqual(thread.GetStopReasonDataCount(), 1) self.assertEqual(thread.GetStopReasonDataAtIndex(0), signal.SIGSEGV) - @skipIf # TODO: fails with non-netbsd libc @skipIfLLVMTargetMissing("X86") def test_amd64(self): """Test double-threaded amd64 core dump where process is signalled.""" - self.do_test("2lwp_process_SIGSEGV.amd64", pid=141, region_count=24) + self.do_test("2lwp_process_SIGSEGV.amd64", pid=665, region_count=24)