1

check the _siginfo, si_code is 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
};

Invalid permissions for mapped object

I have checked the core file, use disas to print the asm code, This address can be accessed normally and there is no different with my local code.

I checked the other thread, found that there is anoter thread is just compiling machine code, so maybe it's the influence of this?

KC_YCM
  • 11
  • 2
  • Are you sure the problem is with the mcjit generated code, and not that you have mapped the memory for the JIT code without execute permissions? – Andrea Jun 12 '21 at 12:11
  • This question is not a necessity. At present, it may be a small probability event in a multi-threaded concurrency scenario. So, I can only doubt that mcjit multithreading has certain limitations. – KC_YCM Mar 30 '22 at 11:26

0 Answers0