{
  "_class" : "hudson.model.FreeStyleBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "hudson.triggers.TimerTrigger$TimerTriggerCause",
          "shortDescription" : "Started by timer"
        }
      ]
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "refs/remotes/origin/criu-dev" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 13787,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "237ac72c32b95949dd134a6946abeac15e86fb5e",
            "branch" : [
              {
                "SHA1" : "237ac72c32b95949dd134a6946abeac15e86fb5e",
                "name" : "refs/remotes/origin/criu-dev"
              }
            ]
          },
          "revision" : {
            "SHA1" : "237ac72c32b95949dd134a6946abeac15e86fb5e",
            "branch" : [
              {
                "SHA1" : "237ac72c32b95949dd134a6946abeac15e86fb5e",
                "name" : "refs/remotes/origin/criu-dev"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "237ac72c32b95949dd134a6946abeac15e86fb5e",
        "branch" : [
          {
            "SHA1" : "237ac72c32b95949dd134a6946abeac15e86fb5e",
            "name" : "refs/remotes/origin/criu-dev"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/checkpoint-restore/criu.git"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.parameterizedtrigger.BuildInfoExporterAction"
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    
  ],
  "building" : False,
  "description" : None,
  "displayName" : "#13787",
  "duration" : 665,
  "estimatedDuration" : 513,
  "executor" : None,
  "fullDisplayName" : "CRIU » CRIU-devel-trigger #13787",
  "id" : "13787",
  "keepLog" : False,
  "number" : 13787,
  "queueId" : 96341,
  "result" : "SUCCESS",
  "timestamp" : 1738634700798,
  "url" : "https://ci.openvz.org/view/CRIU/job/CRIU/view/CRIU-devel/job/CRIU-devel-trigger/13787/",
  "builtOn" : "virtuozzo",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "criu/pie/util-vdso.c"
        ],
        "commitId" : "237ac72c32b95949dd134a6946abeac15e86fb5e",
        "timestamp" : 1738619790000,
        "author" : {
          "absoluteUrl" : "https://ci.openvz.org/user/avagin@gmail.com",
          "fullName" : "Andrei Vagin"
        },
        "authorEmail" : "avagin@gmail.com",
        "comment" : "vdso: switch from DT_HASH to DT_GNU_HASH (aarch64)\u000a\u000aTrying to run latest CRIU on CentOS Stream 10 or Ubuntu 24.04 (aarch64)\u000afails like this:\u000a\u000a    # criu/criu check -v4\u000a    [...]\u000a    (00.096460) vdso: Parsing at ffffb2e2a000 ffffb2e2c000\u000a    (00.096539) vdso: PT_LOAD p_vaddr: 0\u000a    (00.096567) vdso: DT_STRTAB: 1d0\u000a    (00.096592) vdso: DT_SYMTAB: 128\u000a    (00.096616) vdso: DT_STRSZ: 8a\u000a    (00.096640) vdso: DT_SYMENT: 18\u000a    (00.096663) Error (criu/pie-util-vdso.c:193): vdso: Not all dynamic entries are present\u000a    (00.096688) Error (criu/vdso.c:627): vdso: Failed to fill self vdso symtable\u000a    (00.096713) Error (criu/kerndat.c:1906): kerndat_vdso_fill_symtable failed when initializing kerndat.\u000a    (00.096812) Found mmap_min_addr 0x10000\u000a    (00.096881) files stat: fs/nr_open 1073741816\u000a    (00.096908) Error (criu/crtools.c:267): Could not initialize kernel features detection.\u000a\u000aThis seems to be related to the kernel (6.12.0-41.el10.aarch64). The\u000aUbuntu user-space is running in a container on the same kernel.\u000a\u000aLooking at the kernel this seems to be related to:\u000a\u000a    commit 48f6430505c0b0498ee9020ce3cf9558b1caaaeb\u000a    Author: Fangrui Song <i@maskray.me>\u000a    Date:   Thu Jul 18 10:34:23 2024 -0700\u000a\u000a        arm64/vdso: Remove --hash-style=sysv\u000a\u000a        glibc added support for .gnu.hash in 2006 and .hash has been obsoleted\u000a        for more than one decade in many Linux distributions.  Using\u000a        --hash-style=sysv might imply unaddressed issues and confuse readers.\u000a\u000a        Just drop the option and rely on the linker default, which is likely\u000a        \"both\", or \"gnu\" when the distribution really wants to eliminate sysv\u000a        hash overhead.\u000a\u000a        Similar to commit 6b7e26547fad (\"x86/vdso: Emit a GNU hash\").\u000a\u000aThe commit basically does:\u000a\u000a    -ldflags-y := -shared -soname=linux-vdso.so.1 --hash-style=sysv \\\u000a    +ldflags-y := -shared -soname=linux-vdso.so.1 \\\u000a\u000aWhich results in only a GNU hash being added to the ELF header. This\u000achange has been merged with 6.11.\u000a\u000aLooking at the referenced x86 commit:\u000a\u000a    commit 6b7e26547fad7ace3dcb27a5babd2317fb9d1e12\u000a    Author: Andy Lutomirski <luto@amacapital.net>\u000a    Date:   Thu Aug 6 14:45:45 2015 -0700\u000a\u000a        x86/vdso: Emit a GNU hash\u000a\u000a        Some dynamic loaders may be slightly faster if a GNU hash is\u000a        available.  Strangely, this seems to have no effect at all on\u000a        the vdso size.\u000a\u000a        This is unlikely to have any measurable effect on the time it\u000a        takes to resolve vdso symbols (since there are so few of them).\u000a        In some contexts, it can be a win for a different reason: if\u000a        every DSO has a GNU hash section, then libc can avoid\u000a        calculating SysV hashes at all.  Both musl and glibc appear to\u000a        have this optimization.\u000a\u000a        It's plausible that this breaks some ancient glibc version.  If\u000a        so, then, depending on what glibc versions break, we could\u000a        either require COMPAT_VDSO for them or consider reverting.\u000a\u000aWhich is also a really simple change:\u000a\u000a    -VDSO_LDFLAGS = -fPIC -shared $(call cc-ldoption, -Wl$(comma)--hash-style=sysv) \\\u000a    +VDSO_LDFLAGS = -fPIC -shared $(call cc-ldoption, -Wl$(comma)--hash-style=both) \\\u000a\u000aThe big difference here is that for x86 both hash sections are\u000agenerated. For aarch64 only the newer GNU hash is generated. That is why\u000awe only see this error on kernel >= 6.11 and aarch64.\u000a\u000aChanging from DT_HASH to DT_GNU_HASH seems to work on aarch64.  The test\u000asuite runs without any errors.\u000a\u000aUnfortunately I am not aware of all implication of this change and if a\u000asuccessful test suite run means that it still works.\u000a\u000aLooking at the kernel I see following hash styles for the VDSO:\u000a\u000aaarch64: not specified (only GNU hash style)\u000aarm: --hash-style=sysv\u000aloongarch: --hash-style=sysv\u000amips: --hash-style=sysv\u000apowerpc: --hash-style=both\u000ariscv: --hash-style=both\u000as390: --hash-style=both\u000ax86: --hash-style=both\u000a\u000aOnly aarch64 on kernels >= 6.11 is a problem right now, because all\u000aother platforms provide the old style hashing.\u000a\u000aSigned-off-by: Adrian Reber <areber@redhat.com>\u000aCo-developed-by: Dmitry Safonov <dima@arista.com>\u000aCo-authored-by: Dmitry Safonov <dima@arista.com>\u000aSigned-off-by: Dmitry Safonov <dima@arista.com>\u000a",
        "date" : "2025-02-03 13:56:30 -0800",
        "id" : "237ac72c32b95949dd134a6946abeac15e86fb5e",
        "msg" : "vdso: switch from DT_HASH to DT_GNU_HASH (aarch64)",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "criu/pie/util-vdso.c"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://ci.openvz.org/user/avagin@gmail.com",
      "fullName" : "Andrei Vagin"
    }
  ]
}