1 (edited by abompard 2008-09-17 12:21:19)

Topic: Erreur de segmentation sur Fedora 9

Avec la version 1.0 ou le CVS d'aujourd'hui, sur une Fedora 9 :

$ MySecureShell
Erreur de segmentation

Avec strace :

$ strace MySecureShell 2>&1 | tail
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb80c2000
read(3, "root:x:0:0:root:/root:/bin/bash\n"..., 4096) = 3595
close(3)                                = 0
munmap(0xb80c2000, 4096)                = 0
open("/etc/ssh/sftp_config", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=3687, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb80c2000
read(3, "## MySecureShell Configuration F"..., 4096) = 3687
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++

Dans GDB:

(gdb) bt
#0  0x002daf65 in fgets () from /lib/libc.so.6
#1  0x0804b680 in load_config_file ()
#2  0x0804bbbb in load_config ()
#3  0x0804a564 in main ()

SELinux est désactivé, mon fichier de conf est le fichier de conf par défaut. Dites-moi comment je pourrais vous aider à débugguer ça smile

Merci !

Re: Erreur de segmentation sur Fedora 9

Bonjour,

Si vous avez les connaissances, il est possible de faire:
- une compilation en mode debug de MySecureShell, faire "make DEBUG=3"
- passage sous Valgrind, faire "valgrind --tool=memcheck --log-file=/tmp/MSS-bug.log MySecureShell"

Et après un petit post du fichier devrait permettre d'en savoir plus big_smile

Re: Erreur de segmentation sur Fedora 9

Je connais pas trop le C, mais je sais suivre des instructions wink

Et voilà :

==7825== Memcheck, a memory error detector.
==7825== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al.
==7825== Using LibVEX rev 1804, a library for dynamic binary translation.
==7825== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP.
==7825== Using valgrind-3.3.0, a dynamic binary instrumentation framework.
==7825== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al.
==7825== For more details, rerun with: -v
==7825==
==7825== My PID = 7825, parent PID = 27898.  Prog and args are:
==7825==    MySecureShell
==7825==
==7825== Invalid read of size 4
==7825==    at 0x41F6F65: fgets (in /lib/libc-2.8.so)
==7825==    by 0x804B67F: load_config_file (conf.c:207)
==7825==    by 0x804BBBA: load_config (conf.c:106)
==7825==    by 0x804A563: main (main.c:123)
==7825==  Address 0x31f078 is not stack'd, malloc'd or (recently) free'd
==7825==
==7825== Process terminating with default action of signal 11 (SIGSEGV)
==7825==  Access not within mapped region at address 0x31F078
==7825==    at 0x41F6F65: fgets (in /lib/libc-2.8.so)
==7825==    by 0x804B67F: load_config_file (conf.c:207)
==7825==    by 0x804BBBA: load_config (conf.c:106)
==7825==    by 0x804A563: main (main.c:123)
==7825==
==7825== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 21 from 1)
==7825== malloc/free: in use at exit: 1,772 bytes in 15 blocks.
==7825== malloc/free: 63 allocs, 48 frees, 5,512 bytes allocated.
==7825== For counts of detected errors, rerun with: -v
==7825== searching for pointers to 15 not-freed blocks.
==7825== checked 161,340 bytes.
==7825==
==7825== LEAK SUMMARY:
==7825==    definitely lost: 0 bytes in 0 blocks.
==7825==      possibly lost: 0 bytes in 0 blocks.
==7825==    still reachable: 1,772 bytes in 15 blocks.
==7825==         suppressed: 0 bytes in 0 blocks.
==7825== Rerun with --leak-check=full to see details of leaked memory.

Re: Erreur de segmentation sur Fedora 9

Merci de votre aide.

Bon je vois pas trop comme ça...

Alors je vais procéder à l'ancienne et je vais aller installer Fedora 9 smile

Re: Erreur de segmentation sur Fedora 9

Cool. Si tu as des problèmes pour installer ou pour reproduire le segfault, hésite pas. Merci.

Re: Erreur de segmentation sur Fedora 9

Merci smile

Je te tiens au courant de l'avancement du debug

Re: Erreur de segmentation sur Fedora 9

Rhaaa trop fort, tu as trouvé un joli bug dans MySecureShell !!!

Merci beaucoup de cette jolie découverte big_smile

Re: Erreur de segmentation sur Fedora 9

Euh, de rien, content d'avoir pu aider smile
Est-ce que tu posterais ici un lien vers le patch qui corrige ? A moins qu'une prochaine version ne sorte bientôt bien sûr...
Merci !

Re: Erreur de segmentation sur Fedora 9

Désolé j'avais oublier de préciser.

Donc pour l'instant, il n'est pas prévu d'un patch donc le moyen de contournement:
- supprimer toutes les lignes vides et les lignes avec seulement du commentaire

Avec ces modifications le bug ne se produira pas... roll

Sinon on va essayer de sortir la prochaine version bientôt.

Au passage on a un besoin constant de testeur, pour juste vérifier que tout fonctionne bien (pas besoin de technique), ça te tenterais un peu ? big_smile

Re: Erreur de segmentation sur Fedora 9

Hummm ok... (c'est bizarre comme bug...)

Pour le test, je sais pas encore si je vais utiliser MySecureShell à long terme, donc je préfère pas m'engager. Mais dans un premier temps je peux, oui smile

Re: Erreur de segmentation sur Fedora 9

On travaille tous un peu sur MySecureShell et personne n'est contraint de travailler.

Après tu dis quand tu peux et si tu peux et on s'arrange entre nous smile

Par exemple on a besoin souvent de tester, donc le "job" consiste:
- tester un peu tout
- si il y a un soucis, essayer de le reproduire et juste nous indiquer comment le reproduire

Et c'est tout ! Car on a tous notre vie personnel à coté wink

Re: Erreur de segmentation sur Fedora 9

Bon, alors ça roule smile

Le mieux ce serait d'établir un plan de test (liste des fonctionnalités supportées et test unitaire de chacune d'entre elles). Si vous avez pas ça je peux éventuellement me pencher sur la question. On procède comment ? Mails perso ? Mailing-lists ? Canal IRC ? Salon Jabber ?

Par contre je ne peux tester que sur Fedora, en général avec la dernière version.

Re: Erreur de segmentation sur Fedora 9

On a déjà 2/3 trucs en place mais il reste beaucoup à faire.

Pour parler commence par nous envoyer un mail sur SF (teka2nerdman ... users.sourceforge.net) après je t'en dirais plus wink