core dump de "patch"

Page principale

Répondre à ce message
Auteur: Francois-Xavier 'FiX' KOWALSKI
Date:  
À: Mailing-List GUILDE
Sujet: core dump de "patch"
Salut a tous,

j'ai un soucis qui m'empeche de derouler des patchs sur mon noyau
(ainsi que tout autre type de patch). La commande "patch" fait
core-dump.

Un peu de contexte: RedHat 7.1, noyau 2.4.9-21 (il me manque un
update), glibc-2.2.4-19.3 (idem). J'ai re-genere ma commande "patch"
pour etre sur d'utiliser les bonnes libc sur ma machine (et pas des
liens de compatibilite).

Mon /etc/ld.so.conf contient ce qui suit:
/usr/X11R6/lib
/usr/kerberos/lib
/usr/i486-linux-libc5/lib
/usr/i386-glibc21-linux/lib
/usr/lib/sane
/usr/lib/qt-2.3.0/lib
/usr/lib

Et la commande patch va bien chercher les bonnes librairies:

 ldd -v /usr/bin/patch 
    libc.so.6 => /lib/i686/libc.so.6 (0x40026000)
    /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)


    Version information:
    /usr/bin/patch:
        libc.so.6 (GLIBC_2.1.3) => /lib/i686/libc.so.6
        libc.so.6 (GLIBC_2.1) => /lib/i686/libc.so.6
        libc.so.6 (GLIBC_2.2) => /lib/i686/libc.so.6
        libc.so.6 (GLIBC_2.0) => /lib/i686/libc.so.6
    /lib/i686/libc.so.6:
        ld-linux.so.2 (GLIBC_2.1.1) => /lib/ld-linux.so.2
        ld-linux.so.2 (GLIBC_2.2.3) => /lib/ld-linux.so.2
        ld-linux.so.2 (GLIBC_2.1) => /lib/ld-linux.so.2
        ld-linux.so.2 (GLIBC_2.2) => /lib/ld-linux.so.2
        ld-linux.so.2 (GLIBC_2.0) => /lib/ld-linux.so.2


L'execution sous gdb donne une erreur dans le sprintf dans le
buffer-cache:

    (gdb) run < ../patch-2.4.17 
    Starting program: /usr/bin/patch < ../patch-2.4.17

    
    Program received signal SIGSEGV, Segmentation fault.
    0x4007dabc in _IO_vfprintf (s=0x4015a860, format=0x8056e04 "%s: ", ap=0xbfffe2ac) at ../sysdeps/i386/i486/bits/string.h:530
    530    ../sysdeps/i386/i486/bits/string.h: No such file or directory.
            in ../sysdeps/i386/i486/bits/string.h
    (gdb) 


Ce point est confirme par l'execution sous strace:

    strlen(0x0805a140, 0x0805a140, 1, 0x40017428, 5)  = 1
    strncmp("cvs", "'", 1)                            = 60
    strncmp("vs", "'", 1)                             = 79
    strncmp("s", "'", 1)                              = 76
    fflush(0x4015a6e0)                                = 0
    fprintf(0x4015a860, "%s: ", "EOFEOFEOFEOFEOFEOFEOFEOFEOFEOFEOFEOFEOFEOFEOFEOFEOFEOFEOFEOFEOFEOFEOFEOFEOFEOFEOFEOFEOFEOFEOFEOF"... <unfinished ...>
    --- SIGSEGV (Segmentation fault) ---
    +++ killed by SIGSEGV +++


Mais je n'arrive pas a faire le point pour ce qui est des dernieres
erreurs sous strace (qui n'ont peut-etre pas de rapport):

    gettimeofday({1019857218, 378300}, NULL) = 0
    getpid()                                = 1647
    lstat64("/var/tmp/fxk/poU2k8tS", 0xbfffd870) = -1 ENOENT (No such file or directory)
    getpid()                                = 1647
    lstat64("/var/tmp/fxk/piv4TxN8", 0xbfffd870) = -1 ENOENT (No such file or directory)
    getpid()                                = 1647
    lstat64("/var/tmp/fxk/prGtRX6o", 0xbfffd870) = -1 ENOENT (No such file or directory)
    getpid()                                = 1647
    lstat64("/var/tmp/fxk/ppTtdoqF", 0xbfffd870) = -1 ENOENT (No such file or directory)
    --- SIGSEGV (Segmentation fault) ---
    +++ killed by SIGSEGV +++


qq'un pourrait-il me donner un coup de main, cad:

- tout m'expliquer :-)
- executer sous strace & ltrace la meme commande & me dire quel est le
resultat "normal"

Marci d'avance

A+
--
François-Xavier 'FiX' KOWALSKI