From 0e65041fa6a811e924f05b250acb6fcd7daebc9b Mon Sep 17 00:00:00 2001 From: Stefan Seyfried Date: Mon, 15 Oct 2012 00:05:29 +0200 Subject: [PATCH] neutrino: avoid destructors running on exit on sh4 after all cleanup there were still (openthread related?) crashes at exit in the destructors, so finally simply disable them The crashes ranged from unaligned access (SIGBUS) to malloc errors to plain SIGSEGV. --- src/neutrino.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/neutrino.cpp b/src/neutrino.cpp index 1c53eb76c..9e8b23749 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -3189,8 +3189,12 @@ void CNeutrinoApp::ExitRun(const bool /*write_si*/, int retcode) printf("[neutrino] This is the end. exiting with code %d\n", retcode); Cleanup(); - //_exit(retcode); +#ifdef __sh__ + /* the sh4 gcc seems to dislike someting about openthreads... */ + _exit(retcode); +#else exit(retcode); +#endif #if HAVE_COOL_HARDWARE } #endif @@ -3759,8 +3763,11 @@ void sighandler (int signum) delete CVFD::getInstance(); delete SHTDCNT::getInstance(); stop_video(); - //_exit(0); +#ifdef __sh__ + _exit(0); +#else exit(0); +#endif default: break; }