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

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: