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)
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.
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.
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.
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:
Ensuite, vous devriez pouvoir utiliser à nouveau 'su' et 'Sudo'.
Vous voudrez peut-être ou devrez faire une
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:
Source/Related: https://bugs.launchpad.net/ubuntu/+source/samba/+bug/260687