I am running QEMU user mode, but i hit a SIGSEV. It seems that tcg_malloc
returns invalid address.

The stack trace looks like this. and the s->nb_temps looks ok as well. I
also turned on DEBUG_TCGV and all the TCGV_X uses are good.

(gdb) bt
#0  0x00007ffff5db0866 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x00000000606eb52a in tcg_liveness_analysis (s=0x62a2a260 <tcg_ctx>) at
/home/xtong/esesc/emul/qemu/tcg/tcg.c:1235
#2  0x00000000606ede04 in tcg_gen_code_common (s=0x62a2a260 <tcg_ctx>,
gen_code_buf=0x60be3c30 <static_code_gen_buffer+2146752> "", search_pc=-1)
    at /home/xtong/esesc/emul/qemu/tcg/tcg.c:2067
#3  0x00000000606ee1ce in tcg_gen_code (s=0x62a2a260 <tcg_ctx>,
gen_code_buf=0x60be3c30 <static_code_gen_buffer+2146752> "")
    at /home/xtong/esesc/emul/qemu/tcg/tcg.c:2188

#1  0x00000000606eb52a in tcg_liveness_analysis (s=0x62a2a260 <tcg_ctx>) at
/home/xtong/esesc/emul/qemu/tcg/tcg.c:1235
1235        memset(dead_temps, 1, s->nb_temps);
(gdb) list
1230        nb_ops = gen_opc_ptr - gen_opc_buf;
1231
1232        s->op_dead_args = tcg_malloc(nb_ops * sizeof(uint16_t));
1233
1234        dead_temps = tcg_malloc(s->nb_temps);
1235        memset(dead_temps, 1, s->nb_temps);
1236
1237        args = gen_opparam_ptr;
1238        op_index = nb_ops - 1;
1239        while (op_index >= 0) {
(gdb) p s->nb_temps
$4 = 41
(gdb) p dead_temps
$5 = (uint8_t *) 0xc004900220524 <Address 0xc004900220524 out of bounds>
(gdb)

Thank you,
Xin

Reply via email to