Analyser un fichier .core
#1

Bonjour, tlm...


Quelqu'un sait comment je peux faire, ou si c'est possible, d'analyser un fichier .core ?

GPG:Fingerprint ed25519 : 072A 4DA2 8AFD 868D 74CF  9EA2 B85E 9ADA C377 5E8E
GPG:Fingerprint rsa4096 : 4E0D 4AF7 77F5 0FAE A35D  5B62 D0FF 7361 59BF 1733
Répondre
#2

Salut PengouinBSD :-)

J'avoue m'être aussi poser la question il y a quelques mois puis avec mes différentes activités je n'ai pas pris le temps d'y revenir. Tu penses bien que cela m'intéresse aussi. En fait, voici le contexte qui fait que je me suis posé cette question : je programmais en C sur OpenBSD et un plantage de mon programme a créé un fichier core. Après de brèves recherches sur le Net, j'avais dû utiliser des outils de debug (évidemment) pour lire le fichier core... par contre je ne sais plus de quels outils il s'agissait ?! Désolé.

Un OS pour les gouverner tous (FreeBSD), un jail pour les trouver (Unbound)
Un filesystem pour les amener tous et dans les ténèbres les lier (ZFS) ;)
Répondre
#3

D'autant que la dans mon contexte, c'est du ksh - bref du shell - qui appelle une barre de progression en dialog, qui plantouille.
Cela me fait halluciner !

C'est relatif à mon projet BlockZones, j'essaye de le migrer en utilisant un mode non verbeux - ce qui est réglé - et un mode avec Dialog, de manière assez basique !

Bref, je modifie le fichier 'badips.ksh', de telle manière pour intégrer une barre de progression, mais lorsqu'il arrive à la fin de mon tableau 'blocklist', ça plante allégrement avec un message, très sybillin, de type "Bus error (core dumped)" !

Une image vaut mille mots :
[Image: 1500579314.png]

Le code, transformé, de la fonction 'mng_blacklist' est :

Code :
mng_blocklists() {
    
    [ "${verbose}" -eq 1 ] && display_mssg "#" "### Attempt to read datas into array blocklist"

    count="${#blocklists[@]}"
    
    modulo=$(echo "100/$count"|bc)

    if [ "${count}" -gt 0 ]; then
    
        (
                
            #let counter+=$modulo
            #[ $counter -ge 100 ] && break

            for url in "${blocklists[@]}"; do

                ndd="$(echo "${url}" | awk -F'/' '{ print $3 }')"
                file="$(echo "${url##*/}" | sed -e 's#\?#_#g;s#=#_#g;s#php#txt#g;s#\&#_#g')";
                name="${ndd}_${file}"
                filename="${DIR_DL}/${name}"
                
                let x+=$modulo
                
                cat <<EOF
XXX
$x
Manage list $list: ($x%)
=> Download: $url
=> Transform to: $name
XXX
EOF

                
                
                [ "${debug}" -eq 1 ] && printf "file: %s \n" "${file}"

                # define seconds before new dl
                case "${ndd}" in
                    "feeds.dshield.org") seconds=259200 ;;    # 3 days
                    "lists.blocklist.de") seconds=172800 ;;    # 2 days
                    "myip.ms") seconds=864000 ;;    # 10 days
                    "ransomwaretracker.abuse.ch") seconds=2592000 ;;    # 30 days
                    #"sslbl.abuse.ch") seconds=900 ;; # 15 min.
                    #"www.openbl.org") seconds=172800 ;;    # 2 days
                    "www.spamhaus.org") seconds=3600;; # 1 hours
                    #*) seconds=86400;;
                esac

                if [ -f "${filename}" ]; then

                    # get file seconds stat
                    file_seconds=$(stat -f "%m" -t "%s" "${filename}")

                    # calcul diff time in seconds
                    diff_sec=$(echo "${today} - ${file_seconds}" | bc)

                    #unset file_seconds

                    if [ ${diff_sec} -gt ${seconds} ]; then download; fi

                else

                    download

                fi

                case "${ndd}" in
                    "www.openbl.org")
                        uncompress
                    
                        filename="${filename%.gz}"
                    ;;
                esac
            
                purge_files

                make_uniq_list

                unset filename
                
                sleep 2
            
            done
            
            ) | dialog --title "BlockZones :: Manage list" --gauge "Please wait" 10 100

    else

        display_mssg "KO" "It seems not have datas!"
        
        byebye

    fi

    unset count

}


