On Thu, Mar 29, 2018 at 7:15 AM, Max Filippov <jcmvb...@gmail.com> wrote:
> I'm running xtensa linux-user application that rapidly creates
> a lot of threads and I observe the following assertion failure:
>
> (process:26953): GLib-CRITICAL **: g_hash_table_iter_next: assertion
> 'ri->version == ri->hash_table->version' failed
> **
> ERROR:qemu/qom/object.c:1663:object_get_canonical_path_component: code
> should not be reached

[...]

> This happens because multiple threads concurrently call
> object_property_set_bool to realize cpu object in cpu_create,
> which results in the following call chain:
>   device_set_realized -> object_property_add_child ->
>   object_property_add -> g_hash_table_insert
> inserting newly created CPUs as children to /unattached without
> any locking.

Looking at it some more I wonder why do we build this object tree
n linux-user in the first place? It doesn't seem to be used anywhere.

-- 
Thanks.
-- Max

Reply via email to