On Thu, 20 Oct 2022 12:39:41 +0200 Paolo Bonzini <pbonz...@redhat.com> wrote:
> On 10/19/22 17:57, Daniel P. Berrangé wrote: > >> + if (my_id == -1) { > >> + my_id = getpid() + qatomic_fetch_inc(&counter); > >> + } > >> + return my_id; > > This doesn't look safe for linux-user when we fork, but don't exec. > > Linux-user won't ever get here, however bsd-user might. We should have > get_thread_id() somewhere in util/, for example > > https://github.com/wine-mirror/wine/blob/master/dlls/ntdll/unix/server.c > We have qemu_get_thread_id() already : https://git.qemu.org/?p=qemu.git;a=blob;f=util/oslib-posix.c;h=827a7aadba444cdb128284f5b4ba43934c78c3db;hb=HEAD#l96 > > The getpid() will change after the fork, but counter won't be > > reset, so a thread in the parent could clash with a thread > > in the forked child. > > It might clash even if the counter is reset for that matter. > Yes. > Paolo >