Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/07/2008, à 10:32

jeff121

message d'erreur que je ne comprends pas...

Bonjour

(je suis sous ubuntu 7.10)
j'ai compilé mon programme (qui est en C), il n'y a pas d'erreurs.
je le lance... au début ça va puis le terminal me met cela:

*** stack smashing detected ***: ./main.o terminated
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x48)[0xb7f54138]
/lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x0)[0xb7f540f0]
./main.o[0x804a0f6]
./main.o[0x804a0e5]
./main.o[0x804a0e5]
./main.o[0x804a0e5]
======= Memory map: ========
08048000-0804c000 r-xp 00000000 08:03 329885     /home/jeff/Documents/main.o
0804c000-0804d000 rw-p 00003000 08:03 329885     /home/jeff/Documents/main.o
0804d000-0806e000 rw-p 0804d000 00:00 0          [heap]
b7e66000-b7e67000 rw-p b7e66000 00:00 0
b7e67000-b7fb0000 r-xp 00000000 08:03 56065      /lib/tls/i686/cmov/libc-2.7.so
b7fb0000-b7fb1000 r--p 00149000 08:03 56065      /lib/tls/i686/cmov/libc-2.7.so
b7fb1000-b7fb3000 rw-p 0014a000 08:03 56065      /lib/tls/i686/cmov/libc-2.7.so
b7fb3000-b7fb6000 rw-p b7fb3000 00:00 0
b7fbc000-b7fc6000 r-xp 00000000 08:03 1055167    /lib/libgcc_s.so.1
b7fc6000-b7fc7000 rw-p 0000a000 08:03 1055167    /lib/libgcc_s.so.1
b7fc7000-b7fca000 rw-p b7fc7000 00:00 0
b7fca000-b7fcb000 r-xp b7fca000 00:00 0          [vdso]
b7fcb000-b7fe5000 r-xp 00000000 08:03 1055141    /lib/ld-2.7.so
b7fe5000-b7fe7000 rw-p 00019000 08:03 1055141    /lib/ld-2.7.so
bfb0a000-bfb1f000 rw-p bffeb000 00:00 0          [stack]
Abandon

c'est un problème de stack...
Que faut-il que je fasse?


Merci d'avance de votre réponse.

#2 Le 11/07/2008, à 10:34

blahnotblahblah

Re : message d'erreur que je ne comprends pas...

si tu démarres de nouveau ton main.o via la commande
strace main.o
obtiens-tu des informations plus précises ?
as-tu compilé en mode debug ?

big_smile


proverbe ashanti: "Quand la maison brûle, on ne perd pas de temps à pérorer".

Hors ligne

#3 Le 11/07/2008, à 11:00

jeff121

Re : message d'erreur que je ne comprends pas...

avec trace, j'obtient:

