Comment 12 for bug 1992653

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

I guess we can consider it confirmed by now, although I feel we still fail to see the actual "this makes it good/bad" here.

I've had a look at a more detailed stack trace and it looks similar (or the same) but with more info:

--- stack trace ---
#0 0x000000000056218a in sigsuspend ()
No symbol table info available.
#1 0x00000000004d1bd7 in dump_core_and_abort (target_sig=target_sig@entry=11) at ../../linux-user/signal.c:772
        cpu = <optimized out>
        env = <optimized out>
        ts = 0x1f368a0
        host_sig = 11
        core_dumped = <optimized out>
        act = {__sigaction_handler = {sa_handler = 0x0, sa_sigaction = 0x0}, sa_mask = {__val = {18446744067267099647, 4294967296, 1, 549755813888, 7956000, 24576, 24576, 24592, 1537, 140051329744643, 0, 2, 32945512, 274904076288, 4271466, 3}}, sa_flags = 0, sa_restorer = 0x0}
#2 0x00000000004d4964 in handle_pending_signal (cpu_env=0x1f35170, sig=11, k=0x1f36eb8) at ../../linux-user/signal.c:1099
        cpu = 0x1f2ce70
        handler = <optimized out>
        set = {__val = {4522484598571010, 70368776932576, 0, 140051329744832, 32723312, 0, 140722945443588, 274904640376, 32689776, 4991986, 0, 0, 16896, 0, 0, 35369322530945280}}
        target_old_set = {sig = {69888}}
        sa = <optimized out>
        ts = 0x1f368a0
#3 0x000000000041aa4f in process_pending_signals (cpu_env=<optimized out>) at ../../linux-user/signal.c:1185
        sig = 11
        blocked_set = <optimized out>
        cpu = <optimized out>
        ts = 0x1f368a0
        set = {__val = {18446744067267100671, 0 <repeats 15 times>}}
        cpu = <optimized out>
        sig = <optimized out>
        ts = <optimized out>
        set = <optimized out>
        blocked_set = <optimized out>
        restart_scan = <optimized out>
#4 cpu_loop (env=<optimized out>) at ../../linux-user/riscv/cpu_loop.c:115
        cs = <optimized out>
        trapnr = <optimized out>
        signum = <optimized out>
        sigcode = <optimized out>
        sigaddr = <optimized out>
        ret = <optimized out>
        gdbstep = <optimized out>
#5 0x0000000000404168 in main (argc=<optimized out>, argv=<optimized out>, envp=<optimized out>) at ../../linux-user/main.c:908
        regs1 = {sepc = 274904155514, ra = 0, sp = 274904081840, gp = 0, tp = 0, t0 = 0, t1 = 0, t2 = 0, s0 = 0, s1 = 0, a0 = 0, a1 = 0, a2 = 0, a3 = 0, a4 = 0, a5 = 0, a6 = 0, a7 = 0, s2 = 0, s3 = 0, s4 = 0, s5 = 0, s6 = 0, s7 = 0, s8 = 0, s9 = 0, s10 = 0, s11 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0}
        regs = 0x7ffc9d2cca50
        info1 = {load_bias = 274904084480, load_addr = 274877906944, start_code = 274877906944, end_code = 274878815092, start_data = 274878817208, end_data = 274878868464, start_brk = 0, brk = 274878913512, reserve_brk = 16777216, start_mmap = 2147483648, start_stack = 274904081840, stack_limit = 274895695872, entry = 274904155514, code_offset = 274877906944, data_offset = 274877906944, saved_auxv = 274904082080, auxv_len = 272, arg_start = 274904081848, arg_end = 274904081864, arg_strings = 274904082368, env_strings = 274904082381, file_string = 274904084462, elf_flags = 5, personality = 0, alignment = 4096, loadmap_addr = 0, nsegs = 2, loadsegs = 0x0, pt_dynamic_addr = 0, interpreter_loadmap_addr = 0, interpreter_pt_dynamic_addr = 0, other_info = 0x0, note_flags = 0}
        info = 0x7ffc9d2cc950
        bprm = {buf = "\177ELF\002\001\001\000\000\000\000\000\000\000\000\000\003\000\363\000\001\000\000\000z\025\001\000\000\000\000\000@\000\000\000\000\000\000\000@\022\002\000\000\000\000\000\005\000\000\000@\000\070\000\b\000@\000\027\000\026\000\003\000\000p\004\000\000\000\000\021\002", '\000' <repeats 21 times>, "\063", '\000' <repeats 15 times>, "\001\000\000\000\000\000\000\000\001\000\000\000\005", '\000' <repeats 27 times>, "p\335\001\000\000\000\000\000p\335\001\000\000\000\000\000\000\020\000\000\000\000\000\000\001\000\000\000\006\000\000\000 \354\001\000\000\000\000\000 \354\001\000\000\000\000\000"..., p = 274904081840, fd = 3, e_uid = 0, e_gid = 0, argc = 2, envc = 25, argv = 0x1f1b410, envp = 0x1f1e200, filename = 0x7ffc9d2ce7b6 "/bin/bash", core_dump = 0x0}
        ts = <optimized out>
        env = <optimized out>
        cpu = <optimized out>
        optind = <optimized out>
        target_environ = <optimized out>
        wrk = <optimized out>
        target_argv = <optimized out>
        target_argc = <optimized out>
        i = <optimized out>
        ret = 0
        execfd = <optimized out>
        log_mask = <optimized out>
        max_reserved_va = 281474976710656
        preserve_argv0 = <optimized out>
        __func__ = "main"
