summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Rajotte <jonathan.rajotte-julien@efficios.com>2019-06-20 18:42:39 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-06-21 00:34:33 +0100
commit4bd46974d5b80050a031688ecefa9e60df793163 (patch)
treeddb101f3fa66da42edc9ffba20b6c3007e15c726
parent59ded76363aec9289a007baca52a33b463e02e47 (diff)
downloadopenembedded-core-contrib-4bd46974d5b80050a031688ecefa9e60df793163.tar.gz
lttng-tools: update to 2.10.7
Remove upstreamed patches. Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-kernel/lttng/lttng-tools/0001-Fix-tests-link-libpause_consumer-on-liblttng-ctl.patch35
-rw-r--r--meta/recipes-kernel/lttng/lttng-tools/0001-Skip-when-testapp-is-not-present.patch (renamed from meta/recipes-kernel/lttng/lttng-tools/0004-Skip-when-testapp-is-not-present.patch)0
-rw-r--r--meta/recipes-kernel/lttng/lttng-tools/0002-Fix-check-for-lttng-modules-presence-before-testing.patch (renamed from meta/recipes-kernel/lttng/lttng-tools/0008-Fix-check-for-lttng-modules-presence-before-testing.patch)0
-rw-r--r--meta/recipes-kernel/lttng/lttng-tools/0002-Fix-test-skip-test_getcpu_override-on-single-thread-.patch52
-rw-r--r--meta/recipes-kernel/lttng/lttng-tools/0003-Fix-test-unit-the-tree-origin-can-be-a-symlink-itsel.patch80
-rw-r--r--meta/recipes-kernel/lttng/lttng-tools/0005-Tests-use-modprobe-to-test-for-the-presence-of-lttng.patch176
-rw-r--r--meta/recipes-kernel/lttng/lttng-tools/0006-Tests-check-for-lttng-modules-presence.patch28
-rw-r--r--meta/recipes-kernel/lttng/lttng-tools/0007-Fix-getgrnam-is-not-MT-Safe-use-getgrnam_r.patch347
-rw-r--r--meta/recipes-kernel/lttng/lttng-tools_2.10.7.bb (renamed from meta/recipes-kernel/lttng/lttng-tools_2.10.6.bb)14
9 files changed, 4 insertions, 728 deletions
diff --git a/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-tests-link-libpause_consumer-on-liblttng-ctl.patch b/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-tests-link-libpause_consumer-on-liblttng-ctl.patch
deleted file mode 100644
index df18dc842b..0000000000
--- a/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-tests-link-libpause_consumer-on-liblttng-ctl.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 7244eac44be929fabd6ed1333f96929ef8da564f Mon Sep 17 00:00:00 2001
-From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
-Date: Tue, 19 Mar 2019 17:56:49 +0000
-Subject: [PATCH] fix: tests: link libpause_consumer on liblttng-ctl
-
-This preload test library uses symbols from liblttng-ctl which are
-resolved when preloaded by GLIBC but not by MUSL.
-
-Upstream-Status: Accepted [f667fbd7f8b9512f9943edb2597c226fcc424ee9]
-Backported to 2.11 and 2.10.
-
-Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
----
- tests/regression/tools/notification/Makefile.am | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/tests/regression/tools/notification/Makefile.am b/tests/regression/tools/notification/Makefile.am
-index 41adc69..a352bb8 100644
---- a/tests/regression/tools/notification/Makefile.am
-+++ b/tests/regression/tools/notification/Makefile.am
-@@ -20,7 +20,10 @@ FORCE_SHARED_LIB_OPTIONS = -module -shared -avoid-version \
- -rpath $(abs_builddir)
-
- libpause_consumer_la_SOURCES = consumer_testpoints.c
--libpause_consumer_la_LIBADD = $(top_builddir)/src/common/libcommon.la $(DL_LIBS)
-+libpause_consumer_la_LIBADD = \
-+ $(top_builddir)/src/common/libcommon.la \
-+ $(top_builddir)/src/lib/lttng-ctl/liblttng-ctl.la \
-+ $(DL_LIBS)
- libpause_consumer_la_LDFLAGS = $(FORCE_SHARED_LIB_OPTIONS)
- noinst_LTLIBRARIES = libpause_consumer.la
-
---
-2.17.1
-
diff --git a/meta/recipes-kernel/lttng/lttng-tools/0004-Skip-when-testapp-is-not-present.patch b/meta/recipes-kernel/lttng/lttng-tools/0001-Skip-when-testapp-is-not-present.patch
index 6c9f7e462c..6c9f7e462c 100644
--- a/meta/recipes-kernel/lttng/lttng-tools/0004-Skip-when-testapp-is-not-present.patch
+++ b/meta/recipes-kernel/lttng/lttng-tools/0001-Skip-when-testapp-is-not-present.patch
diff --git a/meta/recipes-kernel/lttng/lttng-tools/0008-Fix-check-for-lttng-modules-presence-before-testing.patch b/meta/recipes-kernel/lttng/lttng-tools/0002-Fix-check-for-lttng-modules-presence-before-testing.patch
index 784a07940a..784a07940a 100644
--- a/meta/recipes-kernel/lttng/lttng-tools/0008-Fix-check-for-lttng-modules-presence-before-testing.patch
+++ b/meta/recipes-kernel/lttng/lttng-tools/0002-Fix-check-for-lttng-modules-presence-before-testing.patch
diff --git a/meta/recipes-kernel/lttng/lttng-tools/0002-Fix-test-skip-test_getcpu_override-on-single-thread-.patch b/meta/recipes-kernel/lttng/lttng-tools/0002-Fix-test-skip-test_getcpu_override-on-single-thread-.patch
deleted file mode 100644
index 5bb88d21e5..0000000000
--- a/meta/recipes-kernel/lttng/lttng-tools/0002-Fix-test-skip-test_getcpu_override-on-single-thread-.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From e7db27668a9d7fd279d45bc43f3a2d5847374e7b Mon Sep 17 00:00:00 2001
-From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
-Date: Tue, 12 Mar 2019 12:04:58 -0400
-Subject: [PATCH lttng-tools 1/2] Fix: test: skip test_getcpu_override on
- single thread system
-
-There is no value in performing this test on single thread system
-since the only valid value for the cpu field is 0.
-
-This test currently fails on single thread system (i.e yocto runquemu)
-on the test_getcpu_override_fail test case.
-
-Upstream-Status: Accepted [f87d0ca370c17b597762f5ee218f0e821ed2452d]
-Backported to 2.11 and 2.10
-
-Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
----
- .../ust/getcpu-override/test_getcpu_override | 16 +++++++++++-----
- 1 file changed, 11 insertions(+), 5 deletions(-)
-
-diff --git a/tests/regression/ust/getcpu-override/test_getcpu_override b/tests/regression/ust/getcpu-override/test_getcpu_override
-index 4ca385aeb..ee3e31953 100755
---- a/tests/regression/ust/getcpu-override/test_getcpu_override
-+++ b/tests/regression/ust/getcpu-override/test_getcpu_override
-@@ -157,13 +157,19 @@ plan_tests $NUM_TESTS
-
- print_test_banner "$TEST_DESC"
-
--if [ -x "$CURDIR/.libs/lttng-ust-getcpu-override-test.so" ]; then
-- foundobj=1
--else
-- foundobj=0
-+if [ ! -x "$CURDIR/.libs/lttng-ust-getcpu-override-test.so" ]; then
-+ skip 0 "No shared object generated. Skipping all tests." $NUM_TESTS && exit 0
-+fi
-+
-+if [ "$num_cpus" -eq "1" ]; then
-+ # Skip the test since we cannot perform it as designed since N mod 1
-+ # is always equals to zero. There is no point testing this on a system
-+ # with a single thread. LTTng-UST limits the get_cpu function to return
-+ # value inside the [0, NUM_CPU - 1] range for a valid event (present in
-+ # trace).
-+ skip 0 "Test system only have a single thread. Skipping all tests." $NUM_TESTS && exit 0
- fi
-
--skip $foundobj "No shared object generated. Skipping all tests." $NUM_TESTS && exit 0
-
- TESTS=(
- test_getcpu_override_fail
---
-2.17.1
-
diff --git a/meta/recipes-kernel/lttng/lttng-tools/0003-Fix-test-unit-the-tree-origin-can-be-a-symlink-itsel.patch b/meta/recipes-kernel/lttng/lttng-tools/0003-Fix-test-unit-the-tree-origin-can-be-a-symlink-itsel.patch
deleted file mode 100644
index 822b26a367..0000000000
--- a/meta/recipes-kernel/lttng/lttng-tools/0003-Fix-test-unit-the-tree-origin-can-be-a-symlink-itsel.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From 83d165442d1c3658b6bafa28ddade8ffee7092ad Mon Sep 17 00:00:00 2001
-From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
-Date: Wed, 6 Mar 2019 16:46:49 -0500
-Subject: [PATCH lttng-tools 2/2] Fix: test: unit: the tree origin can be a
- symlink itself
-
-Problem:
-
-The base tree is defined as "/tmp/.....XXXXXX".
-On systems where "/tmp/" is itself a symlink utils_expand_path will
-expand the tree origin itself.
-
-For example on a base core-image-minimal Yocto build /tmp is a symlink
-to "/var/tmp", which is a symlink to "/var/volatile".
-
-utils_expand_path will return something like this for the symlink test:
-"/var/volative/.....XXXXXX/...." which is the valid result.
-
-Solution:
-
-Simply use realpath on the tree_origin and use this path to perform the
-test validation.
-
-This work was performed in the effort to support yocto fully and be able
-to run the test suite to detect problem as early as possible.
-
-
-Upstream-Status: Accepted [f66e964a2e0c75f5e1a55fbcc963b1c5e2b4519d]
-Backported to 2.11 and 2.10
-
-Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
----
- tests/unit/test_utils_expand_path.c | 18 ++++++++++++++----
- 1 file changed, 14 insertions(+), 4 deletions(-)
-
-diff --git a/tests/unit/test_utils_expand_path.c b/tests/unit/test_utils_expand_path.c
-index d5cab002e..d047c207d 100644
---- a/tests/unit/test_utils_expand_path.c
-+++ b/tests/unit/test_utils_expand_path.c
-@@ -281,8 +281,8 @@ error:
- static void test_utils_expand_path(void)
- {
- char *result;
-- char name[100], tmppath[PATH_MAX];
-- int i;
-+ char name[100], tmppath[PATH_MAX], real_tree_origin[PATH_MAX];
-+ int i, treelen;
-
- /* Test valid cases */
- for (i = 0; i < num_valid_tests; i++) {
-@@ -295,14 +295,24 @@ static void test_utils_expand_path(void)
- free(result);
- }
-
-+ /*
-+ * Get the realpath for the tree_origin since it can itself be a
-+ * symlink.
-+ */
-+ result = realpath(tree_origin, real_tree_origin);
-+ if (!result) {
-+ fail("realpath failed.");
-+ return;
-+ }
-+
- /* Test symlink tree cases */
-- int treelen = strlen(tree_origin) + 1;
-+ treelen = strlen(real_tree_origin) + 1;
- for (i = 0; i < num_symlink_tests; i++) {
- sprintf(name, "symlink tree test case: [tmppath/]%s",
- symlink_tests_inputs[i].input);
-
- snprintf(tmppath, PATH_MAX, "%s/%s",
-- tree_origin, symlink_tests_inputs[i].input);
-+ real_tree_origin, symlink_tests_inputs[i].input);
- result = utils_expand_path(tmppath);
- ok(result != NULL && strcmp(result + treelen,
- symlink_tests_inputs[i].expected_result) == 0, name);
---
-2.17.1
-
diff --git a/meta/recipes-kernel/lttng/lttng-tools/0005-Tests-use-modprobe-to-test-for-the-presence-of-lttng.patch b/meta/recipes-kernel/lttng/lttng-tools/0005-Tests-use-modprobe-to-test-for-the-presence-of-lttng.patch
deleted file mode 100644
index 16df3e610a..0000000000
--- a/meta/recipes-kernel/lttng/lttng-tools/0005-Tests-use-modprobe-to-test-for-the-presence-of-lttng.patch
+++ /dev/null
@@ -1,176 +0,0 @@
-From 9bc81a446d0a3ea9a884739eee48d3f14db3283c Mon Sep 17 00:00:00 2001
-From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
-Date: Wed, 28 Mar 2018 15:21:26 -0400
-Subject: [PATCH lttng-tools] Tests: use modprobe to test for the presence of
- lttng-modules
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Upstream-Status: Backport [28702730192ae1ded06105c54c5dc]
-
-Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
-Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
----
- tests/regression/tools/regen-metadata/test_kernel | 8 ++------
- tests/regression/tools/regen-statedump/test_kernel | 7 +------
- tests/regression/tools/snapshots/test_kernel | 9 +++------
- tests/regression/tools/snapshots/test_kernel_streaming | 8 ++------
- tests/regression/tools/streaming/test_kernel | 8 ++------
- tests/utils/utils.sh | 10 ++++++++++
- 6 files changed, 20 insertions(+), 30 deletions(-)
-
-diff --git a/tests/regression/tools/regen-metadata/test_kernel b/tests/regression/tools/regen-metadata/test_kernel
-index fd139aeef..1849b9cd0 100755
---- a/tests/regression/tools/regen-metadata/test_kernel
-+++ b/tests/regression/tools/regen-metadata/test_kernel
-@@ -28,12 +28,6 @@ NUM_TESTS=18
-
- source $TESTDIR/utils/utils.sh
-
--# LTTng kernel modules check
--out=`ls /lib/modules/$(uname -r)/extra | grep lttng`
--if [ -z "$out" ]; then
-- BAIL_OUT "LTTng modules not detected."
--fi
--
- function lttng_create_session_uri
- {
- # Create session with default path
-@@ -91,6 +85,8 @@ fi
-
- skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS ||
- {
-+ validate_lttng_modules_present
-+
- start_lttng_relayd "-o $TRACE_PATH"
- start_lttng_sessiond
- modprobe lttng-test
-diff --git a/tests/regression/tools/regen-statedump/test_kernel b/tests/regression/tools/regen-statedump/test_kernel
-index 85afe76a1..50054eb07 100755
---- a/tests/regression/tools/regen-statedump/test_kernel
-+++ b/tests/regression/tools/regen-statedump/test_kernel
-@@ -29,12 +29,6 @@ NUM_TESTS=11
-
- source $TESTDIR/utils/utils.sh
-
--# LTTng kernel modules check
--out=`ls /lib/modules/$(uname -r)/extra | grep lttng`
--if [ -z "$out" ]; then
-- BAIL_OUT "LTTng modules not detected."
--fi
--
- function test_kernel_local ()
- {
- diag "Test kernel local with statedump regeneration"
-@@ -64,6 +58,7 @@ fi
-
- skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS ||
- {
-+ validate_lttng_modules_present
- start_lttng_sessiond
- modprobe lttng-test
-
-diff --git a/tests/regression/tools/snapshots/test_kernel b/tests/regression/tools/snapshots/test_kernel
-index 886c4557a..ff563100b 100755
---- a/tests/regression/tools/snapshots/test_kernel
-+++ b/tests/regression/tools/snapshots/test_kernel
-@@ -29,12 +29,6 @@ NUM_TESTS=2060
-
- source $TESTDIR/utils/utils.sh
-
--# LTTng kernel modules check
--out=`ls /lib/modules/$(uname -r)/extra | grep lttng`
--if [ -z "$out" ]; then
-- BAIL_OUT "LTTng modules not detected."
--fi
--
- function test_kernel_local_snapshot ()
- {
- diag "Test local kernel snapshots"
-@@ -241,6 +235,9 @@ fi
-
- skip $isroot "Root access is needed. Skipping all kernel snapshot tests." $NUM_TESTS ||
- {
-+
-+ validate_lttng_modules_present
-+
- start_lttng_sessiond
-
- #tests=( test_kernel_1000_local_snapshots )
-diff --git a/tests/regression/tools/snapshots/test_kernel_streaming b/tests/regression/tools/snapshots/test_kernel_streaming
-index 7b96ef270..1d97519aa 100755
---- a/tests/regression/tools/snapshots/test_kernel_streaming
-+++ b/tests/regression/tools/snapshots/test_kernel_streaming
-@@ -29,12 +29,6 @@ NUM_TESTS=61
-
- source $TESTDIR/utils/utils.sh
-
--# LTTng kernel modules check
--out=`ls /lib/modules/$(uname -r)/extra | grep lttng`
--if [ -z "$out" ]; then
-- BAIL_OUT "LTTng modules not detected."
--fi
--
- function snapshot_add_output ()
- {
- local sess_name=$1
-@@ -169,6 +163,8 @@ fi
-
- skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS ||
- {
-+ validate_lttng_modules_present
-+
- start_lttng_relayd "-o $TRACE_PATH"
- start_lttng_sessiond
-
-diff --git a/tests/regression/tools/streaming/test_kernel b/tests/regression/tools/streaming/test_kernel
-index d54bcedf5..6bb23d9f5 100755
---- a/tests/regression/tools/streaming/test_kernel
-+++ b/tests/regression/tools/streaming/test_kernel
-@@ -28,12 +28,6 @@ NUM_TESTS=10
-
- source $TESTDIR/utils/utils.sh
-
--# LTTng kernel modules check
--out=`ls /lib/modules/$(uname -r)/extra | grep lttng`
--if [ -z "$out" ]; then
-- BAIL_OUT "LTTng modules not detected."
--fi
--
- function lttng_create_session_uri
- {
- # Create session with default path
-@@ -80,6 +74,8 @@ fi
-
- skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS ||
- {
-+ validate_lttng_modules_present
-+
- start_lttng_relayd "-o $TRACE_PATH"
- start_lttng_sessiond
-
-diff --git a/tests/utils/utils.sh b/tests/utils/utils.sh
-index af63824ce..26e59e383 100644
---- a/tests/utils/utils.sh
-+++ b/tests/utils/utils.sh
-@@ -125,6 +125,16 @@ function conf_proc_count()
- echo
- }
-
-+# Check if base lttng-modules are present.
-+# Bail out on failure
-+function validate_lttng_modules_present ()
-+{
-+ modprobe -n lttng-tracer 2>/dev/null
-+ if [ $? -ne 0 ]; then
-+ BAIL_OUT "LTTng modules not detected."
-+ fi
-+}
-+
- function enable_kernel_lttng_event
- {
- local withtap="$1"
---
-2.17.1
-
diff --git a/meta/recipes-kernel/lttng/lttng-tools/0006-Tests-check-for-lttng-modules-presence.patch b/meta/recipes-kernel/lttng/lttng-tools/0006-Tests-check-for-lttng-modules-presence.patch
deleted file mode 100644
index 30aa66b2c8..0000000000
--- a/meta/recipes-kernel/lttng/lttng-tools/0006-Tests-check-for-lttng-modules-presence.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 92f93238f1df005aadc98e105c0dd0e04a5955a7 Mon Sep 17 00:00:00 2001
-From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
-Date: Mon, 25 Mar 2019 14:24:51 -0400
-Subject: [2/2] tests: check for lttng-modules presence
-
-Upstream-Status: Accepted [5da3fc8579a9f93ea4767729a107784bf2d034ae]
-Backported to 2.11 and 2.10
-
-Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
----
- tests/regression/tools/notification/test_notification_kernel | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/tests/regression/tools/notification/test_notification_kernel b/tests/regression/tools/notification/test_notification_kernel
-index 6d7f256ae..e7368df26 100755
---- a/tests/regression/tools/notification/test_notification_kernel
-+++ b/tests/regression/tools/notification/test_notification_kernel
-@@ -108,6 +108,7 @@ function kernel_test
- }
-
- if [ "$(id -u)" == "0" ]; then
-+ validate_lttng_modules_present
- kernel_test
- else
- # Kernel tests are skipped.
---
-2.17.1
-
diff --git a/meta/recipes-kernel/lttng/lttng-tools/0007-Fix-getgrnam-is-not-MT-Safe-use-getgrnam_r.patch b/meta/recipes-kernel/lttng/lttng-tools/0007-Fix-getgrnam-is-not-MT-Safe-use-getgrnam_r.patch
deleted file mode 100644
index a3362ea247..0000000000
--- a/meta/recipes-kernel/lttng/lttng-tools/0007-Fix-getgrnam-is-not-MT-Safe-use-getgrnam_r.patch
+++ /dev/null
@@ -1,347 +0,0 @@
-From 10e8001ad876d8cb3b5a17c7492e713bbc047975 Mon Sep 17 00:00:00 2001
-From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
-Date: Thu, 28 Mar 2019 18:31:29 -0400
-Subject: [PATCH] Fix: getgrnam is not MT-Safe, use getgrnam_r
-
-Running the test suite under a Yocto musl build resulted in musl
-coredump due to double freeing.
-
-We get the following backtraces:
-
-0 a_crash () at ./arch/x86_64/atomic_arch.h:108
-1 unmap_chunk (self=<optimized out>) at src/malloc/malloc.c:515
-2 free (p=<optimized out>) at src/malloc/malloc.c:526
-3 0x00007f46d9dc3849 in __getgrent_a (f=f@entry=0x7f46d9d1f7e0, gr=gr@entry=0x7f46d9e24460 <gr>, line=line@entry=0x7f46d9e26058 <line>, size=size@entry=0x7f46d92db550, mem=mem@entry=0x7f46d9e26050 <mem>, nmem=nmem@entry=0x7f46d92db558, res=0x7f46d92db548) at src/passwd/getgrent_a.c:45
-4 0x00007f46d9dc2e6b in __getgr_a (name=0x487242 "tracing", gid=gid@entry=0, gr=gr@entry=0x7f46d9e24460 <gr>, buf=buf@entry=0x7f46d9e26058 <line>, size=size@entry=0x7f46d92db550, mem=mem@entry=0x7f46d9e26050 <mem>, nmem=0x7f46d92db558, res=0x7f46d92db548) at src/passwd/getgr_a.c:30
-5 0x00007f46d9dc3733 in getgrnam (name=<optimized out>) at src/passwd/getgrent.c:37
-6 0x0000000000460b29 in utils_get_group_id (name=<optimized out>) at ../../../lttng-tools-2.10.6/src/common/utils.c:1241
-7 0x000000000044ee69 in thread_manage_health (data=<optimized out>) at ../../../../lttng-tools-2.10.6/src/bin/lttng-sessiond/main.c:4115
-8 0x00007f46d9de1541 in start (p=<optimized out>) at src/thread/pthread_create.c:195
-9 0x00007f46d9dee661 in __clone () at src/thread/x86_64/clone.s:22
-
-From another run:
-
-0 a_crash () at ./arch/x86_64/atomic_arch.h:108
-1 unmap_chunk (self=<optimized out>) at src/malloc/malloc.c:515
-2 free (p=<optimized out>) at src/malloc/malloc.c:526
-3 0x00007f5abc210849 in __getgrent_a (f=f@entry=0x7f5abc2733e0, gr=gr@entry=0x7f5abc271460 <gr>, line=line@entry=0x7f5abc273058 <line>, size=size@entry=0x7f5abaef5510, mem=mem@entry=0x7f5abc273050 <mem>, nmem=nmem@entry=0x7f5abaef5518, res=0x7f5abaef5508) at src/passwd/getgrent_a.c:45
-4 0x00007f5abc20fe6b in __getgr_a (name=0x487242 "tracing", gid=gid@entry=0, gr=gr@entry=0x7f5abc271460 <gr>, buf=buf@entry=0x7f5abc273058 <line>, size=size@entry=0x7f5abaef5510, mem=mem@entry=0x7f5abc273050 <mem>, nmem=0x7f5abaef5518, res=0x7f5abaef5508) at src/passwd/getgr_a.c:30
-5 0x00007f5abc210733 in getgrnam (name=<optimized out>) at src/passwd/getgrent.c:37
-6 0x0000000000460b29 in utils_get_group_id (name=<optimized out>) at ../../../lttng-tools-2.10.6/src/common/utils.c:1241
-7 0x000000000042dee4 in notification_channel_socket_create () at ../../../../lttng-tools-2.10.6/src/bin/lttng-sessiond/notification-thread.c:238
-8 init_thread_state (state=0x7f5abaef5560, handle=0x7f5abbf9be40) at ../../../../lttng-tools-2.10.6/src/bin/lttng-sessiond/notification-thread.c:375
-9 thread_notification (data=0x7f5abbf9be40) at ../../../../lttng-tools-2.10.6/src/bin/lttng-sessiond/notification-thread.c:495
-10 0x00007f5abc22e541 in start (p=<optimized out>) at src/thread/pthread_create.c:195
-11 0x00007f5abc23b661 in __clone () at src/thread/x86_64/clone.s:22
-
-The problem was easily reproducible (~6 crash on ~300 runs). A prototype fix
-using mutex around the getgrnam yielded no crash in over 1000 runs. This
-patch yielded the same results as the prototype fix.
-
-Unfortunately we cannot rely on a mutex in liblttng-ctl since we cannot
-enforce the locking for the application using the lib.
-
-Use getgrnam_r instead.
-
-The previous implementation of utils_get_group_id returned the gid of
-the root group (0) on error/not found. lttng_check_tracing_group needs
-to know if an error/not found occured, returning the root group is not
-enough. We now return the gid via the passed parameter. The caller is
-responsible for either defaulting to the root group or propagating the
-error.
-
-We also do not want to warn when used in liblttng-ctl context. We might
-want to move the warning elsewhere in the future. For now, pass a bool
-if we need to warn or not.
-
-Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
-
-Upstream-Status: Submitted [https://patchwork.lttng.org/patch/2314703]
----
- src/bin/lttng-consumerd/health-consumerd.c | 10 ++-
- src/bin/lttng-relayd/health-relayd.c | 20 ++++--
- src/bin/lttng-sessiond/main.c | 24 +++++--
- src/bin/lttng-sessiond/notification-thread.c | 10 ++-
- src/common/utils.c | 75 +++++++++++++++++---
- src/common/utils.h | 4 +-
- src/lib/lttng-ctl/lttng-ctl.c | 8 +--
- 7 files changed, 122 insertions(+), 29 deletions(-)
-
-diff --git a/src/bin/lttng-consumerd/health-consumerd.c b/src/bin/lttng-consumerd/health-consumerd.c
-index 1e2f31e4..6045401a 100644
---- a/src/bin/lttng-consumerd/health-consumerd.c
-+++ b/src/bin/lttng-consumerd/health-consumerd.c
-@@ -184,8 +184,14 @@ void *thread_manage_health(void *data)
- is_root = !getuid();
- if (is_root) {
- /* lttng health client socket path permissions */
-- ret = chown(health_unix_sock_path, 0,
-- utils_get_group_id(tracing_group_name));
-+ gid_t gid;
-+
-+ ret = utils_get_group_id(tracing_group_name, true, &gid);
-+ if (ret) {
-+ gid = 0; /* Default to root group. */
-+ }
-+
-+ ret = chown(health_unix_sock_path, 0, gid);
- if (ret < 0) {
- ERR("Unable to set group on %s", health_unix_sock_path);
- PERROR("chown");
-diff --git a/src/bin/lttng-relayd/health-relayd.c b/src/bin/lttng-relayd/health-relayd.c
-index ba996621..962e88c4 100644
---- a/src/bin/lttng-relayd/health-relayd.c
-+++ b/src/bin/lttng-relayd/health-relayd.c
-@@ -105,8 +105,14 @@ static int create_lttng_rundir_with_perm(const char *rundir)
- int is_root = !getuid();
-
- if (is_root) {
-- ret = chown(rundir, 0,
-- utils_get_group_id(tracing_group_name));
-+ gid_t gid;
-+
-+ ret = utils_get_group_id(tracing_group_name, true, &gid);
-+ if (ret) {
-+ gid = 0; /* Default to root group.*/
-+ }
-+
-+ ret = chown(rundir, 0, gid);
- if (ret < 0) {
- ERR("Unable to set group on %s", rundir);
- PERROR("chown");
-@@ -256,8 +262,14 @@ void *thread_manage_health(void *data)
- is_root = !getuid();
- if (is_root) {
- /* lttng health client socket path permissions */
-- ret = chown(health_unix_sock_path, 0,
-- utils_get_group_id(tracing_group_name));
-+ gid_t gid;
-+
-+ ret = utils_get_group_id(tracing_group_name, true, &gid);
-+ if (ret) {
-+ gid = 0; /* Default to root group */
-+ }
-+
-+ ret = chown(health_unix_sock_path, 0, gid);
- if (ret < 0) {
- ERR("Unable to set group on %s", health_unix_sock_path);
- PERROR("chown");
-diff --git a/src/bin/lttng-sessiond/main.c b/src/bin/lttng-sessiond/main.c
-index fa6fa483..49307064 100644
---- a/src/bin/lttng-sessiond/main.c
-+++ b/src/bin/lttng-sessiond/main.c
-@@ -4112,8 +4112,14 @@ static void *thread_manage_health(void *data)
-
- if (is_root) {
- /* lttng health client socket path permissions */
-- ret = chown(config.health_unix_sock_path.value, 0,
-- utils_get_group_id(config.tracing_group_name.value));
-+ gid_t gid;
-+
-+ ret = utils_get_group_id(config.tracing_group_name.value, true, &gid);
-+ if (ret) {
-+ gid = 0; /* Default to root group */
-+ }
-+
-+ ret = chown(config.health_unix_sock_path.value, 0, &gid);
- if (ret < 0) {
- ERR("Unable to set group on %s", config.health_unix_sock_path.value);
- PERROR("chown");
-@@ -5238,7 +5244,10 @@ static int set_permissions(char *rundir)
- int ret;
- gid_t gid;
-
-- gid = utils_get_group_id(config.tracing_group_name.value);
-+ ret = utils_get_group_id(config.tracing_group_name.value, true, &gid);
-+ if (ret) {
-+ gid = 0; /* Default to root group */
-+ }
-
- /* Set lttng run dir */
- ret = chown(rundir, 0, gid);
-@@ -5349,7 +5358,14 @@ static int set_consumer_sockets(struct consumer_data *consumer_data)
- goto error;
- }
- if (is_root) {
-- ret = chown(path, 0, utils_get_group_id(config.tracing_group_name.value));
-+ gid_t gid;
-+
-+ ret = utils_get_group_id(config.tracing_group_name.value, true, &gid);
-+ if (ret) {
-+ gid = 0; /* Default to root group */
-+ }
-+
-+ ret = chown(path, 0, gid);
- if (ret < 0) {
- ERR("Unable to set group on %s", path);
- PERROR("chown");
-diff --git a/src/bin/lttng-sessiond/notification-thread.c b/src/bin/lttng-sessiond/notification-thread.c
-index 92ac597f..18a264d9 100644
---- a/src/bin/lttng-sessiond/notification-thread.c
-+++ b/src/bin/lttng-sessiond/notification-thread.c
-@@ -235,8 +235,14 @@ int notification_channel_socket_create(void)
- }
-
- if (getuid() == 0) {
-- ret = chown(sock_path, 0,
-- utils_get_group_id(config.tracing_group_name.value));
-+ gid_t gid;
-+
-+ ret = utils_get_group_id(config.tracing_group_name.value, true, &gid);
-+ if (ret) {
-+ gid = 0; /* Default to root group. */
-+ }
-+
-+ ret = chown(sock_path, 0, gid);
- if (ret) {
- ERR("Failed to set the notification channel socket's group");
- ret = -1;
-diff --git a/src/common/utils.c b/src/common/utils.c
-index c0bb031e..778bc00f 100644
---- a/src/common/utils.c
-+++ b/src/common/utils.c
-@@ -1231,24 +1231,77 @@ size_t utils_get_current_time_str(const char *format, char *dst, size_t len)
- }
-
- /*
-- * Return the group ID matching name, else 0 if it cannot be found.
-+ * Return 0 on success and set *gid to the group_ID matching the passed name.
-+ * Else -1 if it cannot be found or an error occurred.
- */
- LTTNG_HIDDEN
--gid_t utils_get_group_id(const char *name)
-+int utils_get_group_id(const char *name, bool warn, gid_t *gid)
- {
-- struct group *grp;
-+ static volatile int warn_once;
-
-- grp = getgrnam(name);
-- if (!grp) {
-- static volatile int warn_once;
-+ int ret;
-+ long sys_len;
-+ size_t len;
-+ struct group grp;
-+ struct group *result;
-+ char *buffer = NULL;
-
-- if (!warn_once) {
-- WARN("No tracing group detected");
-- warn_once = 1;
-+ /* Get the system limit if it exists */
-+ sys_len = sysconf(_SC_GETGR_R_SIZE_MAX);
-+ if (sys_len == -1) {
-+ len = 1024;
-+ } else {
-+ len = (size_t) sys_len;
-+ }
-+
-+ buffer = malloc(len);
-+ if (!buffer) {
-+ PERROR("getgrnam_r malloc");
-+ ret = -1;
-+ goto error;
-+ }
-+
-+ while ((ret = getgrnam_r(name, &grp, buffer, len, &result)) == ERANGE)
-+ {
-+ /* Buffer is not big enough, increase its size. */
-+ size_t new_len = 2 * len;
-+ char *new_buffer = NULL;
-+ if (new_len < len) {
-+ ERR("getgrnam_r buffer size overflow");
-+ ret = -1;
-+ goto error;
-+ }
-+ len = new_len;
-+ new_buffer = realloc(buffer, len);
-+ if (!new_buffer) {
-+ PERROR("getgrnam_r realloc");
-+ ret = -1;
-+ goto error;
- }
-- return 0;
-+ buffer = new_buffer;
-+ }
-+ if (ret != 0) {
-+ PERROR("getgrnam_r");
-+ ret = -1;
-+ goto error;
-+ }
-+
-+ /* Group not found. */
-+ if (!result) {
-+ ret = -1;
-+ goto error;
-+ }
-+
-+ *gid = result->gr_gid;
-+ ret = 0;
-+
-+error:
-+ free(buffer);
-+ if (ret && warn && !warn_once) {
-+ WARN("No tracing group detected");
-+ warn_once = 1;
- }
-- return grp->gr_gid;
-+ return ret;
- }
-
- /*
-diff --git a/src/common/utils.h b/src/common/utils.h
-index 18f19ef1..9c72431d 100644
---- a/src/common/utils.h
-+++ b/src/common/utils.h
-@@ -22,6 +22,8 @@
- #include <unistd.h>
- #include <stdint.h>
- #include <getopt.h>
-+#include <stdbool.h>
-+#include <sys/types.h>
-
- #define KIBI_LOG2 10
- #define MEBI_LOG2 20
-@@ -52,7 +54,7 @@ int utils_get_count_order_u64(uint64_t x);
- char *utils_get_home_dir(void);
- char *utils_get_user_home_dir(uid_t uid);
- size_t utils_get_current_time_str(const char *format, char *dst, size_t len);
--gid_t utils_get_group_id(const char *name);
-+int utils_get_group_id(const char *name, bool warn, gid_t *gid);
- char *utils_generate_optstring(const struct option *long_options,
- size_t opt_count);
- int utils_create_lock_file(const char *filepath);
-diff --git a/src/lib/lttng-ctl/lttng-ctl.c b/src/lib/lttng-ctl/lttng-ctl.c
-index 2d84aad9..561b0bcf 100644
---- a/src/lib/lttng-ctl/lttng-ctl.c
-+++ b/src/lib/lttng-ctl/lttng-ctl.c
-@@ -208,15 +208,13 @@ end:
- LTTNG_HIDDEN
- int lttng_check_tracing_group(void)
- {
-- struct group *grp_tracing; /* no free(). See getgrnam(3) */
-- gid_t *grp_list;
-+ gid_t *grp_list, tracing_gid;
- int grp_list_size, grp_id, i;
- int ret = -1;
- const char *grp_name = tracing_group;
-
- /* Get GID of group 'tracing' */
-- grp_tracing = getgrnam(grp_name);
-- if (!grp_tracing) {
-+ if (utils_get_group_id(grp_name, false, &tracing_gid)) {
- /* If grp_tracing is NULL, the group does not exist. */
- goto end;
- }
-@@ -241,7 +239,7 @@ int lttng_check_tracing_group(void)
- }
-
- for (i = 0; i < grp_list_size; i++) {
-- if (grp_list[i] == grp_tracing->gr_gid) {
-+ if (grp_list[i] == tracing_gid) {
- ret = 1;
- break;
- }
---
-2.17.1
-
diff --git a/meta/recipes-kernel/lttng/lttng-tools_2.10.6.bb b/meta/recipes-kernel/lttng/lttng-tools_2.10.7.bb
index 58c7864c30..469ad111c4 100644
--- a/meta/recipes-kernel/lttng/lttng-tools_2.10.6.bb
+++ b/meta/recipes-kernel/lttng/lttng-tools_2.10.7.bb
@@ -32,18 +32,12 @@ SRC_URI = "https://lttng.org/files/lttng-tools/lttng-tools-${PV}.tar.bz2 \
file://x32.patch \
file://run-ptest \
file://lttng-sessiond.service \
- file://0001-Fix-tests-link-libpause_consumer-on-liblttng-ctl.patch \
- file://0002-Fix-test-skip-test_getcpu_override-on-single-thread-.patch \
- file://0003-Fix-test-unit-the-tree-origin-can-be-a-symlink-itsel.patch \
- file://0004-Skip-when-testapp-is-not-present.patch\
- file://0005-Tests-use-modprobe-to-test-for-the-presence-of-lttng.patch \
- file://0006-Tests-check-for-lttng-modules-presence.patch \
- file://0007-Fix-getgrnam-is-not-MT-Safe-use-getgrnam_r.patch \
- file://0008-Fix-check-for-lttng-modules-presence-before-testing.patch \
+ file://0001-Skip-when-testapp-is-not-present.patch \
+ file://0002-Fix-check-for-lttng-modules-presence-before-testing.patch \
"
-SRC_URI[md5sum] = "e88c521b5da6bb48a8187af633336ecc"
-SRC_URI[sha256sum] = "f05df52bbebf8ce88d1b29e9e98cfc957d2ed738a345118018237ebdb581537c"
+SRC_URI[md5sum] = "e7804d10e4cade381e241601f6047373"
+SRC_URI[sha256sum] = "ed71ebe00c5d985c74f30e97b614e909573cbd9276c85e05d9557a0b817a1312"
inherit autotools ptest pkgconfig useradd python3-dir manpages systemd