execve("./main.o", ["./main.o"], [/* 36 vars */]) = 0
brk(0)                                  = 0x804d000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f49000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=69991, ...}) = 0
mmap2(NULL, 69991, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f37000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260e\1"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1364388, ...}) = 0
mmap2(NULL, 1369712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7de8000
mmap2(0xb7f31000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x149) = 0xb7f31000
mmap2(0xb7f34000, 9840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7f34000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7de7000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7de76b0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0xb7f31000, 4096, PROT_READ)   = 0
munmap(0xb7f37000, 69991)               = 0
brk(0)                                  = 0x804d000
brk(0x806e000)                          = 0x806e000
open("grammaire.bnf", O_RDONLY)       = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=1335, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f48000
read(3, "<DEBUT_FICHIER> ::= FICHIER {<TI"..., 4096) = 1335
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0xb7f48000, 4096)                = 0
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f48000

...

open("/dev/tty", O_RDWR|O_NOCTTY|O_NONBLOCK) = 3
writev(3, [{"*** ", 4}, {"stack smashing detected", 23}, {" ***: ", 6}, {"./main.o", 8}, {" terminated\n", 12}], 5*** stack smashing detected ***: ./main.o terminated
) = 53
open("/etc/ld.so.cache", O_RDONLY)      = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=69991, ...}) = 0
mmap2(NULL, 69991, PROT_READ, MAP_PRIVATE, 4, 0) = 0xb7dd5000
close(4)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libgcc_s.so.1", O_RDONLY)    = 4
read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0p\31\0\000"..., 512) = 512
fstat64(4, {st_mode=S_IFREG|0644, st_size=42700, ...}) = 0
mmap2(NULL, 41700, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0xb7f3d000
mmap2(0xb7f47000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0xa) = 0xb7f47000
close(4)                                = 0
munmap(0xb7dd5000, 69991)               = 0
write(3, "======= Backtrace: =========\n", 29======= Backtrace: =========
) = 29
writev(3, [{"/lib/tls/i686/cmov/libc.so.6", 28}, {"(", 1}, {"__fortify_fail", 14}, {"+0x", 3}, {"48", 2}, {")", 1}, {"[0x", 3}, {"b7ed5138", 8}, {"]\n", 2}], 9/lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x48)[0xb7ed5138]
) = 62
writev(3, [{"/lib/tls/i686/cmov/libc.so.6", 28}, {"(", 1}, {"__fortify_fail", 14}, {"+0x", 3}, {"0", 1}, {")", 1}, {"[0x", 3}, {"b7ed50f0", 8}, {"]\n", 2}], 9/lib/tls/i) = 10
writev(3, [{"./main.o", 8}, {"[0x", 3}, {"804a0e0", 7}, {"]\n", 2}], 4./main.o[0x804a0e0]
) = 20
writev(3, [{"./main.o", 8}, {"[0x", 3}, {"804a0cf", 7}, {"]\n", 2}], 4./main.o[0x804a0cf]
) = 20
writev(3, [{"./main.o", 8}, {"[0x", 3}, {"804a0cf", 7}, {"]\n", 2}], 4./main.o[0x804a0cf]
) = 20
writev(3, [{"./main.o", 8}, {"[0x", 3}, {"804a0cf", 7}, {"]\n", 2}], 4./main.o[0x804a0cf]
) = 20
write(3, "======= Memory map: ========\n", 29======= Memory map: ========
) = 29
open("/proc/self/maps", O_RDONLY)       = 4
read(4, "08048000-0804c000 r-xp 00000000 "..., 1024) = 1024
write(3, "08048000-0804c000 r-xp 00000000 "..., 102408048000-0804c000 r-xp 00000000 08:03 329885     /home/jeff/main.o
0804c000-0804d000 rw-p 00003000 08:03 329885     /home/jeff/main.o
0804d000-0806e000 rw-p 0804d000 00:00 0          [heap]
b7de7000-b7de8000 rw-p b7de7000 00:00 0
b7de8000-b7f31000 r-xp 00000000 08:03 56065      /lib/tls/i686/cmov/libc-2.7.so
b7f31000-b7f32000 r--p 00149000 08:03 56065      /lib/tls/i686/cmov/libc-2.7.so
b7f32000-b7f34000 rw-p 0014a000 08:03 56065      /lib/tls/i686/cmov/libc-2.7.so
b7f34000-b7f37000 rw-p b7f34000 00:00 0
b7f3d000-b7f47000 r-xp 00000000 08:03 1055167    /lib/libgcc_s.so.1
b7f47000-b7f48000 rw-p 0000a000 08:03 1055167    /lib/libgcc_s.so.1
b7f48000-b7f4b000 rw-p b7f48000 00:00 0
b7f4b000-b7f4c000 r-xp b7f4b000 00:00 0          [vdso]
b7f4c000-b7f66000 r-xp 00000000 08:03 1055141    /lib/ld-2.7.so
b7f66000-b7f68000 rw-p 00019000 08:03 1055141    /lib/ld-2.7.so
bfd18000-bfd2d000 rw-p ) = 1024
read(4, "bffeb000 00:00 0          [stack"..., 1024) = 34
write(3, "bffeb000 00:00 0          [stack"..., 34bffeb000 00:00 0          [stack]
) = 34
read(4, "", 1024)                       = 0
close(4)                                = 0
rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0
gettid()                                = 9434
tgkill(9434, 9434, SIGABRT)             = 0
--- SIGABRT (Aborted) @ 0 (0) ---
+++ killed by SIGABRT +++
Process 9434 detached

Mais je n'y comprends rien...
si quelqu'un pourrait m'éclairer? 

merci bcp!

#4 Le 11/07/2008, à 11:50

Link31

Re : message d'erreur que je ne comprends pas...

jeff121 a écrit :

Que faut-il que je fasse?

Vérifie tes tableaux et tes pointeurs, il y a une erreur quelque part.
Essaie de lancer ton programme sous valgrind, ça devrait te donner des détails sur le problème ainsi que la ligne exacte (si les informations de débogage sont activées).

Hors ligne

#5 Le 11/07/2008, à 13:06

nicolas.sitbon

Re : message d'erreur que je ne comprends pas...

jeff121 a écrit :

j'ai compilé mon programme (qui est en C), il n'y a pas d'erreurs.

On peut savoir quel est ton compilateur et voir aussi tes options de compilation!
Cordialement.

Hors ligne

#6 Le 11/07/2008, à 13:12

Link31

Re : message d'erreur que je ne comprends pas...

b7fbc000-b7fc6000 r-xp 00000000 08:03 1055167    /lib/libgcc_s.so.1

Pour le compilateur, je ne sais pas pourquoi mais j'ai comme l'impression que c'est gcc wink

Hors ligne

#7 Le 11/07/2008, à 14:04

blahnotblahblah

Re : message d'erreur que je ne comprends pas...

dans ton fichier "grammaire.bnf" que tu ouvres pour en retirer 4096 caractères, plusieurs fois semble-t-il, t'es sûr que tu gères bien l'allocation et la désallocation du buffer de réception ?
mais c'est peut-être après que le problème ce pose,
y a beaucoup de lignes que tu sucres derrière ton  ...

big_smile

Dernière modification par blahnotblahblah (Le 11/07/2008, à 14:29)


proverbe ashanti: "Quand la maison brûle, on ne perd pas de temps à pérorer".

Hors ligne

#8 Le 11/07/2008, à 14:12

nicolas.sitbon

Re : message d'erreur que je ne comprends pas...

Link31 a écrit :

b7fbc000-b7fc6000 r-xp 00000000 08:03 1055167    /lib/libgcc_s.so.1

Pour le compilateur, je ne sais pas pourquoi mais j'ai comme l'impression que c'est gcc wink

ça ne prouve rien, j'utilise moi même cette bibliothèque avec tcc et je ne suis pas le seul ($ldd /usr/sbin/synaptic | grep libgcc).
tongue

Hors ligne