NixOS / nixpkgs

Nix Packages collection & NixOS
MIT License
17.51k stars 13.68k forks source link

Build failure: virtualbox-modules-7.0.8 with kernel 6.4.10 #249138

Open unode opened 1 year ago

unode commented 1 year ago

Steps To Reproduce

Steps to reproduce the behavior:

  1. Using nixos-23.05 - 720e61ed8de116eec48d6baea1d54469b536b985
  2. Set virtualisation.virtualbox.host.enable = true
  3. nixos-rebuild boot

Build log

building Nix...
building the system configuration...
these 8 derivations will be built:
  /nix/store/658bzal5awgp435fsi1a5m5ahqf6r4im-virtualbox-modules-7.0.8-6.4.10.drv
  /nix/store/kqlbrljxqjjgrra5myjpv7apql3jv5g4-linux-6.4.10-modules.drv
  /nix/store/c5dn2rfzfw9g5nilbvhip1kbcs029l0w-linux-6.4.10-modules-shrunk.drv
  /nix/store/pif6sj8c9g294a4jw0yqsj1qs7nkd59i-stage-1-init.sh.drv
  /nix/store/4jqccx5l72w9l97sks3p6n4qw4461ff7-initrd-linux-6.4.10.drv
  /nix/store/7wq8vsa8kldnwbxz4i7vhyv571hdk0lj-boot.json.drv
  /nix/store/czxnbd7jc6kh60b0zx5r64cdvpcnl9ax-kernel-modules.drv
  /nix/store/0wqkqaghv3456k91fr9flapydkzhvd8x-nixos-system-magnetar-23.05.git.2c0c1b7732b8.drv
building '/nix/store/658bzal5awgp435fsi1a5m5ahqf6r4im-virtualbox-modules-7.0.8-6.4.10.drv'...
unpacking sources
unpacking source archive /nix/store/ydg4jb35yl36w52nlpxx7j9dj7hp2c3z-virtualbox-7.0.8-modsrc
source root is virtualbox-7.0.8-modsrc
patching sources
configuring
no configure script, doing nothing
building
build flags: -j6 SHELL=/nix/store/8fv91097mbh5049i9rglc73dx6kjg3qk-bash-5.2-p15/bin/bash INSTALL_MOD_PATH=\$\(out\)
=== Building 'vboxdrv' module ===
make[1]: Entering directory '/build/virtualbox-7.0.8-modsrc/vboxdrv'
make V= CONFIG_MODULE_SIG= CONFIG_MODULE_SIG_ALL= -C /nix/store/81a6xvlbgbc2qv3i9gr728ic2lh05pkw-linux-6.4.10-dev/lib/modules/6.4.10/build M=/build/virtualbox-7.0.8-modsrc/vboxdrv SRCROOT=/build/virtualbox-7.0.8-modsrc/vboxdrv -j8 modules
make[2]: Entering directory '/nix/store/81a6xvlbgbc2qv3i9gr728ic2lh05pkw-linux-6.4.10-dev/lib/modules/6.4.10/build'
make[2]: warning: -j8 forced in submake: resetting jobserver mode.
  CC [M]  /build/virtualbox-7.0.8-modsrc/vboxdrv/linux/SUPDrv-linux.o
  CC [M]  /build/virtualbox-7.0.8-modsrc/vboxdrv/SUPDrv.o
  CC [M]  /build/virtualbox-7.0.8-modsrc/vboxdrv/SUPDrvGip.o
  CC [M]  /build/virtualbox-7.0.8-modsrc/vboxdrv/SUPDrvSem.o
  CC [M]  /build/virtualbox-7.0.8-modsrc/vboxdrv/SUPDrvTracer.o
  CC [M]  /build/virtualbox-7.0.8-modsrc/vboxdrv/SUPLibAll.o
  CC [M]  /build/virtualbox-7.0.8-modsrc/vboxdrv/common/string/strformatrt.o
  CC [M]  /build/virtualbox-7.0.8-modsrc/vboxdrv/combined-agnostic1.o
  CC [M]  /build/virtualbox-7.0.8-modsrc/vboxdrv/combined-agnostic2.o
  CC [M]  /build/virtualbox-7.0.8-modsrc/vboxdrv/combined-os-specific.o
  LD [M]  /build/virtualbox-7.0.8-modsrc/vboxdrv/vboxdrv.o
