914
914
}
915
915
916
916
create_asan_wrapper () {
917
- local asan_wrapper default_asan_options default_ubsan_options default_environment
917
+ local asan_wrapper default_asan_options default_ubsan_options default_environment manager_environment
918
918
919
919
[[ -z " $ASAN_RT_PATH " ]] && dfatal " ASAN_RT_PATH is empty, but it shouldn't be"
920
920
@@ -948,12 +948,17 @@ EOF
948
948
" UBSAN_OPTIONS='$default_ubsan_options '"
949
949
" ASAN_RT_PATH='$ASAN_RT_PATH '"
950
950
)
951
+ manager_environment=(
952
+ " ASAN_OPTIONS='$default_asan_options :log_path=/systemd-pid1.asan.log:log_to_syslog=1'"
953
+ " UBSAN_OPTIONS='$default_ubsan_options :log_path=/systemd-pid1.ubsan.log:log_to_syslog=1'"
954
+ " ASAN_RT_PATH='$ASAN_RT_PATH '"
955
+ )
951
956
952
957
mkdir -p " ${initdir:? } /etc/systemd/system.conf.d/"
953
958
cat > " ${initdir:? } /etc/systemd/system.conf.d/asan.conf" << EOF
954
959
[Manager]
955
960
DefaultEnvironment=${default_environment[*]}
956
- ManagerEnvironment=${default_environment [*]}
961
+ ManagerEnvironment=${manager_environment [*]}
957
962
DefaultTimeoutStartSec=180s
958
963
DefaultStandardOutput=journal+console
959
964
EOF
@@ -1002,7 +1007,7 @@ EOF
1002
1007
set -eux
1003
1008
1004
1009
export PATH="/sbin:/bin:/usr/sbin:/usr/bin"
1005
- export ${default_environment [@]}
1010
+ export ${manager_environment [@]}
1006
1011
[[ -n "\$ ASAN_OPTIONS" && -n "\$ UBSAN_OPTIONS" ]]
1007
1012
1008
1013
exec "$ROOTLIBDIR /systemd" "\$ @"
@@ -1534,6 +1539,7 @@ create_empty_image_rootdir() {
1534
1539
check_asan_reports () {
1535
1540
local ret=0
1536
1541
local root=" ${1:? } "
1542
+ local log report
1537
1543
1538
1544
if get_bool " $IS_BUILT_WITH_ASAN " ; then
1539
1545
ls -l " $root "
@@ -1542,12 +1548,15 @@ check_asan_reports() {
1542
1548
ret=$(( ret+ 1 ))
1543
1549
fi
1544
1550
1545
- journald_report=" $( find " $root " -name " systemd-journald.*san.log*" -exec cat {} \; ) "
1546
- if [[ -n " $journald_report " ]]; then
1547
- printf " %s\n" " $journald_report "
1548
- cat " $root /systemd-journald.out" || :
1549
- ret=$(( ret+ 1 ))
1550
- fi
1551
+ for log in pid1 journald; do
1552
+ report=" $( find " $root " -name " systemd-$log .*san.log*" -exec cat {} \; ) "
1553
+ if [[ -n " $report " ]]; then
1554
+ printf " %s\n" " $report "
1555
+ # shellcheck disable=SC2015
1556
+ [[ " $log " == journald ]] && cat " $root /systemd-journald.out" || :
1557
+ ret=$(( ret+ 1 ))
1558
+ fi
1559
+ done
1551
1560
1552
1561
# May 08 13:23:31 H testleak[2907148]: SUMMARY: AddressSanitizer: 4 byte(s) leaked in 1 allocation(s).
1553
1562
pids=" $(
0 commit comments