常見問題?

ABRT在哪里存儲崩潰故障??

ABRT將其問題目錄存儲在 /var/spool/abrt 目錄。請注意,目錄本身是可讀的 root 僅在默認情況下。

ABRT能處理什么類型的崩潰故障??

支持的編程語言和軟件項目 .

當ABRT無法捕捉到我的應用程序崩潰時該怎么辦??

  • 確保以下服務正在運行:

    • abrtd

    • abrt-ccpp

    $ systemctl status abrtd abrt-ccpp

  • 如果其中一個沒有運行,可以使用以下命令重新啟動這兩個程序:

    $ sudo systemctl restart abrtd abrt-ccpp

  • 如果上述方法無效,請咨詢 journactl/var/log/messages 錯誤日志。

  • 默認情況下,ABRT不會處理由第三方(未打包的)軟件產生的崩潰,這樣才能正常工作 How to enable handling of unpackaged software .

如何處理未打包的軟件?

  • 編輯 /etc/abrt/abrt-action-save-package-data.conf 和改變 ProcessUnpackaged = noProcessUnpackaged = yes

    # sed -i 's/ProcessUnpackaged = no/ProcessUnpackaged = yes/' /etc/abrt/abrt-action-save-package-data.conf

如何處理非GPG簽名的軟件?

  • 編輯 /etc/abrt/abrt-action-save-package-data.conf 和改變 OpenGPGCheck = yesOpenGPGCheck = no

    # sed -i 's/OpenGPGCheck = yes/OpenGPGCheck = no/' /etc/abrt/abrt-action-save-package-data.conf

如何列出由ABRT處理的崩潰??

  • 使用任一GUI應用程序: $ gnome-abrt

  • 或命令行工具: $ abrt-cli list

    使用 了解更多詳細信息。

什么是報告??

  • μ報告 (microreport )是一個表示問題的JSON對象:二進制崩潰、內核操作、SELinux AVC拒絕等。這些報告被設計成小的、完全匿名的,允許我們使用它們進行自動報告。

    μ報告 有關詳細信息,請參見第頁。

什么是被污染的內核?為什么我的內核被污染了??

Linux內核維護一個 污染狀態 它指示正在運行的內核是否發生了可能導致內核錯誤的事情。

常見原因包括:

  • 已加載專有內核模塊(P標志)

  • 發生上一個內核錯誤(kerneloops)(D標志)。

  • 上一個內核警告 (GW 標志)。

  • 兩種情況 D 旗與 GW 標志表示內核數據結構可能已損壞。因此,當前誤差不一定是真正的誤差,它可能是前一個誤差的隨機結果。

  • 為了擺脫受污染的內核,您需要重新啟動計算機或停止加載專有模塊。

  • ABRT尊重這些標志,并且不允許報告一個或多個標志是否有效,因為當內核被污染時,內核開發人員通常無法修復問題。

污點標志的完整列表:

P - Proprietary module has been loaded.
F - Module has been forcibly loaded.
S - SMP with CPUs not designed for SMP.
R - User forced a module unload.
M - System experienced a machine check exception.
B - System has hit bad_page.
U - Userspace-defined naughtiness.
D - Kernel has oopsed before
A - ACPI table overridden.
W - Taint on warning.
C - modules from drivers/staging are loaded.
I - Working around severe firmware bug.
O - Out-of-tree module has been loaded.

資料來源:http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git文件;a=blob;f=kernel/panic.c

如何創建私有bugzilla票證??

ABRT可以創建具有受限訪問權限的報告,這意味著對報告的訪問權限僅限于一組受信任的人。請注意,限制不同的錯誤追蹤器,即使你標記為限制它仍然可以泄漏給公眾,所以如果你不確定,那么不要報告任何東西!

要創建私有bugzilla票證,必須指定要限制訪問的組列表。棘手的是,它必須是bugzilla數據庫中組的內部id。為了減輕痛苦,以下是受支持bugzillas的私有組ID列表:

Bugzilla服務器

組名

要在設置中使用的組ID

http://bugzilla.redhat.com

Fedora Contrib(Fedora Contrib成員可訪問的錯誤)

fedora_contrib_private

http://bugzilla.redhat.com

私有組(Bug只能由維護人員訪問)

私有的

如何啟用屏幕播放??

要在abrt中啟用屏幕廣播,您必須安裝fros包,其中包含與您的桌面環境匹配的插件。目前只有2個插件可用: fros-gnomefros-recordmydesktop . Gnome插件只適用于GNOME3, recordmydesktop 應該與大多數其他桌面環境一起工作。要安裝插件,請運行以下命令之一(取決于桌面環境)::

yum install fros-gnome
yum install fros-recordmydesktop

為什么ABRT分析收集受污染的內核oopses??

ABRT分析收集受污染的oop,因為每個收到的oop都被轉發到http://oops.kernel.org/人們希望看到 每一個 哦,還有 不僅是純潔的 那些。

為什么我的回溯無法使用??

不可用的回溯通常是由損壞的核心轉儲、缺少調試信息或使用不受支持的編碼技術(即GNOME3中的JavaScript)引起的。

這些原因導致生成的回溯對開發人員的信息價值很低,因為函數名被替換為 '??' 字符串,它是不可用函數名的占位符。為了提供有價值的崩潰報告,ABRT不會讓您為這種回溯創建Bugzilla bug。

您可以使用ABRT通過 Email reporter ,但這是你自己的責任。

如何啟用setuid二進制文件轉儲?

默認情況下,內核不會轉儲設置的用戶ID或其他受保護/污染的二進制文件。要改變這種行為,你需要改變 fs.suid_dumpable 內核變量。

要讀取值,請使用:

sysctl fs.suid_dumpable

要更改值,請使用:

sysctl fs.suid_dumpable=0

可能的值是:

  1. (default )-傳統行為。任何已更改權限級別或僅執行的進程都不會被轉儲。

  2. (debug )-所有進程盡可能轉儲核心。核心轉儲由當前用戶擁有,不應用任何安全性。這僅適用于系統調試情況。Ptrace未選中。這是不安全的,因為它允許常規用戶檢查特權進程的內存內容。

  3. (suidsafe )-任何通常不會轉儲的二進制文件(請參見上面的“0”)都只能由root讀取。這允許用戶刪除核心轉儲文件,但不讀取它。出于安全原因,此模式下的核心轉儲不會覆蓋彼此或其他文件。當管理員試圖在正常環境中調試問題時,此模式是合適的。

    此外,由于Linux 3.6,/proc/sys/kernel/coreu模式必須是絕對路徑名或管道命令,如core(5)中所述。如果coreu模式不遵循這些規則,則會將警告寫入內核日志,并且不會生成核心轉儲。

資料來源:http://man7.org/linux/man-pages/man5/proc.5.html