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
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 --- sig=target_ sig@entry= 11) at ../../linux- user/signal. c:772 handler = {sa_handler = 0x0, sa_sigaction = 0x0}, sa_mask = {__val = {18446744067267 099647, 4294967296, 1, 549755813888, 7956000, 24576, 24576, 24592, 1537, 140051329744643, 0, 2, 32945512, 274904076288, 4271466, 3}}, sa_flags = 0, sa_restorer = 0x0} pending_ signal (cpu_env=0x1f35170, sig=11, k=0x1f36eb8) at ../../linux- user/signal. c:1099
target_ old_set = {sig = {69888}} pending_ signals (cpu_env=<optimized out>) at ../../linux- user/signal. c:1185 100671, 0 <repeats 15 times>}}
restart_ scan = <optimized out> user/riscv/ cpu_loop. c:115 user/main. c:908 loadmap_ addr = 0, interpreter_ pt_dynamic_ addr = 0, other_info = 0x0, note_flags = 0} 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}
target_ environ = <optimized out>
max_reserved_ va = 281474976710656
preserve_ argv0 = <optimized out> sig=target_ sig@entry= 11) at ../../linux- user/signal. c:772 &act.sa_ mask, host_sig); &act.sa_ mask); pending_ signal (cpu_env=0x1f35170, sig=11, k=0x1f36eb8) at ../../linux- user/signal. c:1099 and_abort( sig); and_abort( sig); to_host_ sigset( &set, &sa->sa_mask); pending_ signals (cpu_env=<optimized out>) at ../../linux- user/signal. c:1185 _mask : &ts->signal_mask; blocked_ set, to_host_ signal_ table[sig] ))) { pending_ signal( cpu_env, sig, &ts->sigtab[sig - 1]); pending_ signal user/riscv/ cpu_loop. c:115 _sigfault. _addr = sigaddr pending_ signals( env); cpu_copy_ regs(CPUArchSta te *env, struct target_pt_regs *regs) user/main. c:908
#0 0x000000000056218a in sigsuspend ()
No symbol table info available.
#1 0x00000000004d1bd7 in dump_core_and_abort (target_
cpu = <optimized out>
env = <optimized out>
ts = 0x1f368a0
host_sig = 11
core_dumped = <optimized out>
act = {__sigaction_
#2 0x00000000004d4964 in handle_
cpu = 0x1f2ce70
handler = <optimized out>
set = {__val = {4522484598571010, 70368776932576, 0, 140051329744832, 32723312, 0, 140722945443588, 274904640376, 32689776, 4991986, 0, 0, 16896, 0, 0, 35369322530945280}}
sa = <optimized out>
ts = 0x1f368a0
#3 0x000000000041aa4f in process_
sig = 11
blocked_set = <optimized out>
cpu = <optimized out>
ts = 0x1f368a0
set = {__val = {18446744067267
cpu = <optimized out>
sig = <optimized out>
ts = <optimized out>
set = <optimized out>
blocked_set = <optimized out>
#4 cpu_loop (env=<optimized out>) at ../../linux-
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-
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_
info = 0x7ffc9d2cc950
bprm = {buf = "\177ELF\
ts = <optimized out>
env = <optimized out>
cpu = <optimized out>
optind = <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>
__func__ = "main"
--- source code stack trace ---
#0 0x000000000056218a in sigsuspend ()
#1 0x00000000004d1bd7 in dump_core_and_abort (target_
767: kill(getpid(), host_sig);
768:
769: /* Make sure the signal isn't masked (just reuse the mask inside
770: of act) */
771: sigdelset(
772: sigsuspend(
773:
774: /* unreachable */
775: abort();
776: }
777:
#2 0x00000000004d4964 in handle_
1094: dump_core_
1095: }
1096: } else if (handler == TARGET_SIG_IGN) {
1097: /* ignore sig */
1098: } else if (handler == TARGET_SIG_ERR) {
1099: dump_core_
1100: } else {
1101: /* compute the blocked signals during the handler execution */
1102: sigset_t *blocked_set;
1103:
1104: target_
#3 0x000000000041aa4f in process_
1180: &ts->sigsuspend
1181:
1182: if (ts->sigtab[sig - 1].pending &&
1183: (!sigismember(
1184: target_
1185: handle_
1186: /* Restart scan from the beginning, as handle_
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-
110: ._sifields.
111: };
112: queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info);
113: }
114:
115: process_
116: }
117: }
118:
119: void target_
120: {
#5 0x0000000000404168 in main (argc=<optimized out>, argv=<optimized out>, envp=<optimized out>) at ../../linux-