Como o esmeralda não está mais nos repositórios oficiais suportados, suas falhas de segmentação não são uma coisa para este fórum.
Eu "resolvi" esse problema com essa solução não tão elegante.
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;
}
Compile e deixe o Compiz rodar isso em vez de esmeralda. Ele continuará reiniciando a esmeralda toda vez que ela falhar.