Add elfutils-0.170-core-pid.patch
This commit is contained in:
parent
6145bf3424
commit
2bd5f200c4
120
elfutils-0.170-core-pid.patch
Normal file
120
elfutils-0.170-core-pid.patch
Normal file
@ -0,0 +1,120 @@
|
||||
commit 699a741b488010d56cc358a5f7b4d8a8f4886347
|
||||
Author: Mark Wielaard <mark@klomp.org>
|
||||
Date: Sat Dec 23 23:16:24 2017 +0100
|
||||
|
||||
tests: Try to use coredumpctl to extract core files.
|
||||
|
||||
If systemd-coredump is installed we have to use coredumpctl to extract
|
||||
the core file to test. Unfortunately systemd-coredump/coredumpctl seem
|
||||
to be somewhat fragile if multiple core dumps are generated/extracted
|
||||
at the same time. So use a lock file to only run one core dump test at
|
||||
a time (under make -j).
|
||||
|
||||
Signed-off-by: Mark Wielaard <mark@klomp.org>
|
||||
|
||||
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
||||
index fca0072..64cb5bd 100644
|
||||
--- a/tests/Makefile.am
|
||||
+++ b/tests/Makefile.am
|
||||
@@ -515,6 +515,9 @@ dwarf_default_lower_bound_LDADD = $(libdw)
|
||||
system_elf_libelf_test_CPPFLAGS =
|
||||
system_elf_libelf_test_LDADD = $(libelf)
|
||||
|
||||
+# A lock file used to make sure only one test dumps core at a time
|
||||
+CLEANFILES += core-dump-backtrace.lock
|
||||
+
|
||||
if GCOV
|
||||
check: check-am coverage
|
||||
.PHONY: coverage
|
||||
diff --git a/tests/backtrace-subr.sh b/tests/backtrace-subr.sh
|
||||
index c1f3156..e04a7ea 100644
|
||||
--- a/tests/backtrace-subr.sh
|
||||
+++ b/tests/backtrace-subr.sh
|
||||
@@ -137,19 +137,46 @@ check_native()
|
||||
# Backtrace core file.
|
||||
check_native_core()
|
||||
{
|
||||
+# systemd-coredump/coredumpctl doesn't seem to like concurrent core dumps
|
||||
+# use a lock file (fd 200) tests/core-dump-backtrace.lock
|
||||
+(
|
||||
child=$1
|
||||
|
||||
# Disable valgrind while dumping core.
|
||||
SAVED_VALGRIND_CMD="$VALGRIND_CMD"
|
||||
unset VALGRIND_CMD
|
||||
|
||||
+ # Wait for lock for 10 seconds or skip.
|
||||
+ flock -x -w 10 200 || exit 77;
|
||||
+
|
||||
# Skip the test if we cannot adjust core ulimit.
|
||||
- core="core.`ulimit -c unlimited || exit 77; set +ex; testrun ${abs_builddir}/$child --gencore; true`"
|
||||
+ pid="`ulimit -c unlimited || exit 77; set +ex; testrun ${abs_builddir}/$child --gencore; true`"
|
||||
+ core="core.$pid"
|
||||
# see if /proc/sys/kernel/core_uses_pid is set to 0
|
||||
if [ -f core ]; then
|
||||
mv core "$core"
|
||||
fi
|
||||
- if [ ! -f "$core" ]; then echo "No $core file generated"; exit 77; fi
|
||||
+ type -P coredumpctl && have_coredumpctl=1 || have_coredumpctl=0
|
||||
+ if [ ! -f "$core" -a $have_coredumpctl -eq 1 ]; then
|
||||
+ # Maybe systemd-coredump took it. But give it some time to dump first...
|
||||
+ sleep 1
|
||||
+ coredumpctl --output="$core" dump $pid || rm -f $core
|
||||
+
|
||||
+ # Try a couple of times after waiting some more if something went wrong...
|
||||
+ if [ ! -f "$core" ]; then
|
||||
+ sleep 2
|
||||
+ coredumpctl --output="$core" dump $pid || rm -f $core
|
||||
+ fi
|
||||
+
|
||||
+ if [ ! -f "$core" ]; then
|
||||
+ sleep 3
|
||||
+ coredumpctl --output="$core" dump $pid || rm -f $core
|
||||
+ fi
|
||||
+ fi
|
||||
+ if [ ! -f "$core" ]; then
|
||||
+ echo "No $core file generated";
|
||||
+ exit 77;
|
||||
+ fi
|
||||
|
||||
if [ "x$SAVED_VALGRIND_CMD" != "x" ]; then
|
||||
VALGRIND_CMD="$SAVED_VALGRIND_CMD"
|
||||
@@ -163,4 +190,6 @@ check_native_core()
|
||||
cat $core.{bt,err}
|
||||
check_native_unsupported $core.err $child-$core
|
||||
check_all $core.{bt,err} $child-$core
|
||||
+ rm $core{,.{bt,err}}
|
||||
+) 200>${abs_builddir}/core-dump-backtrace.lock
|
||||
}
|
||||
|
||||
commit 61e33d72788c58467668b2f2ad44d5b95ebbee80
|
||||
Author: Mark Wielaard <mark@klomp.org>
|
||||
Date: Fri Feb 16 20:34:25 2018 +0100
|
||||
|
||||
tests: Accept any core if no core with the "correct" pid can be found.
|
||||
|
||||
In some containers our view of pids is confused. We see the container
|
||||
pid namespace, but the core is generated using the host pid namespace.
|
||||
Since tests are run in a new fresh directory any core here is most like
|
||||
is ours.
|
||||
|
||||
Signed-off-by: Mark Wielaard <mark@klomp.org>
|
||||
|
||||
diff --git a/tests/backtrace-subr.sh b/tests/backtrace-subr.sh
|
||||
index e04a7ea..ff42c6f 100644
|
||||
--- a/tests/backtrace-subr.sh
|
||||
+++ b/tests/backtrace-subr.sh
|
||||
@@ -174,6 +174,13 @@ check_native_core()
|
||||
fi
|
||||
fi
|
||||
if [ ! -f "$core" ]; then
|
||||
+ # In some containers our view of pids is confused. Since tests are
|
||||
+ # run in a new fresh directory any core here is most like is ours.
|
||||
+ if ls core.[0-9]* 1> /dev/null 2>&1; then
|
||||
+ mv core.[0-9]* "$core"
|
||||
+ fi
|
||||
+ fi
|
||||
+ if [ ! -f "$core" ]; then
|
||||
echo "No $core file generated";
|
||||
exit 77;
|
||||
fi
|
@ -24,6 +24,7 @@ Patch1: elfutils-0.170-dwarf_aggregate_size.patch
|
||||
Source1: testfile-sizes3.o.bz2
|
||||
Patch2: elfutils-0.170-sys-ptrace.patch
|
||||
Patch3: elfutils-0.170-m68k-packed-not-aligned.patch
|
||||
Patch4: elfutils-0.170-core-pid.patch
|
||||
|
||||
Requires: elfutils-libelf%{depsuffix} = %{version}-%{release}
|
||||
Requires: elfutils-libs%{depsuffix} = %{version}-%{release}
|
||||
@ -179,6 +180,7 @@ profiling) of processes.
|
||||
cp %SOURCE1 tests/
|
||||
%patch2 -p1 -b .sys_ptrace
|
||||
%patch3 -p1 -b .m68k_packed
|
||||
%patch4 -p1 -b .core_pid
|
||||
|
||||
find . -name \*.sh ! -perm -0100 -print | xargs chmod +x
|
||||
|
||||
@ -314,7 +316,10 @@ fi
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Thu Feb 15 2018 Mark Wielaard <mjw@fedoraproject.org>
|
||||
* Fri Feb 16 2018 Mark Wielaard <mjw@fedoraproject.org>
|
||||
- Add elfutils-0.170-core-pid.patch
|
||||
|
||||
* Thu Feb 15 2018 Mark Wielaard <mjw@fedoraproject.org> - 0.170-8
|
||||
- Add elfutils-0.170-sys-ptrace.patch
|
||||
- Make sure spec can be build even when ldconfig_scriplets aren't defined.
|
||||
- Add elfutils-0.170-m68k-packed-not-aligned.patch
|
||||
|
Loading…
Reference in New Issue
Block a user