检查_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代码,这个地址可以正常访问,和我本地代码没有区别。
我检查了另一个线程,发现有另一个线程正在编译机器码,所以可能是这个的影响?