emulators/virtualbox-ose-kmod does not build and does not work on 14.0-CURRENT 1400079

From: José_Pérez <fbl_at_aoek.com>
Date: Mon, 13 Feb 2023 16:59:43 UTC
Hi,
I get the following error when poudriere building 
emulators/virtualbox-ose-kmod on 14.0-CURRENT 1400079:
cc  -O2 -pipe -fno-strict-aliasing -DRT_OS_FREEBSD -DIN_RING0 -DIN_RT_R0 
-DIN_SUP_R0 -DSUPDRV_WITH_RELEASE_LOGGER -DVBOX -DRT_WITH_VBOX -w 
-DVBOX_WITH_HARDENING -DVBOX_WITH_64_BITS_GUESTS -DRT_ARCH_AMD64  
-Werror -D_KERNEL -DKLD_MODULE -nostdinc  -Iinclude -I. -Ir0drv -include 
/wrkdirs/usr/ports/emulators/virtualbox-ose-kmod/work/VirtualBox-6.1.36/out/freebsd.amd64/release/bin
/src/vboxdrv/opt_global.h -I. -I/usr/src/sys 
-I/usr/src/sys/contrib/ck/include -fno-common  -fno-omit-frame-pointer 
-mno-omit-leaf-frame-pointer 
-fdebug-prefix-map=./machine=/usr/src/sys/amd64/include 
-fdebug-prefix-map=./x86=/usr/src/sys/x86/include 
-fdebug-prefix-map=./i386=/usr/src/sys/i386/include     -MD  
-MF.depend.SUPDrv-freebsd.o -MTSUPDrv-freebsd.o -mcmodel=kernel -mn
o-red-zone -mno-mmx -mno-sse -msoft-float  
-fno-asynchronous-unwind-tables -ffreestanding -fwrapv -fstack-protector 
-Wall -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes 
-Wpointer-arith -Wcast-qual -Wundef -Wno-pointer-sign 
-D__printf__=__freebsd_kprintf__ -Wmissing-include-dirs 
-fdiagnostics-show-option -Wno-unknown-pragmas 
-Wno-error=tautological-compare -Wno-error
=empty-body -Wno-error=parentheses-equality -Wno-error=unused-function 
-Wno-error=pointer-sign -Wno-error=shift-negative-value 
-Wno-address-of-packed-member -Wno-error=array-parameter 
-Wno-error=deprecated-non-prototype -Wno-error=strict-prototypes 
-Wno-error=unused-but-set-variable -Wno-format-zero-length   -mno-aes 
-mno-avx  -std=iso9899:1999 -c /wrkdirs/usr/ports/emulators/
virtualbox-ose-kmod/work/VirtualBox-6.1.36/out/freebsd.amd64/release/bin/src/vboxdrv/freebsd/SUPDrv-freebsd.c 
-o SUPDrv-freebsd.o
/wrkdirs/usr/ports/emulators/virtualbox-ose-kmod/work/VirtualBox-6.1.36/out/freebsd.amd64/release/bin/src/vboxdrv/freebsd/SUPDrv-freebsd.c:433:50: 
error: incompatible pointer to integer conversion passing 'void *' to 
parameter of type 'RTR3PTR' (aka 'unsigned long') [-Wint-conversion]
         if (RT_FAILURE(RTR0MemUserCopyFrom(&Hdr, pvUser, sizeof(Hdr))))
                                                  ^~~~~~
include/iprt/errcore.h:99:58: note: expanded from macro 'RT_FAILURE'
#define RT_FAILURE(rc)      ( RT_UNLIKELY(!RT_SUCCESS_NP(rc)) )
                                                          ^~
include/iprt/errcore.h:80:38: note: expanded from macro 'RT_SUCCESS_NP'
# define RT_SUCCESS_NP(rc)   ( (int)(rc) >= VINF_SUCCESS )
                                      ^~
include/iprt/cdefs.h:1826:53: note: expanded from macro 'RT_UNLIKELY'
#  define RT_UNLIKELY(expr)     __builtin_expect(!!(expr), 0)
                                                     ^~~~
include/iprt/mem.h:756:56: note: passing argument to parameter 
'R3PtrSrc' here
RTR0DECL(int) RTR0MemUserCopyFrom(void *pvDst, RTR3PTR R3PtrSrc, size_t 
cb);
                                                        ^
/wrkdirs/usr/ports/emulators/virtualbox-ose-kmod/work/VirtualBox-6.1.36/out/freebsd.amd64/release/bin/src/vboxdrv/freebsd/SUPDrv-freebsd.c:461:50: 
error: incompatible pointer to integer conversion passing 'void *' to 
parameter of type 'RTR3PTR' (aka 'unsigned long') [-Wint-conversion]
         if (RT_FAILURE(RTR0MemUserCopyFrom(pHdr, pvUser, Hdr.cbIn)))
                                                  ^~~~~~
include/iprt/errcore.h:99:58: note: expanded from macro 'RT_FAILURE'
#define RT_FAILURE(rc)      ( RT_UNLIKELY(!RT_SUCCESS_NP(rc)) )
                                                          ^~
include/iprt/errcore.h:80:38: note: expanded from macro 'RT_SUCCESS_NP'
# define RT_SUCCESS_NP(rc)   ( (int)(rc) >= VINF_SUCCESS )
                                      ^~
include/iprt/cdefs.h:1826:53: note: expanded from macro 'RT_UNLIKELY'
#  define RT_UNLIKELY(expr)     __builtin_expect(!!(expr), 0)
                                                     ^~~~
include/iprt/mem.h:756:56: note: passing argument to parameter 
'R3PtrSrc' here
RTR0DECL(int) RTR0MemUserCopyFrom(void *pvDst, RTR3PTR R3PtrSrc, size_t 
cb);
                                                        ^
/wrkdirs/usr/ports/emulators/virtualbox-ose-kmod/work/VirtualBox-6.1.36/out/freebsd.amd64/release/bin/src/vboxdrv/freebsd/SUPDrv-freebsd.c:494:46: 
error: incompatible pointer to integer conversion passing 'void *' to 
parameter of type 'RTR3PTR' (aka 'unsigned long') [-Wint-conversion]
             if (RT_FAILURE(RTR0MemUserCopyTo(pvUser, pHdr, cbOut)))
                                              ^~~~~~
include/iprt/errcore.h:99:58: note: expanded from macro 'RT_FAILURE'
#define RT_FAILURE(rc)      ( RT_UNLIKELY(!RT_SUCCESS_NP(rc)) )
                                                          ^~
include/iprt/errcore.h:80:38: note: expanded from macro 'RT_SUCCESS_NP'
# define RT_SUCCESS_NP(rc)   ( (int)(rc) >= VINF_SUCCESS )
                                      ^~
include/iprt/cdefs.h:1826:53: note: expanded from macro 'RT_UNLIKELY'
#  define RT_UNLIKELY(expr)     __builtin_expect(!!(expr), 0)
                                                     ^~~~
include/iprt/mem.h:768:41: note: passing argument to parameter 
'R3PtrDst' here
RTR0DECL(int) RTR0MemUserCopyTo(RTR3PTR R3PtrDst, void const *pvSrc, 
size_t cb);
                                         ^
3 errors generated.
*** Error code 1

Stop.
make[2]: stopped in 
/wrkdirs/usr/ports/emulators/virtualbox-ose-kmod/work/VirtualBox-6.1.36/out/freebsd.amd64/release/bin/src/vboxdrv
*** Error code 1

Stop.
make[1]: stopped in 
/wrkdirs/usr/ports/emulators/virtualbox-ose-kmod/work/VirtualBox-6.1.36/out/freebsd.amd64/release/bin/src
*** Error code 1

Stop.
make: stopped in /usr/ports/emulators/virtualbox-ose-kmod

This is due to llvm 15 erroring on -Wint-conversion.

I managed to have the kmod compile and load by adding to the Makefile:
CFLAGS+=       -Wno-int-conversion

When I launch any guest I get this error:
Failed to construct device 'VMMDev' instance #0 (VERR_INTERNAL_ERROR_3).

I saw this same error was discussed in bug 
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=234878
but it seems it's there again.

Does anybody experience similar issues? Is there a known fix?

Thank you.

BR,

-- 
José Pérez