--- source code stack trace ---
#0 0x000000000056218a in sigsuspend ()
#1 0x00000000004d1bd7 in dump_core_and_abort (target_sig=target_sig@entry=11) at ../../linux-user/signal.c:772
  767: kill(getpid(), host_sig);
  768:
  769: /* Make sure the signal isn't masked (just reuse the mask inside
  770: of act) */
  771: sigdelset(&act.sa_mask, host_sig);
  772: sigsuspend(&act.sa_mask);
  773:
  774: /* unreachable */
  775: abort();
  776: }
  777:
#2 0x00000000004d4964 in handle_pending_signal (cpu_env=0x1f35170, sig=11, k=0x1f36eb8) at ../../linux-user/signal.c:1099
  1094: dump_core_and_abort(sig);
  1095: }
  1096: } else if (handler == TARGET_SIG_IGN) {
  1097: /* ignore sig */
  1098: } else if (handler == TARGET_SIG_ERR) {
  1099: dump_core_and_abort(sig);
  1100: } else {
  1101: /* compute the blocked signals during the handler execution */
  1102: sigset_t *blocked_set;
  1103:
  1104: target_to_host_sigset(&set, &sa->sa_mask);
#3 0x000000000041aa4f in process_pending_signals (cpu_env=<optimized out>) at ../../linux-user/signal.c:1185
  1180: &ts->sigsuspend_mask : &ts->signal_mask;
  1181:
  1182: if (ts->sigtab[sig - 1].pending &&
  1183: (!sigismember(blocked_set,
  1184: target_to_host_signal_table[sig]))) {
  1185: handle_pending_signal(cpu_env, sig, &ts->sigtab[sig - 1]);
  1186: /* Restart scan from the beginning, as handle_pending_signal
  1187: * might have resulted in a new synchronous signal (eg SIGSEGV).
  1188: */
  1189: goto restart_scan;
  1190: }
#4 cpu_loop (env=<optimized out>) at ../../linux-user/riscv/cpu_loop.c:115
  110: ._sifields._sigfault._addr = sigaddr
  111: };
  112: queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info);
  113: }
  114:
  115: process_pending_signals(env);
  116: }
  117: }
  118:
  119: void target_cpu_copy_regs(CPUArchState *env, struct target_pt_regs *regs)
  120: {
#5 0x0000000000404168 in main (argc=<optimized out>, argv=<optimized out>, envp=<optimized out>) at ../../linux-user/main.c:908