Summary: | emulators/virtualbox-ose panic when starting virtual machine on 9.2-STABLE | ||
---|---|---|---|
Product: | Ports & Packages | Reporter: | Arrigo Marchiori <ardovm> |
Component: | Individual Port(s) | Assignee: | Virtualbox Team (Nobody) <vbox> |
Status: | Closed FIXED | ||
Severity: | Affects Only Me | CC: | bdrewery, cperciva |
Priority: | Normal | ||
Version: | Latest | ||
Hardware: | Any | ||
OS: | Any |
Description
Arrigo Marchiori
2014-03-14 16:10:00 UTC
Responsible Changed From-To: freebsd-ports-bugs->vbox Over to maintainer (via the GNATS Auto Assign Tool) -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Please download the following file: https://svn.redports.org/virtualbox/emulators/virtualbox-ose/files/patch-src-VBox-Runtime-r0drv-freebsd-memobj-r0drv-freebsd.c Then, replace the existing file in emulators/virtualbox-ose/files directory with it, rebuild emulators/virtualbox-ose-kmod, and try again. Please note the patch directory is NOT emulators/virtualbox-ose-kmod/files. BTW, you must update your kernel first to test this patch, i.e., r263171 or later because __FreeBSD_version was bumped little late. Jung-uk Kim -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (FreeBSD) iQEcBAEBAgAGBQJTI1XMAAoJEHyflib82/FGU9AH/Rir0KvxP5iG8POoE/lNGVrA EIjblk4PBRFIAozmeJbjuNlLDfwv1bgGZ5D6ZBkcrPd4fbaLKEtlG9KT1QzFdMk7 W1vYbQ8k9t3prXHc2YDXyy8STXRaH/fyFnrCvxxbdR8AVO4cOi6WnQBxpVAuv3xo ZGyom00Rq9Ymcxo3oA1agoNAiyrPNGCP2Uz1tWWAAYsa09G2MbpT+QP+ADc8zZxj ZB3gOw3FVCUcNeYfofxdd+6ofG3Jp/H7iomueyPsS5c88WG/YZRop+lXIX7fhKOX JY0l2AdCBV6a31mKDlRWRO2wfwN4RyV/kj7RPh5DzEyfnaTtO0QAy5MBAlgS5xU= =bccj -----END PGP SIGNATURE----- Same problem here. When trying with replaced patch as suggested I am getting Mar 15 17:02:47 cad kernel: FreeBSD 9.2-STABLE #33 r263203: Sat Mar 15 11:56:03 CET 2014 Mar 15 17:02:47 cad kernel: root@cad.lecad.fs.uni-lj.si:/usr/obj/usr/src/sys/CAD amd64 Mar 15 17:02:47 cad kernel: gcc version 4.2.1 20070831 patched [FreeBSD] Mar 15 17:02:47 cad kernel: link_elf_obj: symbol vm_pageout_grow_cache undefined Mar 15 17:02:47 cad kernel: KLD file vboxdrv.ko - could not finalize loading ... Best regards, Leon Kos
Hi,
On Fri, 14 Mar 2014, Jung-uk Kim wrote:
> Then, replace the existing file in emulators/virtualbox-ose/files
> directory with it, rebuild emulators/virtualbox-ose-kmod, and try
> again. Please note the patch directory is NOT
> emulators/virtualbox-ose-kmod/files.
I tried on r263205 and I have been able to start an i386 FreeBSD VM only
once; I usually get this:
Tracing pid 2489 tid 101003 td 0xfffffe01eb862920
kdb_enter() at kdb_enter+0x3b/frame 0xffffff8495797630
panic() at panic+0x1c7/frame 0xffffff8495797730
vm_page_insert() at vm_page_insert+0x177/frame 0xffffff8495797760
rtR0MemObjFreeBSDContigPhysAllocHelper() at rtR0MemObjFreeBSDContigPhysAllocHelper+0xc1/frame 0xffffff84957977b0
rtR0MemObjFreeBSDPhysAllocHelper() at rtR0MemObjFreeBSDPhysAllocHelper+0x67/frame 0xffffff8495797800
rtR0MemObjFreeBSDAllocPhysPages() at rtR0MemObjFreeBSDAllocPhysPages+0x81/frame 0xffffff8495797850
rtR0MemObjNativeAllocPhysNC() at rtR0MemObjNativeAllocPhysNC+0x28/frame 0xffffff8495797870
SUPR0PageAllocEx() at SUPR0PageAllocEx+0x253/frame 0xffffff84957978f0
supdrvIOCtl() at supdrvIOCtl+0x1bd7/frame 0xffffff8495797980
VBoxDrvFreeBSDIOCtl() at VBoxDrvFreeBSDIOCtl+0x1e3/frame 0xffffff84957979f0
devfs_ioctl_f() at devfs_ioctl_f+0x7b/frame 0xffffff8495797a60
kern_ioctl() at kern_ioctl+0x106/frame 0xffffff8495797ab0
sys_ioctl() at sys_ioctl+0xfd/frame 0xffffff8495797b10
amd64_syscall() at amd64_syscall+0x5ea/frame 0xffffff8495797c30
Xfast_syscall() at Xfast_syscall+0xf7/frame 0xffffff8495797c30
--- syscall (54, FreeBSD ELF64, sys_ioctl), rip = 0x801282d9c, rsp = 0x7fffff9a5868, rbp = 0x7fffff9a5870 ---
I¢m not sure if the one time success is related to the patch or to
mere luck. If you need any test just drop me a line.
--
jimmy
Hello Jung-uk, On Fri, Mar 14, 2014 at 03:17:32PM -0400, Jung-uk Kim wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Please download the following file: > > https://svn.redports.org/virtualbox/emulators/virtualbox-ose/files/patch-src-VBox-Runtime-r0drv-freebsd-memobj-r0drv-freebsd.c > > Then, replace the existing file in emulators/virtualbox-ose/files > directory with it, rebuild emulators/virtualbox-ose-kmod, and try > again. Please note the patch directory is NOT > emulators/virtualbox-ose-kmod/files. > > BTW, you must update your kernel first to test this patch, i.e., > r263171 or later because __FreeBSD_version was bumped little late. I updated this morning and rebuilt world. # uname -a FreeBSD myhost 9.2-STABLE FreeBSD 9.2-STABLE #66 r263261: Mon Mar 17 08:50:31 CET 2014 root@myhost:/usr/obj/usr/src/sys/GENERIC i386 I have now the same problem as Leon Kos: # dmesg Copyright (c) 1992-2014 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD is a registered trademark of The FreeBSD Foundation. FreeBSD 9.2-STABLE #66 r263261: Mon Mar 17 08:50:31 CET 2014 root@myhost:/usr/obj/usr/src/sys/GENERIC i386 gcc version 4.2.1 20070831 patched [FreeBSD] link_elf: symbol vm_pageout_grow_cache undefined KLD file vboxdrv.ko - could not finalize loading [...] Thank you for your support! Best regards, -- rigo http://rigo.altervista.org -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 I just updated the patch. Please re-download the patch and try again. https://svn.redports.org/virtualbox/emulators/virtualbox-ose/files/patch-src-VBox-Runtime-r0drv-freebsd-memobj-r0drv-freebsd.c The prerequisite is still the same, i. e., your kernel and kernel source must be up-to-date, at least r263171. Sorry about the mess. Jung-uk Kim -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (FreeBSD) iQEcBAEBAgAGBQJTJ0AXAAoJEHyflib82/FGDZEH/RGbpQt00VopcueJfYJNDZJI SqZppTsFEdChP7zA97k1Ksay3kl1CMU1d37A7lLtygoRLhlnlACiX0a2L0bFNuZj MDYYCRvlTzkGqUzoGopiNLphT29U2hFo1TGsISjaNd/AT5MyIClMAy9A+Q062kSd LVrnpGlN4j3QIBwVwCDyCCER6EXJSJuuUmz7zOlbg67W/1wZdH0zetW9XvFEtCDP 3gttRuPR03N61ySh8xJfYr3ePj4Yvpgx/CG+xufhPv9oA8bBRS5MIqhL2UJBMd/W wWeMuEbqfJ5+/GufOs9SR164QE6bTNcaYkmDtdLxe/17MdMo6kU748LRajKSdMk= =UP+M -----END PGP SIGNATURE----- Hello Jung-uk, On Mon, Mar 17, 2014 at 02:33:59PM -0400, Jung-uk Kim wrote: [...] > I just updated the patch. Please re-download the patch and try again. > > https://svn.redports.org/virtualbox/emulators/virtualbox-ose/files/patch-src-VBox-Runtime-r0drv-freebsd-memobj-r0drv-freebsd.c > > The prerequisite is still the same, i. e., your kernel and kernel > source must be up-to-date, at least r263171. This time, it seems to work fine! I have been running a Linux VM for some time with no problems. Can you think of any tests I can do to make sure that the problem is solved? (I only have Linux VM's) > Sorry about the mess. Thank you for your support! Best regards, -- rigo http://rigo.altervista.org Author: jkim Date: Thu Mar 20 18:11:11 2014 New Revision: 348711 URL: http://svnweb.freebsd.org/changeset/ports/348711 QAT: https://qat.redports.org/buildarchive/r348711/ Log: Fix panic for stable/9. Use vm_page_alloc_contig() as it is now available. Tested by: Douglas Berry (doug at bitnix dot ca) PR: ports/187580 Added: head/emulators/virtualbox-ose-kmod-legacy/files/patch-src-VBox-Runtime-r0drv-freebsd-memobj-r0drv-freebsd_VM_PAGEOUT_GROW_CACHE.c (contents, props changed) Modified: head/emulators/virtualbox-ose-additions/Makefile head/emulators/virtualbox-ose-kmod-legacy/Makefile head/emulators/virtualbox-ose-kmod-legacy/files/patch-src-VBox-Runtime-r0drv-freebsd-memobj-r0drv-freebsd_VM_OBJECT_RENAME.c head/emulators/virtualbox-ose-kmod/Makefile head/emulators/virtualbox-ose/files/patch-src-VBox-Runtime-r0drv-freebsd-memobj-r0drv-freebsd.c Modified: head/emulators/virtualbox-ose-additions/Makefile ============================================================================== --- head/emulators/virtualbox-ose-additions/Makefile Thu Mar 20 18:01:39 2014 (r348710) +++ head/emulators/virtualbox-ose-additions/Makefile Thu Mar 20 18:11:11 2014 (r348711) @@ -3,6 +3,7 @@ PORTNAME= virtualbox-ose DISTVERSION= 4.3.8 +PORTREVISION= 1 CATEGORIES= emulators MASTER_SITES= http://download.virtualbox.org/virtualbox/${DISTVERSION}/ \ http://tmp.chruetertee.ch/ \ Modified: head/emulators/virtualbox-ose-kmod-legacy/Makefile ============================================================================== --- head/emulators/virtualbox-ose-kmod-legacy/Makefile Thu Mar 20 18:01:39 2014 (r348710) +++ head/emulators/virtualbox-ose-kmod-legacy/Makefile Thu Mar 20 18:11:11 2014 (r348711) @@ -3,6 +3,7 @@ PORTNAME= virtualbox-ose DISTVERSION= 4.2.22 +PORTREVISION= 1 CATEGORIES= emulators MASTER_SITES= http://download.virtualbox.org/virtualbox/${DISTVERSION}/ \ http://tmp.chruetertee.ch/ \ Modified: head/emulators/virtualbox-ose-kmod-legacy/files/patch-src-VBox-Runtime-r0drv-freebsd-memobj-r0drv-freebsd_VM_OBJECT_RENAME.c ============================================================================== --- head/emulators/virtualbox-ose-kmod-legacy/files/patch-src-VBox-Runtime-r0drv-freebsd-memobj-r0drv-freebsd_VM_OBJECT_RENAME.c Thu Mar 20 18:01:39 2014 (r348710) +++ head/emulators/virtualbox-ose-kmod-legacy/files/patch-src-VBox-Runtime-r0drv-freebsd-memobj-r0drv-freebsd_VM_OBJECT_RENAME.c Thu Mar 20 18:11:11 2014 (r348711) @@ -1,7 +1,7 @@ $FreeBSD$ ---- src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c 2013-03-20 19:19:36.795745576 -0700 -+++ src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c 2013-03-20 19:15:35.164791970 -0700 +--- src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c.orig 2014-03-14 17:25:46.000000000 -0400 ++++ src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c 2014-03-14 17:34:35.000000000 -0400 @@ -162,7 +162,11 @@ case RTR0MEMOBJTYPE_PHYS: case RTR0MEMOBJTYPE_PHYS_NC: @@ -14,7 +14,7 @@ $FreeBSD$ vm_page_t pPage = vm_page_find_least(pMemFreeBSD->pObject, 0); #if __FreeBSD_version < 900000 /* See http://lists.freebsd.org/pipermail/freebsd-current/2012-November/037963.html */ -@@ -177,7 +181,12 @@ +@@ -177,7 +181,11 @@ #if __FreeBSD_version < 900000 vm_page_unlock_queues(); #endif @@ -23,11 +23,18 @@ $FreeBSD$ +#else VM_OBJECT_UNLOCK(pMemFreeBSD->pObject); +#endif -+ vm_object_deallocate(pMemFreeBSD->pObject); break; } -@@ -205,10 +214,18 @@ +@@ -198,17 +206,25 @@ + vm_page_t pPages; + int cTries = 0; + +-#if __FreeBSD_version > 1000000 ++#if __FreeBSD_version >= 902508 + int fFlags = VM_ALLOC_INTERRUPT | VM_ALLOC_NOBUSY; + if (fWire) + fFlags |= VM_ALLOC_WIRED; while (cTries <= 1) { @@ -46,31 +53,7 @@ $FreeBSD$ if (pPages) break; vm_pageout_grow_cache(cTries, 0, VmPhysAddrHigh); -@@ -228,7 +245,11 @@ - - if (!pPages) - return pPages; -+#if __FreeBSD_version >= 1000030 -+ VM_OBJECT_WLOCK(pObject); -+#else - VM_OBJECT_LOCK(pObject); -+#endif - for (vm_pindex_t iPage = 0; iPage < cPages; iPage++) - { - vm_page_t pPage = pPages + iPage; -@@ -240,7 +261,11 @@ - atomic_add_int(&cnt.v_wire_count, 1); - } - } -+#if __FreeBSD_version >= 1000030 -+ VM_OBJECT_WUNLOCK(pObject); -+#else - VM_OBJECT_UNLOCK(pObject); -+#endif - return pPages; - #endif - } -@@ -264,7 +289,11 @@ +@@ -264,7 +280,11 @@ if (!pPage) { /* Free all allocated pages */ @@ -82,7 +65,7 @@ $FreeBSD$ while (iPage-- > 0) { pPage = vm_page_lookup(pObject, iPage); -@@ -278,7 +307,11 @@ +@@ -278,7 +298,11 @@ vm_page_unlock_queues(); #endif } @@ -94,7 +77,7 @@ $FreeBSD$ return rcNoMem; } } -@@ -411,9 +444,17 @@ +@@ -417,9 +441,17 @@ if (fContiguous) { Assert(enmType == RTR0MEMOBJTYPE_PHYS); @@ -112,7 +95,7 @@ $FreeBSD$ pMemFreeBSD->Core.u.Phys.fAllocated = true; } -@@ -823,9 +864,17 @@ +@@ -838,9 +870,17 @@ case RTR0MEMOBJTYPE_PHYS_NC: { RTHCPHYS addr; Added: head/emulators/virtualbox-ose-kmod-legacy/files/patch-src-VBox-Runtime-r0drv-freebsd-memobj-r0drv-freebsd_VM_PAGEOUT_GROW_CACHE.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/emulators/virtualbox-ose-kmod-legacy/files/patch-src-VBox-Runtime-r0drv-freebsd-memobj-r0drv-freebsd_VM_PAGEOUT_GROW_CACHE.c Thu Mar 20 18:11:11 2014 (r348711) @@ -0,0 +1,37 @@ +--- src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c.orig 2014-03-17 14:08:04.000000000 -0400 ++++ src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c 2014-03-17 14:09:34.000000000 -0400 +@@ -211,7 +211,7 @@ + if (fWire) + fFlags |= VM_ALLOC_WIRED; + +- while (cTries <= 1) ++ while (1) + { + #if __FreeBSD_version >= 1000030 + VM_OBJECT_WLOCK(pObject); +@@ -225,18 +225,22 @@ + #else + VM_OBJECT_UNLOCK(pObject); + #endif +- if (pPages) ++ if (pPages || cTries >= 1) + break; ++#if __FreeBSD_version >= 1000015 + vm_pageout_grow_cache(cTries, 0, VmPhysAddrHigh); ++#else ++ vm_contig_grow_cache(cTries, 0, VmPhysAddrHigh); ++#endif + cTries++; + } + + return pPages; + #else +- while (cTries <= 1) ++ while (1) + { + pPages = vm_phys_alloc_contig(cPages, 0, VmPhysAddrHigh, uAlignment, 0); +- if (pPages) ++ if (pPages || cTries >= 1) + break; + vm_contig_grow_cache(cTries, 0, VmPhysAddrHigh); + cTries++; Modified: head/emulators/virtualbox-ose-kmod/Makefile ============================================================================== --- head/emulators/virtualbox-ose-kmod/Makefile Thu Mar 20 18:01:39 2014 (r348710) +++ head/emulators/virtualbox-ose-kmod/Makefile Thu Mar 20 18:11:11 2014 (r348711) @@ -3,6 +3,7 @@ PORTNAME= virtualbox-ose DISTVERSION= 4.3.8 +PORTREVISION= 1 CATEGORIES= emulators MASTER_SITES= http://download.virtualbox.org/virtualbox/${DISTVERSION}/ \ http://tmp.chruetertee.ch/ \ Modified: head/emulators/virtualbox-ose/files/patch-src-VBox-Runtime-r0drv-freebsd-memobj-r0drv-freebsd.c ============================================================================== --- head/emulators/virtualbox-ose/files/patch-src-VBox-Runtime-r0drv-freebsd-memobj-r0drv-freebsd.c Thu Mar 20 18:01:39 2014 (r348710) +++ head/emulators/virtualbox-ose/files/patch-src-VBox-Runtime-r0drv-freebsd-memobj-r0drv-freebsd.c Thu Mar 20 18:11:11 2014 (r348711) @@ -7,8 +7,8 @@ From Alan L. Cox on FreeBSD-current: answer that question. [1] http://lists.freebsd.org/pipermail/freebsd-current/2012-November/037963.html ---- src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c.orig 2013-11-29 12:04:53.000000000 +0100 -+++ src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c 2013-11-29 12:37:29.000000000 +0100 +--- src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c.orig 2014-02-25 12:09:32.000000000 -0500 ++++ src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c 2014-03-17 13:57:00.000000000 -0400 @@ -168,14 +168,19 @@ VM_OBJECT_LOCK(pMemFreeBSD->pObject); #endif @@ -29,7 +29,75 @@ From Alan L. Cox on FreeBSD-current: #if __FreeBSD_version >= 1000030 VM_OBJECT_WUNLOCK(pMemFreeBSD->pObject); #else -@@ -291,11 +296,15 @@ +@@ -201,12 +206,12 @@ + vm_page_t pPages; + int cTries = 0; + +-#if __FreeBSD_version > 1000000 ++#if __FreeBSD_version >= 902508 + int fFlags = VM_ALLOC_INTERRUPT | VM_ALLOC_NOBUSY; + if (fWire) + fFlags |= VM_ALLOC_WIRED; + +- while (cTries <= 1) ++ while (1) + { + #if __FreeBSD_version >= 1000030 + VM_OBJECT_WLOCK(pObject); +@@ -220,18 +225,20 @@ + #else + VM_OBJECT_UNLOCK(pObject); + #endif +- if (pPages) ++ if (pPages || cTries >= 1) + break; ++#if __FreeBSD_version >= 1000015 + vm_pageout_grow_cache(cTries, 0, VmPhysAddrHigh); ++#else ++ vm_contig_grow_cache(cTries, 0, VmPhysAddrHigh); ++#endif + cTries++; + } +- +- return pPages; + #else +- while (cTries <= 1) ++ while (1) + { + pPages = vm_phys_alloc_contig(cPages, 0, VmPhysAddrHigh, uAlignment, 0); +- if (pPages) ++ if (pPages || cTries >= 1) + break; + vm_contig_grow_cache(cTries, 0, VmPhysAddrHigh); + cTries++; +@@ -239,11 +246,8 @@ + + if (!pPages) + return pPages; +-#if __FreeBSD_version >= 1000030 +- VM_OBJECT_WLOCK(pObject); +-#else ++ + VM_OBJECT_LOCK(pObject); +-#endif + for (vm_pindex_t iPage = 0; iPage < cPages; iPage++) + { + vm_page_t pPage = pPages + iPage; +@@ -255,13 +259,9 @@ + atomic_add_int(&cnt.v_wire_count, 1); + } + } +-#if __FreeBSD_version >= 1000030 +- VM_OBJECT_WUNLOCK(pObject); +-#else + VM_OBJECT_UNLOCK(pObject); + #endif + return pPages; +-#endif + } + + static int rtR0MemObjFreeBSDPhysAllocHelper(vm_object_t pObject, u_long cPages, +@@ -291,11 +291,15 @@ while (iPage-- > 0) { pPage = vm_page_lookup(pObject, iPage); _______________________________________________ svn-ports-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-ports-all To unsubscribe, send any mail to "svn-ports-all-unsubscribe@freebsd.org" State Changed From-To: open->closed It should be fixed with r348711. Thanks! *** Bug 190184 has been marked as a duplicate of this bug. *** Note that while this fixes the panic when you build virtualbox-ose on the target system, the fix is not ABI compatible and still panics on 9.3. Packages are built on the cluster for the oldest supported release on a branch. So currently they are built for 9.1. The package does not use the new vm_page_alloc_contig(). So when using the official package on 9.3 you will still run into the panic. This is not a big issue at this point as 9.1 and 9.2 both are EOL in 2 weeks. At that time package building will be switched to 9.3 and a proper package will be created. |