qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v4 1/1] python/machine: Fix AF_UNIX path too long on macOS


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH v4 1/1] python/machine: Fix AF_UNIX path too long on macOS
Date: Tue, 10 Jan 2023 09:13:51 +0100
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.6.1

On 10/1/23 09:07, Peter Delevoryas wrote:
On macOS, private $TMPDIR's are the default. These $TMPDIR's are
generated from a user's unix UID and UUID [1], which can create a
relatively long path:

     /var/folders/d7/rz20f6hd709c1ty8f6_6y_z40000gn/T/

QEMU's avocado tests create a temporary directory prefixed by
"avo_qemu_sock_", and create QMP sockets within _that_ as well.
The QMP socket is unnecessarily long, because a temporary directory
is created for every QEMUMachine object.

     /avo_qemu_sock_uh3w_dgc/qemu-37331-10bacf110-monitor.sock

The path limit for unix sockets on macOS is 104: [2]

     /*
      * [XSI] Definitions for UNIX IPC domain.
      */
     struct  sockaddr_un {
         unsigned char   sun_len;        /* sockaddr len including null */
         sa_family_t     sun_family;     /* [XSI] AF_UNIX */
         char            sun_path[104];  /* [XSI] path name (gag) */
     };

This results in avocado tests failing on macOS because the QMP unix
socket can't be created, because the path is too long:

     ERROR| Failed to establish connection: OSError: AF_UNIX path too long

Ah, I'm using this klugde:

  $ TMPDIR=/tmp avocado run ...

This change resolves by reducing the size of the socket directory prefix
and the suffix on the QMP and console socket names.

The result is paths like this:

     pdel@pdel-mbp:/var/folders/d7/rz20f6hd709c1ty8f6_6y_z40000gn/T
     $ tree qemu*
     qemu_df4evjeq
     qemu_jbxel3gy
     qemu_ml9s_gg7
     qemu_oc7h7f3u
     qemu_oqb1yf97
     ├── 10a004050.con
     └── 10a004050.qmp

[1] 
https://apple.stackexchange.com/questions/353832/why-is-mac-osx-temp-directory-in-weird-path
[2] /Library/Developer/CommandLineTools/SDKs/MacOSX12.3.sdk/usr/include/sys/un.h

Signed-off-by: Peter Delevoryas <peter@pjd.dev>
---
  python/qemu/machine/machine.py         | 6 +++---
  tests/avocado/avocado_qemu/__init__.py | 2 +-
  2 files changed, 4 insertions(+), 4 deletions(-)

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]