
我安裝了 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。每次崩潰時它都會重新啟動翡翠。