問題の例:
$ su
Segmentation fault
$ Sudo ls
Segmentation fault
以前にソースからsqlite3をコンパイルしようとしました。どのライブラリをインストールしたのかわかりません。これがこれが起こっている理由かもしれません。
strace su
を試してみましたが、次で終わります:
...
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)
gdb su
を試して実行しようとすると、Cannot find new threads: generic error
が表示されます。問題の解決策をオンラインで探し、 this threadに遭遇し、LD_PRELOAD=/lib/i386-linux-gnu/libpthread.so.0 gdb su
(スレッドで提案されているように)を実行しようとしました。その後、もう一度実行しようとすると、同じエラーが発生しました。
痕跡に基づいて、スレッド化の方法に問題があると思いますが、これを修正する方法がわかりません。基本的なbashユーティリティを再インストールする方法はありますか?
私のシステムの詳細は次のとおりです。
$ 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
(ハードウェアは64ビットであると確信しています)
aptdcon
を使用します。これは、dbus
を介してapt-daemon
と通信するため、su
またはSudo
を必要とせず、破損したパッケージを再インストールします。おそらくあなたの最善のチャンスは、すべてのパッケージを再インストールすることです。
最初に、修正待ちの壊れたインストールがないことを確認します。
aptdcon --fix-install
また、ディスクに使用可能な空き領域があることを確認してください。
df -h
次に、現在インストールされているパッケージリストを取得します。
echo \"$(dpkg --get-selections | grep install | cut -f 1)\"
後で、何かのテキストエディタで保存します。次に、完全なパッケージリストを使用して、次のようにaptdcon
を呼び出します。
aptdcon --reinstall "package1 package2 package3..."
aptdcon
はさまざまな理由で一部のパッケージを再インストールできないため、この方法であなたに伝えています。したがって、aptdcon
がそれについて泣いた場合は、それらを削除し、もう一度試してください。一度よりも。
OPが発生したときに問題がある場合、JorgeSuárezde Lisが提案したことを実行できません。依存関係エラーがスローされるためです。
そう、
aptdcon --reinstall "libsqlite3-0"
そして
aptdcon --install "libsqlite3-0"
エラーメッセージを返します。
エラー:org.debian.apt.TransactionFailed-error-cache-broken:次のパッケージには依存関係が満たされていない:
これをしている間:
aptdcon --fix-depends
修正され、suとSudoが再び動作します。
私はこの問題を見ましたが、根本的な原因はわずかに異なっていました。私はKerberosをテストしていましたが、/ etc/krb5.confに何か間違った設定がありました。 straceを使用して、Sudoがそのファイルを読み込んだ直後にセグメンテーション違反を起こしていることを発見したため、構成ファイルに問題があると考えました。特定の変数を追跡しませんでしたが、際立っていたことの1つは、krb5.confでdefault_domain変数を空にしていたことです。
[libdefaults]
default_realm =
これにより、Sudoのいくつかのずさんなコードが長さゼロの文字列を作成し、それを誤って処理してSIGSEGVを引き起こす可能性があります。これは正しい設定ではなかったため、これ以上デバッグしようとしませんでした。 /etc/krb5.confを削除しただけです。
Sambaのpamモジュールがこれを引き起こしている可能性があります。
その場合、これはそれを修正する必要があります:
その後、「su」と「Sudo」を再び使用できるようになります。
その後、あなたがしたい、またはする必要があるかもしれません
残っている壊れたパッケージの修正に役立ちます。
Libpam-smbpassおよび/またはlibpam-winbindパッケージが必要な場合、または壊れた 'samba'パッケージがある場合、/ var/lib/samba/secrets.tdbを削除または名前変更する必要がある場合があります。
ソース/関連: https://bugs.launchpad.net/ubuntu/+source/samba/+bug/260687