Comment 50 for bug 672177

Revision history for this message
Clint Byrum (clint-fewbar) wrote : Re: [Bug 672177] Re: libc6 upgrade causes umount to fail on shutdown because init cannot be restarted

On Sat, 2011-01-22 at 11:50 +0000, ingo wrote:
> Thanks for Lucid-fix. I did immediately test with new 'libc6' and
> 'upstart' from Lucid-proposed:
>
> 1. just new 'libc6' -> does not change anything (8 orphaned inodes after
> reboot).
>
> 2. + new 'upstart' -> gives 1 orphaned inode after reboot.
>
> 3. new ('libc6' + 'upstart'), 'apt-get install --reinstall libc6 &&
> shutdown -r now' -> 4 orphaned inodes.
>
> So it improves the situation definitely, but does not solve it
> completely. Did I miss something to update?
>

No Ingo, you did everything right, I see similar effects.

That is why sysvinit was added to the bug report. The issue is that
while we've restored the ability to tell init to re-exec itself, we have
also introduced a race condition. telinit u exits as soon as it has sent
SIGTERM to pid 1. Almost the very next line in /etc/init.d/umountroot
attempts the remount of / as readonly. If the signal handler doesn't
complete the re-exec before this, then the remount will still fail.

I've been testing a few ways to make telinit or umountroot block until
init re-execs. The important thing is that this way 10.04.2 will ship
with an init that *can* re-exec.

If you add 'sleep 1' after the telinit u line in /etc/init.d/umountroot,
that should give you a much better chance of succeeding the remount.
Hopefully there will be a proper fix available for that early next week,
but I don't know if it will be accepted for 10.04.2 or have to come as
an update to 10.04.2.