linuxmacosidaapple-siliconrosetta-2

"loading shared libraries " error, but the name is <garbled char>


I want to install IDA Pro for Linux(or IDA Free has the same problem) on my ARM64 Ubuntu 22.04 Virtual Machine, which utilizes Rosetta 2 for compatibility.

After spending considerable time resolving environmental dependency issues and installing numerous packages, IDA Pro was able to run properly.

sudo apt-get update
sudo apt-get install binutils:amd64 libgl1-mesa-glx:amd64 libglib2.0-0:amd64 libsecret-1-0:amd64
sudo apt-get install libfontconfig1:amd64 libxcb-icccm4:amd64 libxcb-image0:amd64 libxcb-keysyms1:amd64 libxcb-render-util0:amd64 libxcb-render0:amd64 libxcb-shape0:amd64 libxcb-xinerama0:amd64 libxcb-xkb1:amd64 libsm6:amd64 libice6:amd64 libxkbcommon-x11-0:amd64 libxkbcommon0:amd64 libdbus-1-3:amd64

However, upon restarting the virtual machine, I encountered a shared libraries loading error again, with the characters appearing as garbled text.

$ ./idafree-8.4/ida64 
./idafree-8.4/ida64: error while loading shared libraries: ��: cannot open shared object file: No such file or directory

The ldd output is as followed. Seemed that nothing dynamic library missed.

$ ldd-amd64 ./idafree-8.4/ida64
    libQt5PrintSupport.so.5 => /home/parallels/./idafree-8.4/libQt5PrintSupport.so.5 (0x00007ffffea00000)
    libQt5Svg.so.5 => /home/parallels/./idafree-8.4/libQt5Svg.so.5 (0x00007ffffe600000)
    libQt5Widgets.so.5 => /home/parallels/./idafree-8.4/libQt5Widgets.so.5 (0x00007ffffdc00000)
    libQt5Gui.so.5 => /home/parallels/./idafree-8.4/libQt5Gui.so.5 (0x00007ffffd200000)
    libQt5Core.so.5 => /home/parallels/./idafree-8.4/libQt5Core.so.5 (0x00007ffffc800000)
    libGL.so.1 => /lib/x86_64-linux-gnu/libGL.so.1 (0x00007fffff6e5000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fffff6de000)
    libida64.so => /home/parallels/./idafree-8.4/libida64.so (0x00007ffffc000000)
    libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007ffffbdd4000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fffff5f7000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fffff5d7000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ffffbbab000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007ffffede2000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007ffffeddd000)
    libgthread-2.0.so.0 => /lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007ffffedd8000)
    libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007ffffec9e000)
    /lib64/ld-linux-x86-64.so.2 (0x00007ffffff80000)
    libGLdispatch.so.0 => /lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007ffffe948000)
    libGLX.so.0 => /lib/x86_64-linux-gnu/libGLX.so.0 (0x00007ffffec68000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007ffffe943000)
    libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007ffffe8cd000)
    libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007ffffe4c0000)
    libxcb.so.1 => /home/parallels/./idafree-8.4/libxcb.so.1 (0x00007ffffb800000)
    libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007ffffe8c7000)

Environment:

IDA Pro:  idapronl_hexarm64l_hexarml_hexmips64l_hexmipsl_hexx64l_hexx86l_230608_xxx.run

or
IDA Free: v8.3 (from https://hex-rays.com/ida-free/)

VM: 
   Ubuntu 22.04.4 
   Arch: aarch64
   Kernel: Linux version 5.15.0-76-generic (buildd@bos02-arm64-019) (gcc (Ubuntu 11.3.0-1ubuntu1~22.04.1) 11.3.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #83-Ubuntu SMP Thu Jun 15 19:21:56 UTC 2023
  Memory Size: 2G
  
Host: 
  Model: Apple M3 Pro
  Memory: 18GB
  OS: MacOS Sonoma 14.3.1 (23D60)
  VirtualMachine Software: Parallels Desktop 19 for Mac (19.0.0)

Some Attempts

narrow down the package conflict search scope

I speculated that there might be a conflict between the installed libraries and the system's libraries. Therefore, I tried installing each library and then restarting the virtual machine to narrow down the search scope. After installing libc6 and restarting, the error did not occur for IDA, but it indicated that libGL.so.1 was missing. Upon installing the libgl1-mesa-glx package and running IDA again, the previous error reappeared.

The garbled text

The hex code of error:

parallels@ubuntu-linux-22-04-02-desktop:~$ ./idapro-8.3/ida 2>&1 | hexdump -C
00000000  2e 2f 69 64 61 70 72 6f  2d 38 2e 33 2f 69 64 61  |./idapro-8.3/ida|
00000010  3a 20 65 72 72 6f 72 20  77 68 69 6c 65 20 6c 6f  |: error while lo|
00000020  61 64 69 6e 67 20 73 68  61 72 65 64 20 6c 69 62  |ading shared lib|
00000030  72 61 72 69 65 73 3a 20  01 91 99 3a 20 63 61 6e  |raries: ...: can|
00000040  6e 6f 74 20 6f 70 65 6e  20 73 68 61 72 65 64 20  |not open shared |
00000050  6f 62 6a 65 63 74 20 66  69 6c 65 3a 20 4e 6f 20  |object file: No |
00000060  73 75 63 68 20 66 69 6c  65 20 6f 72 20 64 69 72  |such file or dir|
00000070  65 63 74 6f 72 79 0a                              |ectory.|
00000077

The terminal version IDA

I try run the TUI version of IDA -- idat. The idat works well.

So I guess the error may caused by libGL.so.1.

expecting

Running IDA Pro successfully.


Solution

  • The “culprit” is actually the Rosetta daemon, which is probably used to speed up Rosetta:

    For Parallels, the daemon is /media/psf/RosettaLinux/rosettad It creates cache entries in /var/cache/prlrosettad

    Killing the daemon is enough to allow IDA to start. Not ideal, but it's a good workaround until Apple(?) fixes the issue.

    sudo pkill rosettad