Michael Tokarev <m...@tls.msk.ru> writes: > 07.02.2025 18:31, Alex Bennée wrote: >> From: Ilya Leoshkevich <i...@linux.ibm.com> >> In case an emulated process execve()s another emulated process, >> bind() >> will fail, because the socket already exists. So try deleting it. Use >> the existing unix_listen() function which does this. Link qemu-user >> with qemu-sockets.c and add the monitor_get_fd() stub. >> Note that it is not possible to handle this in do_execv(): deleting >> gdbserver_user_state.socket_path before safe_execve() is not correct, >> because the latter may fail, and afterwards we may lose control. > > Please note: this is linux-user stuff, which is usually linked statically. > By linking it with qemu-sockets, we basically broke static linking, because > qemu-sockets uses getaddrinfo() &Co. The previous code, I think, was there > for a reason, - to avoid this linkage.
Oops, how come we didn't notice? We do have a bunch of --static targets in the CI. > How do you think about reverting this one and addressing the original > problem without using qemu-sockets? > > Alternatively, it might be possible to split qemu-sockets.c into unix-related > stuff and generic stuff. You mean move all the unix_XXX() functions into a new unit that ensures we don't need getaddrinfo()? > > Thanks, > > /mjt -- Alex Bennée Virtualisation Tech Lead @ Linaro