Re: __libc_fork asertion with libc2.3.2.ds1-13 and kernel 2.6.5
At Wed, 30 Jun 2004 16:40:52 +0200,
Frank Hempel wrote:
> while dist-upgrading from stable to testing I encounterd the following
> problem, also discussed in
> http://www.mail-archive.com/debian-glibc@lists.debian.org/msg08274.html
> and treated as bug#226688.
>
> Every program using fork() is thrwoing the assertion:
> sh: ../nptl/sysdeps/unix/sysv/linux/fork.c:132: __libc_fork: Assertion
> `({ __typeof (self->tid) __value; if (sizeof (__value) == 1) asm
> volatile ("movb %%gs:%P2,%b0" : "=q" (__value) : "0" (0), "i" (((size_t)
> &((struct pthread *)0)->tid))); else if (sizeof (__value) == 4) asm
> volatile ("movl %%gs:%P1,%0" : "=r" (__value) : "i" (((size_t) &((struct
> pthread *)0)->tid))); else { if (sizeof (__value) != 8) abort (); asm
> volatile ("movl %%gs:%P1,%%eax\n\t" "movl %%gs:%P2,%%edx" : "=A"
> (__value) : "i" (((size_t) &((struct pthread *)0)->tid)), "i" (((size_t)
> &((struct pthread *)0)->tid) + 4)); } __value; }) != ppid' failed.
The conclusion of thread #226688 is: don't use such kernel with
invalid version. We put libc.preinst that obstruct to install such
invalid kernel. I guess you had installed glibc on another normal
kernel, then you restarted with newer (invalid) kernel.
Please check 2.3.2.ds1-13 /var/lib/dpkg/info/libc6.preinst:
# Test to make sure z < 255, in x.y.z-n form of kernel version
# Also make sure we don't trip on x.y.zFOO-n form
#kernel_rev=$(uname -r | tr -- - . | cut -d. -f3 | tr -d '[:alpha:]')
kernel_rev=$(uname -r | sed 's/\([0-9]*\.[0-9]*\.\)\([0-9]*\)\(.*\)/\2/')
if [ "$kernel_rev" -ge 255 ]
then
echo WARNING: Your kernel version indicates a revision number
echo of 255 or greater. Glibc has a number of built in
echo assumptions that this revision number is less than 255.
echo If you\'ve built your own kernel, please make sure that any
echo custom version numbers are appended to the upstream
echo kernel number with a dash or some other delimiter.
exit 1
fi
Regards,
-- gotom
Reply to: