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