Bref, n'ayant pas de retour réellement pertinent, autre qu'un fichier 'dialog.core', on fait quoi ?!

GPG:Fingerprint ed25519 : 072A 4DA2 8AFD 868D 74CF  9EA2 B85E 9ADA C377 5E8E
GPG:Fingerprint rsa4096 : 4E0D 4AF7 77F5 0FAE A35D  5B62 D0FF 7361 59BF 1733
Répondre
#4

Ah ok. J'avais bien vu que tu avais continué de travailler sur BlockZones mais je ne pensais que tu avais aussi bien progressé. :-) Pour ton souci, je ne sais pas. Désolé. Ce serait effectivement bien de pouvoir lire le dialog.core. (dialog est écrit en C ? Non ?)

Citation :Bref, n'ayant pas de retour réellement pertinent, autre qu'un fichier 'dialog.core', on fait quoi ?!

Tatattata... Il y a tout de même une évidence. Je suppose de façon légitime que pgl.yoyo* pourrait avoir un lien avec ton plantage. Retire-le des sources pour voir ! ;-)

* Comme tu le sais, ce lien m'a toujours embêté sur FreeBSD. :-(

Un OS pour les gouverner tous (FreeBSD), un jail pour les trouver (Unbound)
Un filesystem pour les amener tous et dans les ténèbres les lier (ZFS) ;)
Répondre
#5

Non, yoyo n'est pas intégré dans la liste domains, nécessité par 'badips'...
Donc, rien à voir...

Le script plante bel et bien à la fin du traitement de la dernière liste, quelle qu'elle soit, géré dans le "tableau" nommé 'blocklist'... au moment de rendre la main... et je n'en comprend pas la raison !

GPG:Fingerprint ed25519 : 072A 4DA2 8AFD 868D 74CF  9EA2 B85E 9ADA C377 5E8E
GPG:Fingerprint rsa4096 : 4E0D 4AF7 77F5 0FAE A35D  5B62 D0FF 7361 59BF 1733
Répondre
#6

Citation :Non, yoyo n'est pas intégré dans la liste domains, nécessité par 'badips'...
Donc, rien à voir...

PengouinBSD, je plaisantais. Je sais cela pour avoir vu de l'intérieur BlockZones encore récemment. ;-)

Citation :Le script plante bel et bien à la fin du traitement de la dernière liste, quelle qu'elle soit, géré dans le "tableau" nommé 'blocklist'... au moment de rendre la main... et je n'en comprend pas la raison !

Ok.

Un OS pour les gouverner tous (FreeBSD), un jail pour les trouver (Unbound)
Un filesystem pour les amener tous et dans les ténèbres les lier (ZFS) ;)
Répondre
#7

En général, tu executes:
Code :
gdb program core_file
Voir man gdb
Le .core place ton programme dans l'état où il a planté, ce qui te permet de surveiller les variables, les fonctions appelées et leurs arguments, le stack, etc ...
Normalement, le nom du .core correspond au programme qui a planté.

Dans ton cas, c'est quoi? dialog? ksh?
Répondre
#8

dialog.core généralement Wink

GPG:Fingerprint ed25519 : 072A 4DA2 8AFD 868D 74CF  9EA2 B85E 9ADA C377 5E8E
GPG:Fingerprint rsa4096 : 4E0D 4AF7 77F5 0FAE A35D  5B62 D0FF 7361 59BF 1733
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)