翡翠經常崩潰

翡翠經常崩潰

我安裝了 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

由於 emerald 不再位於官方支援的儲存庫中,因此它的分段錯誤對於本論壇來說不是問題。

我用這個不太優雅的解決方法「解決」了這個問題。

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 運行它而不是 emerald。每次崩潰時它都會重新啟動翡翠。

相關內容