Skip to content

Rosetta failures in guest Linux environment #6771

@kjmph

Description

@kjmph

When using Rosetta in the guest Linux environment, which is Debian testing in my case, Rosetta fails with VDSO & DT_HASH errors. This seemed to have started in the last week or so. As prior to then, everything was functioning. I'm guessing that it may be because Debian testing updated to a newer 6.11.4-arm64 kernel? Here is an example error:

$ file hello
hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped
$ /media/rosetta/rosetta hello
assertion failed [hash_table != nullptr]: Failed to find vdso DT_HASH
(Vdso.cpp:78 get_vdso_dynamic_data)
 Trace/breakpoint trap
$ strings /media/rosetta/rosetta | ag "Failed to find vdso DT_HASH"
Failed to find vdso DT_HASH

Note, I can run a Mach-O binary on the host platform with Rosetta, showing it must be related to the ELF header.

$ file hello
hello: Mach-O 64-bit executable x86_64
$ arch -x86_64 ./hello
Hello, World!

And the ELF sections are as such:

$ readelf -S hello
There are 13 section headers, starting at offset 0x3088:

Section Headers:
  [Nr] Name              Type             Address           Offset
       Size              EntSize          Flags  Link  Info  Align
  [ 0]                   NULL             0000000000000000  00000000
       0000000000000000  0000000000000000           0     0     0
  [ 1] .init             PROGBITS         0000000000401000  00001000
       0000000000000003  0000000000000000  AX       0     0     1
  [ 2] .text             PROGBITS         0000000000401010  00001010
       00000000000006ec  0000000000000000  AX       0     0     16
  [ 3] .fini             PROGBITS         00000000004016fc  000016fc
       0000000000000003  0000000000000000  AX       0     0     1
  [ 4] .rodata           PROGBITS         0000000000402000  00002000
       0000000000000332  0000000000000000   A       0     0     32
  [ 5] .eh_frame         PROGBITS         0000000000402338  00002338
       0000000000000034  0000000000000000   A       0     0     8
  [ 6] .init_array       INIT_ARRAY       0000000000403fe8  00002fe8
       0000000000000008  0000000000000008  WA       0     0     8
  [ 7] .fini_array       FINI_ARRAY       0000000000403ff0  00002ff0
       0000000000000008  0000000000000008  WA       0     0     8
  [ 8] .got              PROGBITS         0000000000403ff8  00002ff8
       0000000000000008  0000000000000000  WA       0     0     8
  [ 9] .got.plt          PROGBITS         0000000000404000  00003000
       0000000000000018  0000000000000008  WA       0     0     8
  [10] .data             PROGBITS         0000000000404018  00003018
       000000000000000c  0000000000000000  WA       0     0     8
  [11] .bss              NOBITS           0000000000404040  00003024
       0000000000000258  0000000000000000  WA       0     0     32
  [12] .shstrtab         STRTAB           0000000000000000  00003024
       0000000000000060  0000000000000000           0     0     1

I don't see DT_HASH, yet I'm not as familiar with this.

Configuration

  • UTM Version: Version 4.5.4 (100)
  • macOS Version: 15.0.1 (24A348)
  • Mac Chip: Apple M1 Max

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions