void defaultCrashHandler(int sig) { static int crashRecursionCounter = 0; crashRecursionCounter++; signal(SIGALRM, SIG_DFL); if (crashRecursionCounter < 2) { emergencyActivated=true; crashRecursionCounter++; QString sigHdr=QObject::tr("Scribus Crash"); QString sigLine="-------------"; QString sigMsg=QObject::tr("Scribus crashes due to Signal #%1").arg(sig); std::cout << sigHdr.toStdString() << std::endl; std::cout << sigLine.toStdString() << std::endl; std::cout << sigMsg.toStdString() << std::endl; ScImageCacheManager::instance().removeMasterLock(); if (ScribusQApp::useGUI) { ScCore->closeSplash(); ScribusMainWindow* mainWin = ScCore->primaryMainWindow(); if (mainWin) { ScMessageBox::critical(mainWin, sigHdr, sigMsg); mainWin->emergencySave(); mainWin->close(); } } alarm(300); } exit(255); }
void defaultCrashHandler(DWORD exceptionCode) { static int crashRecursionCounter = 0; crashRecursionCounter++; if (crashRecursionCounter < 2) { emergencyActivated=true; crashRecursionCounter++; QString expDesc = exceptionDescription(exceptionCode); QString expHdr = QObject::tr("Scribus Crash"); QString expLine = "-------------"; QString expMsg = QObject::tr("Scribus crashes due to the following exception : %1").arg(expDesc); std::cout << expHdr.toStdString() << std::endl; std::cout << expLine.toStdString() << std::endl; std::cout << expMsg.toStdString() << std::endl; if (ScribusQApp::useGUI) { ScCore->closeSplash(); ScribusMainWindow* mainWin = ScCore->primaryMainWindow(); if (mainWin) { ScMessageBox::critical(mainWin, expHdr, expMsg); mainWin->emergencySave(); mainWin->close(); } } ScImageCacheManager::instance().removeMasterLock(); } ExitProcess(255); }
void messageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg) { QByteArray localMsg = msg.toLocal8Bit(); switch (type) { case QtDebugMsg: cerr << "Debug: " << localMsg.constData(); if (context.file && context.function) cerr << "(" << context.file << ":" << context.line << ", " << context.function << ")"; cerr << endl; break; case QtWarningMsg: cerr << "Warning: " << localMsg.constData(); if (context.file && context.function) cerr << "(" << context.file << ":" << context.line << ", " << context.function << ")"; cerr << endl; break; case QtCriticalMsg: cerr << "Critical: " << localMsg.constData(); if (context.file && context.function) cerr << "(" << context.file << ":" << context.line << ", " << context.function << ")"; cerr << endl; break; case QtFatalMsg: if (ScribusQApp::useGUI) { ScCore->closeSplash(); ScribusMainWindow* mainWin = ScCore->primaryMainWindow(); if (mainWin) { QString expHdr = QObject::tr("Scribus Crash"); QString expMsg = msg; ScMessageBox::critical(mainWin, expHdr, expMsg); mainWin->emergencySave(); mainWin->close(); } } else { cerr << "Fatal: " << localMsg.constData(); if (context.file && context.function) cerr << "(" << context.file << ":" << context.line << ", " << context.function << ")"; cerr << endl; } ExitProcess(255); } }