응답하지 않는 프로그램의 대기 시간을 늘리는 방법은 무엇입니까?

응답하지 않는 프로그램의 대기 시간을 늘리는 방법은 무엇입니까?

Ubuntu GNOME을 설치했는데 PROGRAM이 응답하지 않는다는 메시지가 많이 표시되는 것을 발견했습니다.

프로그램을 "강제 종료"하거나 조금 더 "대기"해야 합니다.

프로그램을 기다릴 때마다 프로그램이 결국 문제 없이 계속되는 것을 확인했습니다.

그래서 나는생각하다프로그램이 응답하지 않는 것으로 간주되는 "시간 초과" 구성이 있을 수 있으며 이 시간 초과를 늘리고 싶습니다.

답변1

구성할 수 없습니다.시간 초과값은 머터 소스의 상수 값으로 정의됩니다. 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)

하지만 지연된 창에 대한 소스를 수정해야 한다고 생각합니다. 아니면 Mutter 개발자/유지관리자와 논의해도 될 것 같습니다.

다음 명령을 사용하여 빌드 환경을 준비하고 소스를 가져올 수 있습니다.

$ 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

이 버그는 수정되었습니다. Ubuntu 18용 백포트는 2019년 6월 6일에 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

관련 정보