Fix getrbp()
The following compiler warning is emitted for the BACKTRACE_X86STACK part of lib/isc/backtrace.c: backtrace.c: In function ‘getrbp’: backtrace.c:142:1: warning: no return statement in function returning non-void [-Wreturn-type] While getrbp() stores the value of the RBP register in the RAX register and thus does attempt to return a value, this is not enough for an optimizing compiler to always produce the expected result. With -O2, the following machine code may be generated in isc_backtrace_gettrace(): 0x00007ffff7b0ff7a <+10>: mov %rbp,%rax 0x00007ffff7b0ff7d <+13>: mov $0x17,%eax 0x00007ffff7b0ff82 <+18>: retq The above is equivalent to: sp = (void **)getrbp(); return (ISC_R_NOTFOUND); and results in the backtrace never getting printed. Fix by using an intermediate variable. With this change in place, the machine code generated with -O2 becomes something like: 0x00007ffff7af5638 <+24>: mov $0x17,%eax 0x00007ffff7af563d <+29>: mov %rbp,%rdx 0x00007ffff7af5640 <+32>: test %rdx,%rdx 0x00007ffff7af5643 <+35>: je 0x7ffff7af56bd <isc_backtrace_gettrace+157> ... 0x00007ffff7af56bd <+157>: retq (Note that this method of grabbing a stack trace is finicky anyway because in order for RBP to be relied upon, -fno-omit-stack-frame must be present among CFLAGS.)
Status | Job ID | Name | Coverage | ||||||
---|---|---|---|---|---|---|---|---|---|
Precheck | |||||||||
passed |
#1261888
amd64
linux
|
autoreconf |
00:00:15
|
|
|||||
passed |
#1261890
amd64
linux
|
clang-format |
00:00:16
|
|
|||||
canceled |
#1261891
amd64
linux
|
coccinelle |
00:01:21
|
|
|||||
passed |
#1261892
amd64
linux
|
danger |
00:00:16
|
|
|||||
passed |
#1261889
amd64
linux
|
misc |
00:00:13
|
|
|||||
Build | |||||||||
canceled |
#1261906
amd64
linux
|
clang:asan |
00:00:58
|
|
|||||
canceled |
#1261910
amd64
linux
|
clang:buster:amd64 |
00:01:03
|
|
|||||
canceled |
#1261913
amd64
libvirt
|
clang:freebsd11:amd64 |
00:00:53
|
|
|||||
canceled |
#1261914
amd64
libvirt
|
clang:freebsd12:amd64 |
00:00:52
|
|
|||||
canceled |
#1261915
amd64
libvirt
|
clang:openbsd:amd64 |
00:00:52
|
|
|||||
canceled |
#1261908
amd64
linux
|
clang:tsan |
00:01:03
|
|
|||||
canceled |
#1261893
amd64
linux
|
gcc:alpine3.12:amd64 |
00:01:04
|
|
|||||
canceled |
#1261905
amd64
linux
|
gcc:asan |
00:00:59
|
|
|||||
canceled |
#1261898
amd64
linux
|
gcc:buster:amd64 |
00:01:02
|
|
|||||
canceled |
#1261894
amd64
linux
|
gcc:centos6:amd64 |
00:01:03
|
|
|||||
canceled |
#1261895
amd64
linux
|
gcc:centos7:amd64 |
00:01:03
|
|
|||||
canceled |
#1261896
amd64
linux
|
gcc:centos8:amd64 |
00:01:03
|
|
|||||
canceled |
#1261904
amd64
linux
|
gcc:focal:amd64 |
00:01:00
|
|
|||||
canceled |
#1261909
amd64
linux
|
gcc:mutexatomics |
00:01:03
|
|
|||||
canceled |
#1261900
amd64
linux
|
gcc:out-of-tree |
00:01:01
|
|
|||||
canceled |
#1261899
amd64
linux
|
gcc:sid:amd64 |
00:01:02
|
|
|||||
canceled |
#1261901
i386
linux
|
gcc:sid:i386 |
00:01:01
|
|
|||||
canceled |
#1261911
amd64
linux
|
gcc:softhsm2.4 |
00:01:02
|
|
|||||
canceled |
#1261912
amd64
linux
|
gcc:softhsm2.6 |
00:00:56
|
|
|||||
canceled |
#1261897
amd64
linux
|
gcc:stretch:amd64 |
00:01:03
|
|
|||||
canceled |
#1261907
amd64
linux
|
gcc:tsan |
00:00:57
|
|
|||||
canceled |
#1261902
amd64
linux
|
gcc:tumbleweed:amd64 |
00:01:00
|
|
|||||
canceled |
#1261903
amd64
linux
|
gcc:xenial:amd64 |
00:01:00
|
|
|||||
canceled |
#1261917
amd64
windows
|
msvc:windows:amd64 |
00:01:19
|
|
|||||
canceled |
#1261916
amd64
linux
|
nolibtool:sid:amd64 |
00:00:55
|
|
|||||
Unit | |||||||||
canceled |
#1261930
amd64
linux
|
unit:clang:asan |
|
|
|||||
canceled |
#1261934
amd64
linux
|
unit:clang:buster:amd64 |
|
|
|||||
canceled |
#1261937
amd64
libvirt
|
unit:clang:freebsd11:amd64 |
|
|
|||||
canceled |
#1261938
amd64
libvirt
|
unit:clang:freebsd12:amd64 |
|
|
|||||
canceled |
#1261932
amd64
linux
|
unit:clang:tsan |
|
|
|||||
canceled |
#1261918
amd64
linux
|
unit:gcc:alpine3.12:amd64 |
|
|
|||||
canceled |
#1261929
amd64
linux
|
unit:gcc:asan |
|
|
|||||
canceled |
#1261923
amd64
linux
|
unit:gcc:buster:amd64 |
|
|
|||||
canceled |
#1261919
amd64
linux
|
unit:gcc:centos6:amd64 |
|
|
|||||
canceled |
#1261920
amd64
linux
|
unit:gcc:centos7:amd64 |
|
|
|||||
canceled |
#1261921
amd64
linux
|
unit:gcc:centos8:amd64 |
|
|
|||||
canceled |
#1261928
amd64
linux
|
unit:gcc:focal:amd64 |
|
|
|||||
canceled |
#1261933
amd64
linux
|
unit:gcc:mutexatomics |
|
|
|||||
canceled |
#1261924
amd64
linux
|
unit:gcc:sid:amd64 |
|
|
|||||
canceled |
#1261925
i386
linux
|
unit:gcc:sid:i386 |
|
|
|||||
canceled |
#1261935
amd64
linux
|
unit:gcc:softhsm2.4 |
|
|
|||||
canceled |
#1261936
amd64
linux
|
unit:gcc:softhsm2.6 |
|
|
|||||
canceled |
#1261922
amd64
linux
|
unit:gcc:stretch:amd64 |
|
|
|||||
canceled |
#1261931
amd64
linux
|
unit:gcc:tsan |
|
|
|||||
canceled |
#1261926
amd64
linux
|
unit:gcc:tumbleweed:amd64 |
|
|
|||||
canceled |
#1261927
amd64
linux
|
unit:gcc:xenial:amd64 |
|
|
|||||
canceled |
#1261939
amd64
linux
|
unit:nolibtool:sid:amd64 |
|
|
|||||
System | |||||||||
canceled |
#1261952
amd64
linux
|
system:clang:asan |
|
|
|||||
canceled |
#1261956
amd64
linux
|
system:clang:buster:amd64 |
|
|
|||||
canceled |
#1261959
amd64
libvirt
|
system:clang:freebsd11:amd64 |
|
|
|||||
canceled |
#1261960
amd64
libvirt
|
system:clang:freebsd12:amd64 |
|
|
|||||
canceled |
#1261954
amd64
linux
allowed to fail
|
system:clang:tsan |
|
|
|||||
canceled |
#1261940
amd64
linux
|
system:gcc:alpine3.12:amd64 |
|
|
|||||
canceled |
#1261951
amd64
linux
|
system:gcc:asan |
|
|
|||||
canceled |
#1261945
amd64
linux
|
system:gcc:buster:amd64 |
|
|
|||||
canceled |
#1261941
amd64
linux
|
system:gcc:centos6:amd64 |
|
|
|||||
canceled |
#1261942
amd64
linux
|
system:gcc:centos7:amd64 |
|
|
|||||
canceled |
#1261943
amd64
linux
|
system:gcc:centos8:amd64 |
|
|
|||||
canceled |
#1261950
amd64
linux
|
system:gcc:focal:amd64 |
|
|
|||||
canceled |
#1261955
amd64
linux
|
system:gcc:mutexatomics |
|
|
|||||
canceled |
#1261946
amd64
linux
|
system:gcc:sid:amd64 |
|
|
|||||
canceled |
#1261947
i386
linux
|
system:gcc:sid:i386 |
|
|
|||||
canceled |
#1261957
amd64
linux
|
system:gcc:softhsm2.4 |
|
|
|||||
canceled |
#1261958
amd64
linux
|
system:gcc:softhsm2.6 |
|
|
|||||
canceled |
#1261944
amd64
linux
|
system:gcc:stretch:amd64 |
|
|
|||||
canceled |
#1261953
amd64
linux
allowed to fail
|
system:gcc:tsan |
|
|
|||||
canceled |
#1261948
amd64
linux
|
system:gcc:tumbleweed:amd64 |
|
|
|||||
canceled |
#1261949
amd64
linux
|
system:gcc:xenial:amd64 |
|
|
|||||
canceled |
#1261961
amd64
linux
|
system:nolibtool:sid:amd64 |
|
|
|||||
Docs | |||||||||
canceled |
#1261962
amd64
linux
|
docs |
00:00:55
|
|
|||||
Postcheck | |||||||||
passed |
#1261966
amd64
linux
|
cppcheck |
00:00:21
|
|
|||||
passed |
#1261963
amd64
linux
|
flake8 |
00:00:21
|
|
|||||
canceled |
#1261967
amd64
linux
|
gcov |
|
|
|||||
passed |
#1261964
amd64
linux
|
pylint |
00:00:23
|
|
|||||
canceled |
#1261965
amd64
linux
|
scan-build |
00:00:53
|
|
|||||