web-dev-qa-db-fra.com

erreur de segmentation lors de l'utilisation de su ou sudo

exemple du problème:

$ su
Segmentation fault
$ Sudo ls
Segmentation fault

J'ai essayé de compiler sqlite3 à partir des sources plus tôt. Je ne sais pas quelles bibliothèques il a installées. Cela peut être la raison pour laquelle cela se produit.

J'ai essayé strace su et cela se termine par:

...
fstat64(6, {st_mode=S_IFREG|0644, st_size=17964, ...}) = 0
mmap2(NULL, 20788, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 6, 0) = 0xb7295000
mmap2(0xb7299000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 6, 0x3) = 0xb7299000
close(6)                                = 0
mprotect(0xb7299000, 4096, PROT_READ)   = 0
mprotect(0xb72f9000, 4096, PROT_READ)   = 0
set_tid_address(0xb758a728)             = 11144
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV (core dumped) +++
Segmentation fault (core dumped)

Lorsque j'essaie gdb su et que je tente de courir, cela me donne Cannot find new threads: generic error. J'ai cherché en ligne une solution au problème, j'ai rencontré this thread, puis j'ai essayé de lancer LD_PRELOAD=/lib/i386-linux-gnu/libpthread.so.0 gdb su (comme suggéré dans le fil de discussion). Lorsque j'ai ensuite essayé de l'exécuter à nouveau, cela m'a donné la même erreur.

Sur la base de la structure, je pense qu’il ya un problème de filetage, mais je ne sais pas comment résoudre ce problème. Est-il possible de réinstaller les utilitaires bash basiques?

Voici plus d'informations sur mon système:

$ uname -a
myhost 3.2.0-37-generic-pae #58-Ubuntu SMP Thu Jan 24 15:51:02 UTC 2013 i686 i686 i386 GNU/Linux

(Je suis à peu près sûr que le matériel est 64 bits)

5
user1253952

Utilisez aptdcon, qui communique avec apt-daemon via dbus, de sorte qu'il ne soit pas nécessaire de su ou Sudo, pour réinstaller les packages endommagés. Votre meilleure chance est probablement de réinstaller TOUS les paquets.

Tout d’abord, assurez-vous qu’une installation défectueuse n’est pas en attente d’un correctif:

aptdcon --fix-install

Assurez-vous également qu'il y a de l'espace libre sur votre disque:

df -h

Ensuite, obtenez votre liste de paquets actuellement installés:

echo \"$(dpkg --get-selections | grep install | cut -f 1)\"

Enregistrez cela pour plus tard, sur un éditeur de texte de quelque chose. Ensuite, appelez aptdcon comme ceci, en utilisant la liste complète des paquets:

aptdcon --reinstall "package1 package2 package3..."

Je vous le dis de cette façon parce que aptdcon ne pourra pas réinstaller certains paquets pour diverses raisons. Vous devrez donc les supprimer si aptdcon vous en prie, et réessayez probablement plus. qu'une fois.

2
Jorge Suárez de Lis

Si vous rencontrez le problème rencontré par le PO, vous ne pouvez pas faire ce que Jorge Suárez de Lis a suggéré, car cela provoquerait une erreur de dépendance.

Alors,

aptdcon --reinstall "libsqlite3-0"

et

aptdcon --install "libsqlite3-0"

renvoie le message d'erreur:

ERREUR: org.debian.apt.TransactionFailed - error-cache-broken: Les paquetages suivants ont des dépendances non remplies:

En faisant cela:

aptdcon --fix-depends

va le réparer, et su et Sudo vont travailler à nouveau.

0
Johano Fierra

J'ai vu ce problème, mais la cause fondamentale était légèrement différente. J'avais testé Kerberos et quelque chose de mal configuré dans mon /etc/krb5.conf. J'ai découvert via strace que Sudo commettait une erreur de segmentation peu de temps après avoir lu ce fichier. J'ai donc pensé qu'il y avait un problème avec mon fichier de configuration. Je n'ai pas traqué une variable spécifique, mais une chose qui s'est démarquée est que j'avais la variable default_domain vide dans le fichier krb5.conf comme si

[libdefaults]
   default_realm = 

Ceci peut avoir pour conséquence que du code peu soigné dans Sudo crée une chaîne de longueur nulle et le gère de manière erronée, provoquant ainsi le signal SIGSEGV. Je n'ai pas essayé de le déboguer plus loin car ce n'était pas le bon réglage. J'ai simplement supprimé mon /etc/krb5.conf.

0
BeantownGuy80

Il est possible qu'un module pam de samba en soit la cause.

Si c'est le cas, cela devrait résoudre le problème:

  • Redémarrez l'ordinateur et choisissez de démarrer en mode de récupération. Si vous ne voyez pas le mode de récupération, vous devez d'abord choisir l'option "Options avancées pour".
  • Choisissez "déposer dans le shell root" dans le menu de récupération
  • Exécutez la commande suivante: dpkg --purge libpam-smbpass
  • Exécutez la commande suivante: dpkg --purge libpam-winbind

Ensuite, vous devriez pouvoir utiliser à nouveau 'su' et 'Sudo'.

Vous voudrez peut-être ou devrez faire une

  • Sudo apt-get -f install

pour aider à réparer les paquets cassés restants.

Si vous avez besoin des paquetages libpam-smbpass et/ou libpam-winbind, ou si vous avez un paquet 'samba' cassé, vous devrez peut-être supprimer ou renommer /var/lib/samba/secrets.tdb:

  • Sudo mv /var/lib/samba/secrets.tdb /var/lib/samba/secrets.tdb.old

Source/Related: https://bugs.launchpad.net/ubuntu/+source/samba/+bug/260687

0
jelle foks