0

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 が読み取り可能かどうかを確認する方法はありますか?

4

1 に答える 1

1

問題は、ハンドラー内で操作を実行するメモリ破損でした

于 2013-06-17T15:42:08.397 に答える