#include <lib/base/smartptr.h>
#include <lib/gdi/grc.h>
#include <lib/gdi/gfbdc.h>
+#ifdef WITH_SDL
+#include <lib/gdi/sdl.h>
+#endif
#include "version.h"
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);
}
+#ifdef WITH_SDL
+ ePtr<gSDLDC> my_dc;
+ gSDLDC::getInstance(my_dc);
+#else
ePtr<gFBDC> my_dc;
gFBDC::getInstance(my_dc);
+#endif
{
gPainter p(my_dc);
p.resetOffset();
p.resetClip(eRect(ePoint(0, 0), my_dc->size()));
- p.setBackgroundColor(gRGB(0x0000C0));
+#ifdef ENIGMA2_CHECKOUT_TAG
+ if (ENIGMA2_CHECKOUT_TAG[0] == 'T') /* tagged checkout (release) */
+ p.setBackgroundColor(gRGB(0x0000C0));
+ else if (ENIGMA2_CHECKOUT_TAG[0] == 'D') /* dated checkout (daily experimental build) */
+ {
+ srand(time(0));
+ int r = rand();
+ unsigned int col = 0;
+ if (r & 1)
+ col |= 0x800000;
+ if (r & 2)
+ col |= 0x008000;
+ if (r & 4)
+ col |= 0x0000c0;
+ p.setBackgroundColor(gRGB(col));
+ }
+#else
+ p.setBackgroundColor(gRGB(0x008000));
+#endif
+
p.setForegroundColor(gRGB(0xFFFFFF));
ePtr<gFont> font = new gFont("Regular", 20);
p.renderText(usable_area,
lines.substr(start), gPainter::RT_HALIGN_LEFT);
- p.flush();
sleep(10);
}
#if defined(__MIPSEL__)
void oops(const mcontext_t &context, int dumpcode)
{
- eDebug("PC: %08lx, vaddr: %08lx", (unsigned long)context.pc, (unsigned long)context.badvaddr);
+ eDebug("PC: %08lx", (unsigned long)context.pc);
+ int i;
+ for (i=0; i<32; ++i)
+ {
+ eDebugNoNewLine(" %08x", (int)context.gregs[i]);
+ if ((i&3) == 3)
+ eDebug("");
+ }
+ /* this is temporary debug stuff. */
+ if (dumpcode && ((unsigned long)context.pc) > 0x10000) /* not a zero pointer */
+ {
+ eDebug("As a final action, i will try to dump a bit of code.");
+ eDebug("I just hope that this won't crash.");
+ int i;
+ eDebugNoNewLine("%08lx:", (unsigned long)context.pc);
+ for (i=0; i<0x20; ++i)
+ eDebugNoNewLine(" %02x", ((unsigned char*)context.pc)[i]);
+ eDebug(" (end)");
+ }
}
#else
#warning "no oops support!"
-#error bla
#define NO_OOPS_SUPPORT
#endif
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();
sigaction(SIGSEGV, &act, 0);
sigaction(SIGILL, &act, 0);
sigaction(SIGBUS, &act, 0);
+ sigaction(SIGABRT, &act, 0);
}
void bsodLogInit()