1

检查_siginfo,si_code是2

(gdb) p $_siginfo
$2 = {si_signo = 11, si_errno = 0, si_code = 2, _sifields = {_pad = {1254290016, 32642, 0 <repeats 26 times>}, _kill = {
      si_pid = 1254290016, si_uid = 32642}, _timer = {si_tid = 1254290016, si_overrun = 32642, si_sigval = {sival_int = 0,
        sival_ptr = 0x0}}, _rt = {si_pid = 1254290016, si_uid = 32642, si_sigval = {sival_int = 0, sival_ptr = 0x0}},
    _sigchld = {si_pid = 1254290016, si_uid = 32642, si_status = 0, si_utime = 0, si_stime = 0}, _sigfault = {
      si_addr = 0x7f824ac2f260}, _sigpoll = {si_band = 140197576766048, si_fd = 0}}}
    /* `si_code' values for SIGSEGV signal.  */
enum
{
  SEGV_MAPERR = 1,                /* Address not mapped to object.  */
# define SEGV_MAPERR        SEGV_MAPERR
  SEGV_ACCERR                        /* Invalid permissions for mapped object.  */
# define SEGV_ACCERR        SEGV_ACCERR
};

映射对象的权限无效

我查了core文件,用disas打印asm代码,这个地址可以正常访问,和我本地代码没有区别。

我检查了另一个线程,发现有另一个线程正在编译机器码,所以可能是这个的影响?

4

0 回答 0