[Spice-devel] qxl - spice crash, memslot_get_virt: address generation is not valid
Vladimir Sementsov-Ogievskiy
vsementsov at virtuozzo.com
Fri Nov 8 13:17:36 UTC 2019
Hi all!
Hope someone could help me with the following.
Seems we've faced https://bugzilla.redhat.com/show_bug.cgi?id=1540919 Qemu bug. It was
(AFAIU) workarounded in spice, in https://bugzilla.redhat.com/show_bug.cgi?id=1567944 ,
which marked is fixed in spice-0.14.0-4..
Still, our crash is on spice-server-0.14.0-7 , which is higher..
Qemu is based on rhev-2.12.0-33, and I don't see in upstream any related fixes.
1567944 discussions has fixes in attachments by Christophe and Frediano.. But I can't find
anything in Qemu mailing list archives. What is the problem with the patch?
===
backtrace
#0 0x00007fd1785f8337 in __GI_raise (sig=sig at entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:55
#1 0x00007fd1785f9a28 in __GI_abort () at abort.c:90
#2 0x00007fd179e3ecfc in spice_logv (log_domain=0x7fd179eafbf1 "Spice", args=0x7fd12561e460, format=0x7fd179eb6d30 "address generation is not valid, group_id %d, slot_id %d, gen %d, slot_gen %d\n",
function=0x7fd179eb6f30 <__FUNCTION__.16041> "memslot_get_virt", strloc=0x7fd179eb6e26 "memslot.c:122", log_level=G_LOG_LEVEL_CRITICAL) at log.c:183
#3 spice_log (log_level=log_level at entry=G_LOG_LEVEL_CRITICAL, strloc=strloc at entry=0x7fd179eb6e26 "memslot.c:122", function=function at entry=0x7fd179eb6f30 <__FUNCTION__.16041> "memslot_get_virt",
format=format at entry=0x7fd179eb6d30 "address generation is not valid, group_id %d, slot_id %d, gen %d, slot_gen %d\n") at log.c:196
#4 0x00007fd179e0579f in memslot_get_virt (info=info at entry=0x556f209c44f0, addr=addr at entry=844424930131968, add_size=add_size at entry=20, group_id=group_id at entry=1, error=error at entry=0x7fd12561e5d4)
at memslot.c:121
#5 0x00007fd179e0e007 in red_get_data_chunks_ptr (slots=slots at entry=0x556f209c44f0, group_id=group_id at entry=1, memslot_id=0, red=red at entry=0x7fd12561e630, qxl=0x7fd128e04016) at red-parse-qxl.c:146
#6 0x00007fd179e106ae in red_get_cursor (addr=72057594044235776, red=0x556f209d8d48, group_id=1, slots=0x556f209c44f0) at red-parse-qxl.c:1441
#7 red_get_cursor_cmd (slots=slots at entry=0x556f209c44f0, group_id=1, red=red at entry=0x556f209d8d20, addr=<optimized out>) at red-parse-qxl.c:1482
#8 0x00007fd179e2138f in red_process_cursor_cmd (worker=worker at entry=0x556f209c4460, ext=ext at entry=0x556f22f58000) at red-worker.c:111
#9 0x00007fd179e2152b in loadvm_command (ext=0x556f22f58000, worker=0x556f209c4460) at red-worker.c:980
#10 handle_dev_loadvm_commands (opaque=0x556f209c4460, payload=<optimized out>) at red-worker.c:1002
#11 0x00007fd179ded65d in dispatcher_handle_single_read (dispatcher=0x556f21b6b8d0) at dispatcher.c:284
#12 dispatcher_handle_recv_read (dispatcher=0x556f21b6b8d0) at dispatcher.c:304
#13 0x00007fd179df3e6b in watch_func (source=<optimized out>, condition=<optimized out>, data=0x556f208dc090) at event-loop.c:128
#14 0x00007fd190742049 in g_main_dispatch (context=0x556f2095efd0) at gmain.c:3175
#15 g_main_context_dispatch (context=context at entry=0x556f2095efd0) at gmain.c:3828
#16 0x00007fd1907423a8 in g_main_context_iterate (context=0x556f2095efd0, block=block at entry=1, dispatch=dispatch at entry=1, self=<optimized out>) at gmain.c:3901
#17 0x00007fd19074267a in g_main_loop_run (loop=0x556f22aeea00) at gmain.c:4097
#18 0x00007fd179e225da in red_worker_main (arg=0x556f209c4460) at red-worker.c:1372
#19 0x00007fd178997e65 in start_thread (arg=0x7fd125621700) at pthread_create.c:307
#20 0x00007fd1786c088d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
(gdb) fr 2
#2 0x00007fd179e3ecfc in spice_logv (log_domain=0x7fd179eafbf1 "Spice", args=0x7fd12561e460, format=0x7fd179eb6d30 "address generation is not valid, group_id %d, slot_id %d, gen %d, slot_gen %d\n",
function=0x7fd179eb6f30 <__FUNCTION__.16041> "memslot_get_virt", strloc=0x7fd179eb6e26 "memslot.c:122", log_level=G_LOG_LEVEL_CRITICAL) at log.c:183
183 abort();
(gdb) list
178 g_log(log_domain, log_level, "%s", log_msg->str);
179 g_string_free(log_msg, TRUE);
180
181 if ((abort_mask & log_level) != 0) {
182 spice_backtrace();
183 abort();
184 }
185 }
186
187 void spice_log(GLogLevelFlags log_level,
(gdb) fr 4
#4 0x00007fd179e0579f in memslot_get_virt (info=info at entry=0x556f209c44f0, addr=addr at entry=844424930131968, add_size=add_size at entry=20, group_id=group_id at entry=1, error=error at entry=0x7fd12561e5d4)
at memslot.c:121
121 spice_critical("address generation is not valid, group_id %d, slot_id %d, gen %d, slot_gen %d\n",
(gdb) list
116 slot = &info->mem_slots[group_id][slot_id];
117
118 generation = memslot_get_generation(info, addr);
119 if (generation != slot->generation) {
120 print_memslots(info);
121 spice_critical("address generation is not valid, group_id %d, slot_id %d, gen %d, slot_gen %d\n",
122 group_id, slot_id, generation, slot->generation);
123 *error = 1;
124 return 0;
125 }
(gdb) p group_id
$1 = 1
(gdb) p slot_id
$2 = 0
(gdb) p generation
$3 = 3
(gdb) p slot->generation
$4 = 0
--
Best regards,
Vladimir
More information about the Spice-devel
mailing list