/build/virtualbox-7.0.8-modsrc/vboxdrv/vboxdrv.o: warning: objtool: SUPR0TracerFireProbe+0x7: indirect jump found in RETPOLINE build
/build/virtualbox-7.0.8-modsrc/vboxdrv/vboxdrv.o: warning: objtool: supdrvTracerProbeFireStub+0x0: 'naked' return found in RETHUNK build
/build/virtualbox-7.0.8-modsrc/vboxdrv/vboxdrv.o: warning: objtool: rtThreadCtxHooksLnxSchedOut+0x23: call to {dynamic}() with UACCESS enabled
/build/virtualbox-7.0.8-modsrc/vboxdrv/vboxdrv.o: warning: objtool: rtThreadCtxHooksLnxSchedIn+0x2d: call to {dynamic}() with UACCESS enabled
/build/virtualbox-7.0.8-modsrc/vboxdrv/vboxdrv.o: warning: objtool: VBoxHost_RTR0MemKernelCopyFrom+0x17: redundant CLD
/build/virtualbox-7.0.8-modsrc/vboxdrv/vboxdrv.o: warning: objtool: VBoxHost_RTR0MemKernelCopyTo+0x17: redundant CLD
/build/virtualbox-7.0.8-modsrc/vboxdrv/vboxdrv.o: warning: objtool: supdrvTracerCommonDeregisterImpl+0x3c: relocation to !ENDBR: supdrvTracerProbeFireStub+0x0
/build/virtualbox-7.0.8-modsrc/vboxdrv/vboxdrv.o: warning: objtool: ___ksymtab+SUPR0TracerFireProbe+0x0: data relocation to !ENDBR: SUPR0TracerFireProbe+0x0
/build/virtualbox-7.0.8-modsrc/vboxdrv/vboxdrv.o: warning: objtool: g_aFunctions+0xea0: data relocation to !ENDBR: SUPR0TracerFireProbe+0x0
/build/virtualbox-7.0.8-modsrc/vboxdrv/vboxdrv.o: warning: objtool: g_pfnSupdrvProbeFireKernel+0x0: data relocation to !ENDBR: supdrvTracerProbeFireStub+0x0
  MODPOST /build/virtualbox-7.0.8-modsrc/vboxdrv/Module.symvers
  CC [M]  /build/virtualbox-7.0.8-modsrc/vboxdrv/vboxdrv.mod.o
  LD [M]  /build/virtualbox-7.0.8-modsrc/vboxdrv/vboxdrv.ko
  BTF [M] /build/virtualbox-7.0.8-modsrc/vboxdrv/vboxdrv.ko
make[2]: Leaving directory '/nix/store/81a6xvlbgbc2qv3i9gr728ic2lh05pkw-linux-6.4.10-dev/lib/modules/6.4.10/build'
make[1]: Leaving directory '/build/virtualbox-7.0.8-modsrc/vboxdrv'

=== Building 'vboxnetflt' module ===
=== Building 'vboxnetadp' module ===
make[1]: Entering directory '/build/virtualbox-7.0.8-modsrc/vboxnetflt'
make[1]: Entering directory '/build/virtualbox-7.0.8-modsrc/vboxnetadp'
make V= CONFIG_MODULE_SIG= CONFIG_MODULE_SIG_ALL= -C /nix/store/81a6xvlbgbc2qv3i9gr728ic2lh05pkw-linux-6.4.10-dev/lib/modules/6.4.10/build M=/build/virtualbox-7.0.8-modsrc/vboxnetadp SRCROOT=/build/virtualbox-7.0.8-modsrc/vboxnetadp -j8 modules
make V= CONFIG_MODULE_SIG= CONFIG_MODULE_SIG_ALL= -C /nix/store/81a6xvlbgbc2qv3i9gr728ic2lh05pkw-linux-6.4.10-dev/lib/modules/6.4.10/build M=/build/virtualbox-7.0.8-modsrc/vboxnetflt SRCROOT=/build/virtualbox-7.0.8-modsrc/vboxnetflt -j8 modules
make[2]: Entering directory '/nix/store/81a6xvlbgbc2qv3i9gr728ic2lh05pkw-linux-6.4.10-dev/lib/modules/6.4.10/build'
make[2]: warning: -j8 forced in submake: resetting jobserver mode.
make[2]: Entering directory '/nix/store/81a6xvlbgbc2qv3i9gr728ic2lh05pkw-linux-6.4.10-dev/lib/modules/6.4.10/build'
make[2]: warning: -j8 forced in submake: resetting jobserver mode.
  CC [M]  /build/virtualbox-7.0.8-modsrc/vboxnetadp/linux/VBoxNetAdp-linux.o
  CC [M]  /build/virtualbox-7.0.8-modsrc/vboxnetflt/linux/VBoxNetFlt-linux.o
  CC [M]  /build/virtualbox-7.0.8-modsrc/vboxnetflt/VBoxNetFlt.o
  CC [M]  /build/virtualbox-7.0.8-modsrc/vboxnetadp/VBoxNetAdp.o
  CC [M]  /build/virtualbox-7.0.8-modsrc/vboxnetflt/SUPR0IdcClient.o
  CC [M]  /build/virtualbox-7.0.8-modsrc/vboxnetflt/SUPR0IdcClientComponent.o
  CC [M]  /build/virtualbox-7.0.8-modsrc/vboxnetflt/linux/SUPR0IdcClient-linux.o
  LD [M]  /build/virtualbox-7.0.8-modsrc/vboxnetadp/vboxnetadp.o
/build/virtualbox-7.0.8-modsrc/vboxnetflt/linux/VBoxNetFlt-linux.c: In function 'vboxNetFltLinuxForwardToIntNetInner':
/build/virtualbox-7.0.8-modsrc/vboxnetflt/linux/VBoxNetFlt-linux.c:1568:40: error: implicit declaration of function 'skb_gso_segment'; did you mean 'skb_gso_reset'? [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Werror=implicit-function-declaration8;;]
 1568 |             struct sk_buff *pSegment = skb_gso_segment(pBuf, 0 /*supported features*/);
      |                                        ^~~~~~~~~~~~~~~
      |                                        skb_gso_reset
/build/virtualbox-7.0.8-modsrc/vboxnetflt/linux/VBoxNetFlt-linux.c:1568:40: warning: initialization of 'struct sk_buff *' from 'int' makes pointer from integer without a cast [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wint-conversion-Wint-conversion8;;]
  MODPOST /build/virtualbox-7.0.8-modsrc/vboxnetadp/Module.symvers
  CC [M]  /build/virtualbox-7.0.8-modsrc/vboxnetadp/vboxnetadp.mod.o
cc1: some warnings being treated as errors
  LD [M]  /build/virtualbox-7.0.8-modsrc/vboxnetadp/vboxnetadp.ko
make[3]: *** [/nix/store/81a6xvlbgbc2qv3i9gr728ic2lh05pkw-linux-6.4.10-dev/lib/modules/6.4.10/source/scripts/Makefile.build:252: /build/virtualbox-7.0.8-modsrc/vboxnetflt/linux/VBoxNetFlt-linux.o] Error 1
make[2]: *** [/nix/store/81a6xvlbgbc2qv3i9gr728ic2lh05pkw-linux-6.4.10-dev/lib/modules/6.4.10/source/Makefile:2032: /build/virtualbox-7.0.8-modsrc/vboxnetflt] Error 2
make[2]: Leaving directory '/nix/store/81a6xvlbgbc2qv3i9gr728ic2lh05pkw-linux-6.4.10-dev/lib/modules/6.4.10/build'
make[1]: *** [/build/virtualbox-7.0.8-modsrc/vboxnetflt/Makefile-footer.gmk:133: vboxnetflt] Error 2
make[1]: Leaving directory '/build/virtualbox-7.0.8-modsrc/vboxnetflt'
make: *** [Makefile:83: vboxnetflt] Error 1
make: *** Waiting for unfinished jobs....
  BTF [M] /build/virtualbox-7.0.8-modsrc/vboxnetadp/vboxnetadp.ko
make[2]: Leaving directory '/nix/store/81a6xvlbgbc2qv3i9gr728ic2lh05pkw-linux-6.4.10-dev/lib/modules/6.4.10/build'
make[1]: Leaving directory '/build/virtualbox-7.0.8-modsrc/vboxnetadp'

error: builder for '/nix/store/658bzal5awgp435fsi1a5m5ahqf6r4im-virtualbox-modules-7.0.8-6.4.10.drv' failed with exit code 2
error: 1 dependencies of derivation '/nix/store/czxnbd7jc6kh60b0zx5r64cdvpcnl9ax-kernel-modules.drv' failed to build
error: 1 dependencies of derivation '/nix/store/kqlbrljxqjjgrra5myjpv7apql3jv5g4-linux-6.4.10-modules.drv' failed to build
error: 1 dependencies of derivation '/nix/store/0wqkqaghv3456k91fr9flapydkzhvd8x-nixos-system-magnetar-23.05.git.2c0c1b7732b8.drv' failed to build

Metadata

# nix-shell -p nix-info --run "nix-info -m"
 - system: `"x86_64-linux"`
 - host os: `Linux 6.4.8, NixOS, 23.05 (Stoat), 23.05.git.2c0c1b7732b8`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.13.5`
 - channels(root): `"nixos-20.09pre217261.a2e06fc3423"`
 - nixpkgs: `/var/nixpkgs-channels/nixos` (This location contains a git checkout of nixos-23.05)

Possibly related to #248548 but the error is different.

kohrar commented 1 year ago

I also have the same compile error when building but on kernel 6.1.43. I tried VirtualBox 7.0.8 and also the latest 7.0.10 with the same result as well.

# nix-shell -p nix-info --run "nix-info -m"
 - system: `"x86_64-linux"`
 - host os: `Linux 6.1.43, NixOS, 23.05 (Stoat), 23.05.2613.011567f35433`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.13.3`
 - channels(root): `"nixos-23.05"`
 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`
unode commented 1 year ago

Has been reported upstream and the cause identified to be a move of some code between kernel files.

This thread includes the fix which seems to be a simple off-by-one version check.

/usr/src/virtualbox-7.0.10/vboxnetflt/linux/VBoxNetFlt-linux.c line 50 reads:

#if RTLNX_VER_MIN(6,5,0)

But the current kernel is still 6.4. So you have to change the line into

#if RTLNX_VER_MIN(6,4,0)

Can we apply this patch ourselves until upstream makes a new release?

unode commented 1 year ago

Tagging @sander and @cdepillabout as virtualbox/vbox-extensions package maintainers.

unode commented 1 year ago

Patch available here https://gitlab.archlinux.org/archlinux/packaging/packages/virtualbox/-/blob/5711067e6a052c2f6a2a3078254f8e7bdcef0bd7/019-linux-6-4-10.patch

diff -Nurp VirtualBox-7.0.10/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c VirtualBox-7.0.10-linux6410/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
--- VirtualBox-7.0.10/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c  2023-07-12 16:36:55.000000000 +0000
+++ VirtualBox-7.0.10-linux6410/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c    2023-08-11 12:18:01.841396649 +0000
@@ -47,7 +47,7 @@
 #if RTLNX_VER_MIN(2,6,24)
 # include <linux/nsproxy.h>
 #endif
-#if RTLNX_VER_MIN(6,5,0)
+#if RTLNX_VER_MIN(6,4,10)
 # include <net/gso.h>
 #endif
 #include <linux/netdevice.h>

Will also need a nixos-23.05 backport of https://github.com/NixOS/nixpkgs/commit/3c10b650b91ab6a6ca6839f5e280e091cba793aa

unode commented 1 year ago

Backport request for vbox 7.0.10 exists #248853 and reports building on kernel 6.4. This may be fixed by that PR

mabl commented 1 year ago

See also https://bugs.gentoo.org/912168#c5

Feliix42 commented 1 year ago

Is there any progress on the issue? As far as I can see on my system, the problem still persists as of 3efb0f6f404ec8dae31bdb1a9b17705ce0d6986e

unode commented 1 year ago

I get a similar error with 7.0.10:

make[2]: warning: -j8 forced in submake: resetting jobserver mode.
  CC [M]  /build/virtualbox-7.0.10-modsrc/vboxnetadp/linux/VBoxNetAdp-linux.o
  CC [M]  /build/virtualbox-7.0.10-modsrc/vboxnetflt/linux/VBoxNetFlt-linux.o
  CC [M]  /build/virtualbox-7.0.10-modsrc/vboxnetadp/VBoxNetAdp.o
  CC [M]  /build/virtualbox-7.0.10-modsrc/vboxnetflt/VBoxNetFlt.o
  CC [M]  /build/virtualbox-7.0.10-modsrc/vboxnetflt/SUPR0IdcClient.o
  CC [M]  /build/virtualbox-7.0.10-modsrc/vboxnetflt/SUPR0IdcClientComponent.o
  CC [M]  /build/virtualbox-7.0.10-modsrc/vboxnetflt/linux/SUPR0IdcClient-linux.o
/build/virtualbox-7.0.10-modsrc/vboxnetflt/linux/VBoxNetFlt-linux.c: In function 'vboxNetFltLinuxForwardToIntNetInner':
/build/virtualbox-7.0.10-modsrc/vboxnetflt/linux/VBoxNetFlt-linux.c:1570:40: error: implicit declaration of function 'skb_gso_segment'; did you mean 'skb_gso_reset'? [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Werror=implicit-function-declaration8;;]
 1570 |             struct sk_buff *pSegment = skb_gso_segment(pBuf, 0 /*supported features*/);
      |                                        ^~~~~~~~~~~~~~~
      |                                        skb_gso_reset
/build/virtualbox-7.0.10-modsrc/vboxnetflt/linux/VBoxNetFlt-linux.c:1570:40: warning: initialization of 'struct sk_buff *' from 'int' makes pointer from integer without a cast [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wint-conversion-Wint-conversion8;;]
  LD [M]  /build/virtualbox-7.0.10-modsrc/vboxnetadp/vboxnetadp.o

Confirm that it still fails.

Kernel is 6.4.12

Elserjo commented 1 year ago

I get a similar error with 7.0.10:

make[2]: warning: -j8 forced in submake: resetting jobserver mode.
  CC [M]  /build/virtualbox-7.0.10-modsrc/vboxnetadp/linux/VBoxNetAdp-linux.o
  CC [M]  /build/virtualbox-7.0.10-modsrc/vboxnetflt/linux/VBoxNetFlt-linux.o
  CC [M]  /build/virtualbox-7.0.10-modsrc/vboxnetadp/VBoxNetAdp.o
  CC [M]  /build/virtualbox-7.0.10-modsrc/vboxnetflt/VBoxNetFlt.o
  CC [M]  /build/virtualbox-7.0.10-modsrc/vboxnetflt/SUPR0IdcClient.o
  CC [M]  /build/virtualbox-7.0.10-modsrc/vboxnetflt/SUPR0IdcClientComponent.o
  CC [M]  /build/virtualbox-7.0.10-modsrc/vboxnetflt/linux/SUPR0IdcClient-linux.o
/build/virtualbox-7.0.10-modsrc/vboxnetflt/linux/VBoxNetFlt-linux.c: In function 'vboxNetFltLinuxForwardToIntNetInner':
/build/virtualbox-7.0.10-modsrc/vboxnetflt/linux/VBoxNetFlt-linux.c:1570:40: error: implicit declaration of function 'skb_gso_segment'; did you mean 'skb_gso_reset'? [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Werror=implicit-function-declaration8;;]
 1570 |             struct sk_buff *pSegment = skb_gso_segment(pBuf, 0 /*supported features*/);
      |                                        ^~~~~~~~~~~~~~~
      |                                        skb_gso_reset
/build/virtualbox-7.0.10-modsrc/vboxnetflt/linux/VBoxNetFlt-linux.c:1570:40: warning: initialization of 'struct sk_buff *' from 'int' makes pointer from integer without a cast [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wint-conversion-Wint-conversion8;;]
  LD [M]  /build/virtualbox-7.0.10-modsrc/vboxnetadp/vboxnetadp.o

Confirm that it still fails.

Kernel is 6.4.12

exactly same on xanmod kernel 6.4.12

chris3k commented 1 year ago

As a workaround you can add to your configuration.nix

  virtualisation.virtualbox.host.package = (pkgs.virtualbox.overrideAttrs (old: {
     patches = old.patches or [] ++ [
       ./patches/VBoxNetFlt-linux-6.4.10.patch
     ];
  }));

with following .patch

$ cat ./patches/VBoxNetFlt-linux-6.4.10.patch

diff --git a/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c b/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
index 127f995..4aec33f 100644
--- a/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
+++ b/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
@@ -47,7 +47,7 @@
 #if RTLNX_VER_MIN(2,6,24)
 # include <linux/nsproxy.h>
 #endif
-#if RTLNX_VER_MIN(6,5,0)
+#if RTLNX_VER_MIN(6,4,10)
 # include <net/gso.h>
 #endif
 #include <linux/netdevice.h>
Feliix42 commented 1 year ago

Alternatively, you can now also switch to kernel 6.5.

unode commented 1 year ago
boot.kernelPackages = pkgs.linuxPackagesFor pkgs.linux_latest;

pulls kernel 6.5.1 and we are back in business.