如何增加無回應程序的等待時間?

如何增加無回應程序的等待時間?

我安裝了 Ubuntu GNOME,發現收到很多「程式未回應」訊息。

我必須“強制退出”該程式或“等待”一段時間。

我注意到,每次我等待程式時,程式最終都會繼續運行,不會出現任何問題。

所以我思考可能有一個“超時”配置,程式被視為無響應,我想增加此超時。

答案1

無法配置,因為暫停value 被定義為雜音源中的常數值。 gnome-shell 指的是 mutter 函式庫。我在 mutter 來源 mutter-3.10.4/src/core/display.c 中找到了逾時值。

...
#define PING_TIMEOUT_DELAY 5000

它是由下面名為 meta_display_ping_window 的函式使用

ping_data->ping_timeout_id = g_timeout_add (PING_TIMEOUT_DELAY, meta_display_ping_timeout, ping_data);

當視窗被啟動時,它從函數中引用:

window_activate(mutter-3.10.4/src/core/window.c) -> meta_window_check_alive(mutter-3.10.4/src/core/delete.c) -> meta_display_ping_window(mutter-3.10.4/src/core/display.c)

正如您在上面看到的,超時時間為 5 秒。

您可以修改適合您的值,因為 mutter 是開源專案。

超時值參考視窗關閉時的另一種情況。視窗刪除流程如下

meta_window_delete(mutter-3.10.4/src/core/delete.c) -> meta_window_check_alive(mutter-3.10.4/src/core/delete.c) -> meta_display_ping_window(mutter-3.10.4/src/core/display.c)

但是,我認為您需要修改延遲視窗的原始程式碼。或者我認為你可以與那些嘀咕的開發者/維護者討論一下。

您可以使用以下命令準備建置環境並取得原始程式碼。

$ sudo apt-get build-dep mutter
$ sudo apt-get source mutter

要建立它,請參閱

https://www.debian.org/doc/manuals/apt-howto/ch-sourcehandling.en.html https://wiki.debian.org/BuildingTutorial

答案2

使用可以透過 dconf (/org/gnome/mutter/check-alive-timeout) 更改 mutter 值 - 預設值為 5000。

答案3

此錯誤已修復。 2019 年 6 月 6 日,Ubuntu 18 的向後移植版本為 gnome-shell 3.28.4。看如何停用“視窗無回應”對話框

答案4

我不知道回答這個老問題是否有任何意義,但也許對某人會有幫助。

我嘗試從原始碼建立 mutter 庫,但我放棄了,因為這個庫依賴許多其他庫,而這些庫也依賴其他庫。

我需要一種方法來關閉此對話框一次(如果它出現),但我無法在葡萄酒應用。所以我在 bash 中編寫了一個小腳本,如果這個視窗出現,它將殺死它。

#!/bin/bash 

while [  true ]; do
    VAL=$(ps -fA | grep "class mutter-dialog" | grep -cv grep)

    if [ $VAL -eq 1 ]
    then
            ID=$(ps -fA | grep "class mutter-dialog" | grep -v grep | awk '{print $2}')
            sleep 5
            echo killing $ID
            kill $ID
            exit 0
    fi

    sleep 10
done

相關內容