1 (edited by Skippy 2010-08-13 09:39:08)

Topic: Segfault quand multiples connexions

Bonjour,

Suite à un test de transfert de nombreux fichiers (environ 5000) pendant un laps de temps assez court avec de nombreuses connexions pendant la période, on obtient des segfaults :

Aug 13 09:47:07 XXXXXXXX kernel: MySecureShell[28395]: segfault at 0 ip 00007f712e0ce0b0 sp 00007fffb0eec758 error 4 in libc-2.7.so[7f712e053000+14a000]
Aug 13 09:48:31 XXXXXXXX kernel: MySecureShell[28654]: segfault at 4 ip 0000000000408c76 sp 00007fff3fe54880 error 4 in MySecureShell[400000+12000]
Aug 13 09:49:19 XXXXXXXX kernel: MySecureShell[28908]: segfault at 4 ip 0000000000408c76 sp 00007fff18ed4880 error 4 in MySecureShell[400000+12000]
Aug 13 09:50:00 XXXXXXXX kernel: MySecureShell[28895]: segfault at 0 ip 00007f87a3a9f0b0 sp 00007fffc31f3758 error 4 in libc-2.7.so[7f87a3a24000+14a000]

La machine est un mC OVH tournant sous Debian lenny 64bits.
Voici le configtest :

--- root ---
GlobalDownload        = 5242880 bytes/s
GlobalUpload          = 0 bytes/s
Download              = 0 bytes/s
Upload                = 0 bytes/s
StayAtHome            = true
VirtualChroot         = true
LimitConnection       = 0
LimitConnectionByUser = 0
LimitConnectionByIP   = 0
Home                  = /home/root
ResolveIP             = false
IdleTimeOut           = 300s
HideNoAccess          = true
ShowLinksAsLinks      = false
SftpProtocol          = {default}
LogFile               = /var/log/sftp-server_ftp.log
ConnectionMaxLife     = 86400s
CanRemoveDir          = true
CanRemoveFile         = true
CanChangeRights       = true
CanChangeTime         = true
DefaultRights         = 0640 0750
Config is valid

Le soucis c'est que ces segfaults ont entraîné pas mal d'erreurs, puisque plusieurs fichiers qui ont été transférés ne sont jamais apparus sur la machine, ni dans le système de fichiers ni dans les logs.

Une idée ? smile

Re: Segfault quand multiples connexions

Bonjour,

Quelle version de MySecureShell est installée ? Quel OS (32 / 64bit, ubuntu / debian / fedora / ..) ?

Merci smile

Re: Segfault quand multiples connexions

Bonjour, côté MySecureShell :

MySecureShell is version 1.20 build on Jan 22 2010

Options:
  ACL support: yes
  UTF-8 support: yes

Sftp Extensions:
  Disk Usage
  File Hashing

Côté OS, c'est indiqué dans mon post précédent smile (Debian Lenny 64bits)

Re: Segfault quand multiples connexions

Oups pardon, je n'avais pas vu la précision de l'OS  roll

Donc effectivement, il y a un bug dans MySecureShell 1.20 sous 64bit, en attendant la version 1.25, il est possible d'utiliser la version 32bit (qui ne doit pas être affecté) big_smile

Re: Segfault quand multiples connexions

Ah d'accord, par curiosité c'est quoi exactement comme bug ? smile

Sinon quand sera prévue cette version 1.25 ? Parce que pour l'instant l'utilisation de la version 32bits n'est pas envisagée (à cause de contraintes techniques assez tordues).

Re: Segfault quand multiples connexions

Skippy wrote:

Ah d'accord, par curiosité c'est quoi exactement comme bug ? smile

Sinon quand sera prévue cette version 1.25 ? Parce que pour l'instant l'utilisation de la version 32bits n'est pas envisagée (à cause de contraintes techniques assez tordues).

Une boulettitude avec "memcpy" et cela fonctionnement correctement chez moi... mais sous 64bit tout part en vrille...
Enfin bon, je ferais attention au manuel la prochaine fois wink

Re: Segfault quand multiples connexions

Serait-il possible d'avoir la version corrigée avant qu'elle soit disponible dans les dépôts ?

Le besoin est assez urgent en fait  tongue

Re: Segfault quand multiples connexions

Le CVS SourceForge contient le code corrigé.

Pour compiler, il suffit:

