The dist-upgrader tarball contains a copy of invoke-rc.d which it patches so that errors are not fatal and the release upgrade can proceed. Here's part of the patch as an example:
1 --- /usr/sbin/invoke-rc.d 2018-11-21 15:15:24.000000000 -0800
2 +++ DistUpgrade/imported/invoke-rc.d 2019-04-12 09:48:59.230957528 -0700
3 @@ -346,6 +346,10 @@ verifyrclink () {
4 shift
5 done
6 if test x${doexit} != x && test x${RETRY} = x; then
7 + if [ -n "$RELEASE_UPGRADE_IN_PROGRESS" ]; then
8 + printerror "release upgrade in progress, error is not fatal"
9 + exit 0
10 + fi
11 exit ${doexit}
12 fi
13 return 0
The failure in this bug can be tested quickly in a chroot by installing the packages sasl2-bin and ubuntu-release-upgrader-core.
The dist-upgrader tarball contains a copy of invoke-rc.d which it patches so that errors are not fatal and the release upgrade can proceed. Here's part of the patch as an example:
1 --- /usr/sbin/ invoke- rc.d 2018-11-21 15:15:24.000000000 -0800 imported/ invoke- rc.d 2019-04-12 09:48:59.230957528 -0700 UPGRADE_ IN_PROGRESS" ]; then
2 +++ DistUpgrade/
3 @@ -346,6 +346,10 @@ verifyrclink () {
4 shift
5 done
6 if test x${doexit} != x && test x${RETRY} = x; then
7 + if [ -n "$RELEASE_
8 + printerror "release upgrade in progress, error is not fatal"
9 + exit 0
10 + fi
11 exit ${doexit}
12 fi
13 return 0
The failure in this bug can be tested quickly in a chroot by installing the packages sasl2-bin and ubuntu- release- upgrader- core.