에메랄드는 자주 충돌합니다

에메랄드는 자주 충돌합니다

Lubuntu 14.10을 설치한 다음 Compiz를 창 및 복합 관리자로 설치한 다음 ppa:nilarimogard/webupd8의 Emerald를 창 데코레이터로 설치했습니다. 잘 작동하지만 에메랄드는 매우 자주 충돌합니다. 창 테두리가 사라지고 아무 일도 일어나지 않습니다. 그래서 emerald --replace터미널로 달려갔습니다 .

처음 충돌했을 때

Segmentation fault (Core dumped).

두 번째 충돌:

(emerald:15385): GLib-GObject-WARNING **: invalid uninstantiatable type '(null)' in cast to 'GdkDrawable'

(emerald:15385): Gdk-CRITICAL **: IA__gdk_cairo_create: assertion 'GDK_IS_DRAWABLE (drawable)' failed
Segmentation fault (core dumped)

세 번째 충돌:

Segmentation fault (core dumped)

에메랄드가 중지되면 다시 시작하는 스크립트나 프로그램을 작성하려고 생각 중이었지만 더 나은 방법이 있을 것입니다...

답변1

에메랄드는 더 이상 공식적으로 지원되는 리포지토리에 없으므로 세그먼트화 오류는 이 포럼에서 문제가 되지 않습니다.

나는 그다지 우아하지 않은 해결 방법으로 이 문제를 "해결"했습니다.

file: emerald-restarter.c

#include <unistd.h>
#include <stdio.h>

int main() {

        int pid;

        while (1)
        {
                pid = fork();
                switch ( pid )
                {
                        case 0:
                        printf("Child process starting emerald.\n");
                        execlp("emerald","--replace",NULL);
                        break;

                        case -1:
                        fprintf(stderr,"Fork failed.\n");
                        return -1;
                        break;

                        default:
                        printf("Main process waiting for PID %i to finish.\n",pid);
                        wait();
                        break;
                }
        }
return 0;
}

이를 컴파일하고 Compiz가 에메랄드 대신 이것을 실행하도록 하십시오. 충돌이 발생할 때마다 에메랄드를 계속 다시 시작합니다.

관련 정보