Et voilà, une version officielle (mise à part le numéro de version qui n'est pas à jour) non-packagé smile

Re: Segfault quand multiples connexions

Ok merci beaucoup smile

Je reviendrai si le problème persiste wink big_smile

10 (edited by Skippy 2010-08-18 15:34:37)

Re: Segfault quand multiples connexions

Rebonjour,

J'ai utilisé le binaire compilé via les sources en utilisant la procédure fournie, et voici le résultat :

Aug 18 16:21:40 XXXXXXXXXX kernel: MySecureShell[20693]: segfault at 0 ip 00007f9dfe04e0b0 sp 00007fffa1a5f7d8 error 4 in libc-2.7.so[7f9dfdfd3000+14a000]
Aug 18 16:21:42 XXXXXXXXXX kernel: MySecureShell[20706]: segfault at 0 ip 00007f72fda890b0 sp 00007fff6747b758 error 4 in libc-2.7.so[7f72fda0e000+14a000]
Aug 18 16:21:51 XXXXXXXXXX kernel: MySecureShell[20722]: segfault at 4 ip 00000000004083e6 sp 00007fff99c2f880 error 4 in MySecureShell[400000+11000]
Aug 18 16:21:56 XXXXXXXXXX kernel: MySecureShell[20840]: segfault at 0 ip 00007f52ac3690b0 sp 00007fff3e90f758 error 4 in libc-2.7.so[7f52ac2ee000+14a000]
Aug 18 16:21:57 XXXXXXXXXX kernel: MySecureShell[20842]: segfault at 0 ip 00007fd90e90f0b0 sp 00007fff09129758 error 4 in libc-2.7.so[7fd90e894000+14a000]
Aug 18 16:21:58 XXXXXXXXXX kernel: MySecureShell[20897]: segfault at 0 ip 00007f443033f0b0 sp 00007fffb18d9758 error 4 in libc-2.7.so[7f44302c4000+14a000]
Aug 18 16:21:59 XXXXXXXXXX kernel: MySecureShell[20933]: segfault at 0 ip 00007f4f29a0c0b0 sp 00007fff2b5fe758 error 4 in libc-2.7.so[7f4f29991000+14a000]
Aug 18 16:22:05 XXXXXXXXXX kernel: MySecureShell[21095]: segfault at 4 ip 00000000004083e6 sp 00007ffffc708880 error 4 in MySecureShell[400000+11000]
Aug 18 16:22:11 XXXXXXXXXX kernel: MySecureShell[21207]: segfault at 4 ip 00000000004083e6 sp 00007fffc3189880 error 4 in MySecureShell[400000+11000]
Aug 18 16:22:16 XXXXXXXXXX kernel: MySecureShell[21289]: segfault at 0 ip 00007f2af1a890b0 sp 00007fffdc8d3758 error 4 in libc-2.7.so[7f2af1a0e000+14a000]
Aug 18 16:22:19 XXXXXXXXXX kernel: MySecureShell[21298]: segfault at 4 ip 00000000004083e6 sp 00007fff33033880 error 4 in MySecureShell[400000+11000]
Aug 18 16:22:19 XXXXXXXXXX kernel: MySecureShell[21381]: segfault at 4 ip 00000000004083e6 sp 00007ffff052c880 error 4 in MySecureShell[400000+11000]
Aug 18 16:22:25 XXXXXXXXXX kernel: MySecureShell[21552]: segfault at 0 ip 00007fd1983ff0b0 sp 00007fff20187758 error 4 in libc-2.7.so[7fd198384000+14a000]
Aug 18 16:22:26 XXXXXXXXXX kernel: MySecureShell[21553]: segfault at 0 ip 00007f0d2a77f0b0 sp 00007fff2d9e4758 error 4 in libc-2.7.so[7f0d2a704000+14a000]
Aug 18 16:22:26 XXXXXXXXXX kernel: MySecureShell[21484]: segfault at 0 ip 00007fcc741660b0 sp 00007fff9ceda758 error 4 in libc-2.7.so[7fcc740eb000+14a000]
Aug 18 16:22:28 XXXXXXXXXX kernel: MySecureShell[21614]: segfault at 4 ip 00000000004083e6 sp 00007ffff5663880 error 4 in MySecureShell[400000+11000]
Aug 18 16:22:29 XXXXXXXXXX kernel: MySecureShell[21650]: segfault at 0 ip 00007f58022730b0 sp 00007fff30a2a758 error 4 in libc-2.7.so[7f58021f8000+14a000]
Aug 18 16:22:31 XXXXXXXXXX kernel: MySecureShell[21706]: segfault at 4 ip 00000000004083e6 sp 00007fff21517880 error 4 in MySecureShell[400000+11000]
Aug 18 16:22:39 XXXXXXXXXX kernel: MySecureShell[21856]: segfault at 0 ip 00007f9f0fc730b0 sp 00007fffbc983758 error 4 in libc-2.7.so[7f9f0fbf8000+14a000]
Aug 18 16:22:39 XXXXXXXXXX kernel: MySecureShell[21924]: segfault at 0 ip 00007f655929f0b0 sp 00007fff7d75f758 error 4 in libc-2.7.so[7f6559224000+14a000]
Aug 18 16:22:40 XXXXXXXXXX kernel: MySecureShell[21947]: segfault at 0 ip 00007fac48ddb0b0 sp 00007fff7aee2758 error 4 in libc-2.7.so[7fac48d60000+14a000]
Aug 18 16:22:40 XXXXXXXXXX kernel: MySecureShell[21890]: segfault at 0 ip 00007f2d62baf0b0 sp 00007fff219db758 error 4 in libc-2.7.so[7f2d62b34000+14a000]
Aug 18 16:22:43 XXXXXXXXXX kernel: MySecureShell[22059]: segfault at 4 ip 00000000004083e6 sp 00007fff4f477880 error 4 in MySecureShell[400000+11000]
Aug 18 16:22:45 XXXXXXXXXX kernel: MySecureShell[22094]: segfault at 4 ip 00000000004083e6 sp 00007fffe6cea880 error 4 in MySecureShell[400000+11000]
Aug 18 16:22:45 XXXXXXXXXX kernel: MySecureShell[22112]: segfault at 4 ip 00000000004083e6 sp 00007fff2c350880 error 4 in MySecureShell[400000+11000]
Aug 18 16:22:47 XXXXXXXXXX kernel: MySecureShell[22054]: segfault at 0 ip 00007f68ba0380b0 sp 00007fffbd9ca758 error 4 in libc-2.7.so[7f68b9fbd000+14a000]
Aug 18 16:22:52 XXXXXXXXXX kernel: MySecureShell[22255]: segfault at 4 ip 00000000004083e6 sp 00007fff0f931880 error 4 in MySecureShell[400000+11000]
Aug 18 16:22:53 XXXXXXXXXX kernel: MySecureShell[22246]: segfault at 0 ip 00007fa74806d0b0 sp 00007fffffad5758 error 4 in libc-2.7.so[7fa747ff2000+14a000]
Aug 18 16:22:54 XXXXXXXXXX kernel: MySecureShell[22319]: segfault at 0 ip 00007f182a4350b0 sp 00007fff5f7dd758 error 4 in libc-2.7.so[7f182a3ba000+14a000]
Aug 18 16:22:55 XXXXXXXXXX kernel: MySecureShell[22287]: segfault at 0 ip 00007fb95a7190b0 sp 00007fff240ae758 error 4 in libc-2.7.so[7fb95a69e000+14a000]
Aug 18 16:22:56 XXXXXXXXXX kernel: MySecureShell[22375]: segfault at 0 ip 00007f3bdf4e30b0 sp 00007fff3d42e758 error 4 in libc-2.7.so[7f3bdf468000+14a000]
Aug 18 16:22:58 XXXXXXXXXX kernel: MySecureShell[22417]: segfault at 4 ip 00000000004083e6 sp 00007fffbd421880 error 4 in MySecureShell[400000+11000]
Aug 18 16:23:00 XXXXXXXXXX kernel: MySecureShell[22162]: segfault at 0 ip 00007fce1dcc50b0 sp 00007ffff77da758 error 4 in libc-2.7.so[7fce1dc4a000+14a000]
Aug 18 16:23:05 XXXXXXXXXX kernel: MySecureShell[22602]: segfault at 4 ip 00000000004083e6 sp 00007fffeb4c4880 error 4 in MySecureShell[400000+11000]
Aug 18 16:23:06 XXXXXXXXXX kernel: MySecureShell[22629]: segfault at 0 ip 00007f28df6b10b0 sp 00007fff6236c758 error 4 in libc-2.7.so[7f28df636000+14a000]

sad

Le kernel est un grsec, au cas où.

Re: Segfault quand multiples connexions

Ok dès que j'aurais le temps, je vais installer une VM pour comprendre le soucis...  hmm

En attendant, il est possible de générer un fichier core et de donner une stacktrace ?

Merci en tout cas. smile

Re: Segfault quand multiples connexions

Yes je vais essayer, quelle est la procédure exacte à suivre par contre ?

Les conditions du test sont assez compliquées à reproduire, je vais faire mon possible smile

Re: Segfault quand multiples connexions

Skippy wrote:

Yes je vais essayer, quelle est la procédure exacte à suivre par contre ?

Les conditions du test sont assez compliquées à reproduire, je vais faire mon possible smile

Pour ajouter les informations de DEBUG, lors de la compilation:

  • Exécuter "./configure --with-debug=2"

  • make

  • Exécuter "sh install.sh fr

Après, il faut voir avec "ulimit" et positionner le champs "core file size" à "unlimited" (à priori, il faut utiliser le fichier /etc/security/limits.conf).
Je suis désolé de demandé tout ça mais n'ayant plus de VM sous la main, je ne peux rien faire hmm