Ben Collins <[EMAIL PROTECTED]> 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