Arm マシンを使用していますが、クラッシュ コンテキスト アドレスの取得中にセグメンテーション ハンドラがクラッシュすることがあります。
void crit_err_hdlr(int sig_num, siginfo_t * info, void * ucontext)
{
uintptr_t fault_address = NULL;
struct sigcontext *ctx = &(((ucontext_t*)ucontext)->uc_mcontext);
fault_address = ctx->arm_pc;
//after reading ctx->arm_pc it crashes
}
ハンドラーのセットアップ方法は次のとおりです。
struct sigaction sigact = { 0 };
sigact.sa_sigaction = crit_err_hdlr;
sigact.sa_flags = SA_SIGINFO | SA_RESTART;
if (sigaction(SIGSEGV, &sigact, (struct sigaction *)NULL) != 0)
{
//error, bail out
}
sigcontext にファイルされている arm_pc が読み取り可能かどうかを確認する方法はありますか?