diff --git a/main_wayland.cpp b/main_wayland.cpp --- a/main_wayland.cpp +++ b/main_wayland.cpp @@ -419,6 +419,16 @@ } +static void unsetDumpable(int sig) +{ +#if HAVE_PR_SET_DUMPABLE + prctl(PR_SET_DUMPABLE, 1); +#endif + signal(sig, SIG_IGN); + raise(sig); + return; +} + } // namespace int main(int argc, char * argv[]) @@ -433,6 +443,8 @@ signal(SIGINT, SIG_IGN); if (signal(SIGHUP, KWin::sighandler) == SIG_IGN) signal(SIGHUP, SIG_IGN); + signal(SIGABRT, KWin::unsetDumpable); + signal(SIGSEGV, KWin::unsetDumpable); // ensure that no thread takes SIGUSR sigset_t userSignals; sigemptyset(&userSignals);