From 274b9038d79906513979f69e221ab8f4e785fd0f Mon Sep 17 00:00:00 2001 From: RusJJ Date: Tue, 22 Aug 2023 15:20:35 +0300 Subject: [PATCH] Fix crash --- AML_PrecompiledLibs | 2 +- ARMPatch | 2 +- curl | 2 +- signal.cpp | 22 +++++++++++++++------- wolfssl | 2 +- 5 files changed, 19 insertions(+), 11 deletions(-) diff --git a/AML_PrecompiledLibs b/AML_PrecompiledLibs index 24a3995..970c08a 160000 --- a/AML_PrecompiledLibs +++ b/AML_PrecompiledLibs @@ -1 +1 @@ -Subproject commit 24a3995a3d7026ba3e264bdd60125566459a3bc3 +Subproject commit 970c08a7ed0cbb16ed63deba0875e66d643f6419 diff --git a/ARMPatch b/ARMPatch index de11a19..46f64d0 160000 --- a/ARMPatch +++ b/ARMPatch @@ -1 +1 @@ -Subproject commit de11a19071696f67338a68b3329116777c87a812 +Subproject commit 46f64d06ec60d84f3f09e42a6c3b445333180f73 diff --git a/curl b/curl index 8627416..c996e02 160000 --- a/curl +++ b/curl @@ -1 +1 @@ -Subproject commit 862741637bd31f7c621a988e47c5452ebbb58cb4 +Subproject commit c996e02afe60783bf4107f26e3195bfe2a19fa5d diff --git a/signal.cpp b/signal.cpp index 837283d..2782ee8 100644 --- a/signal.cpp +++ b/signal.cpp @@ -15,6 +15,7 @@ std::ofstream g_pLogFile; +struct sigaction newSigaction[7]; struct sigaction oldSigaction[7]; int SignalInnerId(int code) @@ -168,24 +169,34 @@ void Handler(int sig, siginfo_t *si, void *ptr) #endif uintptr_t faultAddr = mcontext.fault_address; // == si->si_addr? - aml->ShowToast(true, "Application has been crashed!"); - logger->Info("Exception Signal %d - %s (%s)", sig, SignalEnum(sig), CodeEnum(sig, si->si_code)); + // Java doesnt work here and so crashing again and again? + //aml->ShowToast(true, "Application has been crashed!"); + logger->Error("Exception Signal %d - %s (%s)", sig, SignalEnum(sig), CodeEnum(sig, si->si_code)); Dl_info dlInfo; if(dladdr((void*)PC, &dlInfo) != 0) { // Success + if(dlInfo.dli_fname) + { + logger->Error("Library: %s + 0x%08X", dlInfo.dli_fname, PC - (uintptr_t)dlInfo.dli_fbase); + } + else + { + } } else { // Unsuccess } + oldSigaction[SignalInnerId(sig)].sa_sigaction(sig, si, ptr); exit(0); } -#define HANDLESIG(_code) sigaction(_code, &sigbreak, oldSigaction + SignalInnerId(_code)) +#define HANDLESIG(_code) sigbreak = newSigaction + SignalInnerId(_code); sigbreak->sa_sigaction = &Handler; \ + sigbreak->sa_flags = SA_SIGINFO | SA_ONSTACK | SA_RESETHAND; sigemptyset(&sigbreak->sa_mask); sigaction(_code, sigbreak, oldSigaction + SignalInnerId(_code)) void StartSignalHandler() { static char stack[SIGSTKSZ]; @@ -195,10 +206,7 @@ void StartSignalHandler() ss.ss_flags = 0; sigaltstack(&ss, NULL); - struct sigaction sigbreak; - sigbreak.sa_sigaction = &Handler; - sigbreak.sa_flags = SA_SIGINFO | SA_ONSTACK | SA_RESETHAND; - sigemptyset(&sigbreak.sa_mask); + struct sigaction* sigbreak = NULL; HANDLESIG(SIGABRT); HANDLESIG(SIGBUS); diff --git a/wolfssl b/wolfssl index 928dd70..5339fe0 160000 --- a/wolfssl +++ b/wolfssl @@ -1 +1 @@ -Subproject commit 928dd70213ca019fcb1118c40c346860fabd7e53 +Subproject commit 5339fe0d9f1a155c617a534e3c8eb2d7d7ee6889