[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: All services that require a restart from libc6 upgrade...



Ben Collins <bcollins@debian.org> writes:

> > We need to find a way to not require the restarts. Perhaps the nss modules
> > could provide the old nss functions as versioned 2.0 symbols? 
> > 
> > (Sigh, this would all go away if people just bumped sonames when they had to.)
> 
> This isn't a matter of the NSS module interface changing. This is a matter
> of the new modules being loaded while the old libc is in memory. It can't
> be helped, things have to be restarted.

No, it's a matter of the libc interface changing.

Since the soname didn't change now everything else in the system needs to be
able to handle either libc being present. The nss modules need to be able to
handle being loaded into the old libc or the new libc. Either they need to be
carefully constructed to avoid referring to any new extensions or they need to
include every function compiled twice. This is a tremendous headache of course
but it will be the only way to fix the problem properly.

On this topic, I'm trying to get Oracle working. Since as we all know libc6
2.2 is "perfectly compatible" it ought to work :) In reality it doesn't work
so I'm trying to get it to use the old libc6. Someone on this list claimed you
could have the two installed simultaneously but it doesn't seem to be working.

Alternatively, is anyone aware of any interface changes in libc6 2.2 somewhere
near the SysV shared memory and semaphore functions? Oracle seems to be
getting stuck timing out on a semop over and over again:

rt_sigprocmask(SIG_BLOCK, [], NULL, 8)  = 0
gettimeofday({972872901, 848023}, NULL) = 0
rt_sigprocmask(SIG_UNBLOCK, [], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [RT_0], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [ALRM], NULL, 8) = 0
setitimer(ITIMER_REAL, {it_interval={0, 0}, it_value={0, 0}}, NULL) = 0
rt_sigprocmask(SIG_UNBLOCK, [ALRM], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [RT_0], 8) = 0
rt_sigprocmask(SIG_BLOCK, [ALRM], NULL, 8) = 0
gettimeofday({972872901, 848600}, NULL) = 0
setitimer(ITIMER_REAL, {it_interval={0, 0}, it_value={1, 20000}}, NULL) = 0
rt_sigprocmask(SIG_UNBLOCK, [ALRM], NULL, 8) = 0
semop(2432, 0xbfffcd38, 1)              = -1 EINTR (Interrupted system call)
--- SIGALRM (Alarm clock) ---
rt_sigprocmask(SIG_BLOCK, [], NULL, 8)  = 0
gettimeofday({972872902, 868072}, NULL) = 0
rt_sigprocmask(SIG_UNBLOCK, [], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [RT_0], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [ALRM], NULL, 8) = 0
setitimer(ITIMER_REAL, {it_interval={0, 0}, it_value={0, 0}}, NULL) = 0
rt_sigprocmask(SIG_UNBLOCK, [ALRM], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [RT_0], 8) = 0
rt_sigprocmask(SIG_BLOCK, [ALRM], NULL, 8) = 0
gettimeofday({972872902, 868659}, NULL) = 0
setitimer(ITIMER_REAL, {it_interval={0, 0}, it_value={1, 20000}}, NULL) = 0
rt_sigprocmask(SIG_UNBLOCK, [ALRM], NULL, 8) = 0
semop(2432, 0xbfffcd38, 1 <unfinished ...>
.
.
.
repeated until I kill it.


-- 
greg



Reply to: