correctly handle initial recording state
[enigma2.git] / main / bsod.cpp
index f08c6f348fcea6a83f022009185c54da8a77c368..5eb6b129681a0d0801f699dbf51592c85f66b90e 100644 (file)
@@ -86,6 +86,10 @@ void bsodFatal()
                std::string buffer = getLogBuffer();
                fwrite(buffer.c_str(), buffer.size(), 1, f);
                fclose(f);
+               
+               char cmd[256];
+               sprintf(cmd, "find /usr/lib/enigma2/python/ -name \"*.py\" | xargs md5sum >> %s", logfile);
+               system(cmd);
        }
        
        ePtr<gFBDC> my_dc;
@@ -132,7 +136,6 @@ void bsodFatal()
        
                p.renderText(usable_area, 
                        lines.substr(start), gPainter::RT_HALIGN_LEFT);
-               p.flush();
                sleep(10);
        }
 
@@ -164,7 +167,6 @@ void oops(const mcontext_t &context, int dumpcode)
 }
 #else
 #warning "no oops support!"
-#error bla
 #define NO_OOPS_SUPPORT
 #endif
 
@@ -173,7 +175,7 @@ void handleFatalSignal(int signum, siginfo_t *si, void *ctx)
        ucontext_t *uc = (ucontext_t*)ctx;
        eDebug("KILLED BY signal %d", signum);
 #ifndef NO_OOPS_SUPPORT
-       oops(uc->uc_mcontext, signum == SIGSEGV);
+       oops(uc->uc_mcontext, signum == SIGSEGV || signum == SIGABRT);
 #endif
        eDebug("-------");
        bsodFatal();
@@ -192,6 +194,7 @@ void bsodCatchSignals()
        sigaction(SIGSEGV, &act, 0);
        sigaction(SIGILL, &act, 0);
        sigaction(SIGBUS, &act, 0);
+       sigaction(SIGABRT, &act, 0);
 }
 
 void bsodLogInit()