0

I installed Lubuntu 14.10, then Compiz as window and composite manager, then Emerald from ppa:nilarimogard/webupd8 as window decorator. It works nicely, but emerald crashes very often. The window borders just disappear and nothing else happens. So I ran emerald --replace in terminal.

On first crash I got

Segmentation fault (Core dumped).

Second crash:

(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)

Third crash:

Segmentation fault (core dumped)

I was thinking about writing a script or program that would restart emerald if it stopped, but well there must be a better way around...

3
  • Segmentation faults usually indicate a problem in the program itself, and as such should be reported as bugs. However, as your program originates in a PPA, it can't have bugs filed against it. As well, emerald was removed in Oneiric and later because it has many FTBFS issues, and other issues, and as such is not really supported software. This site, here, can't help fix Segmentation Faults in compiled software
    – Thomas Ward
    Dec 15, 2014 at 23:02
  • 3
    Bug reports and problems specific to software that is no longer supported in a given release (because it was removed from the repositories) or because it is provided by a third-party PPA, are offtopic here, and cannot be reported on Launchpad unless the PPA or project has a specific tracker. Bugs should be sent to the maintainer of the PPA or project separately.
    – Thomas Ward
    Dec 15, 2014 at 23:03
  • Hi, since you solved your question, I'm voting to reopen, then you can post the solution as an answer.
    – Mateo
    Dec 16, 2014 at 17:33

1 Answer 1

1

Since emerald is no longer in the official supported repositories, its Segmentation faults are not a thing for this forum.

I "solved" this problem with this not-so-elegant workaround.

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 it and let Compiz run this instead of emerald. It will keep restarting emerald every time it crashes.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .