Problems with VirtualBox 5.1.4 in Solaris 11.3 non-global zone

Discussions related to using VirtualBox on Solaris hosts.
Post Reply
vi_sjo
Posts: 3
Joined: 4. Sep 2016, 15:41

Problems with VirtualBox 5.1.4 in Solaris 11.3 non-global zone

Post by vi_sjo »

Hi all

Having some issues running VBoxManage from within a non-global zone. Some background:

Reasonably fresh install of Solaris 11.3 amd64:

Code: Select all

root@wedge:/# uname -a
SunOS wedge 5.11 11.3 i86pc i386 i86pc
Two zones running. Global and one non-global zone:

Code: Select all

root@wedge:/root# zoneadm list -iv
  ID NAME             STATUS      PATH                         BRAND      IP
   0 global           running     /                            solaris    shared
   6 enterprise       running     /tank/zones/enterprise       solaris    excl
And the config for the 'enterprise' zone. You will see there are a few lofs parameters (including a test one for /opt/VirtualBox):

Code: Select all

root@wedge:/root# zonecfg -z enterprise info
zonename: enterprise
zonepath: /tank/zones/enterprise
brand: solaris
autoboot: true
autoshutdown: shutdown
bootargs:
file-mac-profile:
pool:
limitpriv:
scheduling-class:
ip-type: exclusive
hostid:
tenant:
fs-allowed:
fs:
        dir: /virtualmachines
        special: /tank/virtualmachines
        raw not specified
        type: lofs
        options: []
fs:
        dir: /iso
        special: /tank/software/iso
        raw not specified
        type: lofs
        options: []
fs:
        dir: /opt/VirtualBox
        special: /opt/VirtualBox
        raw not specified
        type: lofs
        options: []
anet:
        linkname: net0
        lower-link: auto
        allowed-address not specified
        configure-allowed-address: true
        defrouter not specified
        allowed-dhcp-cids not specified
        link-protection: mac-nospoof
        mac-address: auto
        auto-mac-address: 2:8:20:63:cd:a8
        mac-prefix not specified
        mac-slot not specified
        vlan-id not specified
        priority not specified
        rxrings not specified
        txrings not specified
        mtu not specified
        maxbw not specified
        bwshare not specified
        rxfanout not specified
        vsi-typeid not specified
        vsi-vers not specified
        vsi-mgrid not specified
        etsbw-lcl not specified
        cos not specified
        pkey not specified
        linkmode not specified
        evs not specified
        vport not specified
device:
        match: /dev/vboxdrv
        storage not specified
        allow-partition not specified
        allow-raw-io not specified
device:
        match: /dev/vboxdrvu
        storage not specified
        allow-partition not specified
        allow-raw-io not specified
So got to this point loosely by following the instructions (section 2.4.1)..

However, the docs are a bit confusing..

It states:
The installation must be performed as root and from the global zone as the VirtualBox installer loads kernel drivers which cannot be done from non-global zones.
however then below in the green box
If you are using Solaris Zones, to install VirtualBox only into the current zone and not into any other zone, use pkgadd -G.
On the second note, apparently with pkgadd, the -G option has been deprecated so this doesn't appear supported.

I have installed VirtualBox as per the docs:

Code: Select all

pkgadd -d VirtualBox-5.1.4-SunOS-amd64-r110228.pkg
This has been done in both the global and non-global zone as I couldn't seem to find a way to only install it in the non-global zone.

VBoxManage works fine from the global zone. It does not from the non-global zone, here is an example:

Code: Select all

root@enterprise:/# /opt/VirtualBox/VBoxManage list vms
ld.so.1: VBoxManage: fatal: relocation error: file /opt/VirtualBox/amd64/components/VBoxXPCOMIPCC.so: symbol _ZNSt15_List_node_base7_M_hookEPS_: referenced symbol not found
Killed
There was another library issue before (from within the non-global zone only) which was resolved with:

Code: Select all

crle -64 -u -l /usr/sfw/lib/amd64
crle -u -l /usr/sfw/lib
So now a bit stuck. I don't remember having these issues a couple of years ago with a Solaris 11.0 box I set up in a similar way, but maybe i've forgotten since then.

Can anyone help please with getting this working? Or at least identifying if there is a genuine problem outside of PEBKAC.

Thanks in advance
vi_sjo
Posts: 3
Joined: 4. Sep 2016, 15:41

Re: Problems with VirtualBox 5.1.4 in Solaris 11.3 non-global zone

Post by vi_sjo »

No ideas folks?

Maybe I should log as a bug.
vi_sjo
Posts: 3
Joined: 4. Sep 2016, 15:41

Re: Problems with VirtualBox 5.1.4 in Solaris 11.3 non-global zone

Post by vi_sjo »

Very good.. Oracle promote Virtualbox all over their website and it doesn't even run in a non-global zone properly and with documentation that's more out of date than Windows 98. Well done.

Next steps...

- Remove Solaris
- Upgrade to FreeBSD
martyscholes
Posts: 202
Joined: 11. Sep 2011, 00:24
Primary OS: Solaris
VBox Version: PUEL
Guest OSses: Win 7, Ubuntu, Win XP, Vista, Win 8, Mint, Pear, Several Linux Virtual Appliances

Re: Problems with VirtualBox 5.1.4 in Solaris 11.3 non-global zone

Post by martyscholes »

I am seeing the same thing with VBoxManage 5.1.6 and Solaris 11.3 using Sun Rays.

Code: Select all

bash-4.1$ VBoxManage startvm "MBA W7 x64"
ld.so.1: VBoxManage: fatal: relocation error: file /opt/VirtualBox/amd64/VBoxManage: symbol _ZNSt15_List_node_base7_M_hookEPS_: referenced symbol not found
Killed
Ramshankar
Oracle Corporation
Posts: 793
Joined: 7. Jan 2008, 16:17

Re: Problems with VirtualBox 5.1.4 in Solaris 11.3 non-global zone

Post by Ramshankar »

Does installing system/library/gcc-45-runtime in the zone help (e.g.):

Code: Select all

root@testzone:~#pkg install gcc-45-runtime
If not, could you paste the output of ldd /opt/VirtualBox/amd64/VBoxManage from the zone?
Oracle Corp.
martyscholes
Posts: 202
Joined: 11. Sep 2011, 00:24
Primary OS: Solaris
VBox Version: PUEL
Guest OSses: Win 7, Ubuntu, Win XP, Vista, Win 8, Mint, Pear, Several Linux Virtual Appliances

Re: Problems with VirtualBox 5.1.4 in Solaris 11.3 non-global zone

Post by martyscholes »

In know you asked the other poster, but I am having the same issue in the global zone. Installing gcc-45-runtime did not help.

Code: Select all

bash-4.1$ VBoxManage startvm "MBA W7 x64"
ld.so.1: VBoxManage: fatal: relocation error: file /opt/VirtualBox/amd64/components/VBoxXPCOMIPCC.so: symbol _ZNSt15_List_node_base7_M_hookEPS_: referenced symbol not found
Killed
bash-4.1$ ldd /opt/VirtualBox/amd64/VBoxManage
	VBoxDDU.so =>	 /opt/VirtualBox/amd64/VBoxDDU.so
	VBoxRT.so =>	 /opt/VirtualBox/amd64/VBoxRT.so
	librt.so.1 =>	 /lib/64/librt.so.1
	libthread.so.1 =>	 /lib/64/libthread.so.1
	VBoxXPCOM.so =>	 /opt/VirtualBox/amd64/VBoxXPCOM.so
	libstdc++.so.6 =>	 /usr/sfw/lib/amd64//libstdc++.so.6
	libgcc_s.so.1 =>	 /usr/sfw/lib/amd64//libgcc_s.so.1
	libc.so.1 =>	 /lib/64/libc.so.1
	libkstat.so.1 =>	 /lib/64/libkstat.so.1
	libcontract.so.1 =>	 /lib/64/libcontract.so.1
	libsmbios.so.1 =>	 /usr/lib/64/libsmbios.so.1
	libsocket.so.1 =>	 /lib/64/libsocket.so.1
	libm.so.2 =>	 /lib/64/libm.so.2
	libsendfile.so.1 =>	 /lib/64/libsendfile.so.1
	libnvpair.so.1 =>	 /lib/64/libnvpair.so.1
	libnsl.so.1 =>	 /lib/64/libnsl.so.1
	libmp.so.2 =>	 /lib/64/libmp.so.2
	libucrypto.so.1 =>	 /lib/64/libucrypto.so.1
	libelf.so.1 =>	 /lib/64/libelf.so.1
	libcryptoutil.so.1 =>	 /lib/64/libcryptoutil.so.1
	libz.so.1 =>	 /lib/64/libz.so.1
Ramshankar
Oracle Corporation
Posts: 793
Joined: 7. Jan 2008, 16:17

Re: Problems with VirtualBox 5.1.4 in Solaris 11.3 non-global zone

Post by Ramshankar »

martyscholes wrote:In know you asked the other poster, but I am having the same issue in the global zone. Installing gcc-45-runtime did not help.
The symbol in question "_ZNSt15_List_node_base7_M_hookEPS_" demangled ("std::_List_node_base::_M_hook(std::_List_node_base*)") is in libstdc++.

We switched to using GCC 4.5 with VirtualBox 5.1 (required because of switching to a newer Qt version). In you case, I suspect there is some library path ordering issues that makes your linker look at the incorrect/old libstdc++.so while trying to resolve symbols for VBoxXPCOMIPCC.so.

Output of the following would be useful:

Code: Select all

ls -l /usr/gcc/4.5/lib/amd64/libstdc++.so.6

Code: Select all

nm /usr/sfw/lib/amd64/libstdc++.so.6 | grep _ZNSt15_List_node_base7_M_hookEPS_
Does this work?

Code: Select all

LD_LIBRARY_PATH=/usr/gcc/4.5/lib/amd64/:$LD_LIBRARY_PATH VBoxManage
Oracle Corp.
martyscholes
Posts: 202
Joined: 11. Sep 2011, 00:24
Primary OS: Solaris
VBox Version: PUEL
Guest OSses: Win 7, Ubuntu, Win XP, Vista, Win 8, Mint, Pear, Several Linux Virtual Appliances

Re: Problems with VirtualBox 5.1.4 in Solaris 11.3 non-global zone

Post by martyscholes »

Thanks for the help and apologies for the delay in responding. Here is the result of the commands.

Code: Select all

bash-4.1$ ls -l /usr/gcc/4.5/lib/amd64/libstdc++.so.6
lrwxrwxrwx   1 root     root          19 Sep 29 14:05 /usr/gcc/4.5/lib/amd64/libstdc++.so.6 -> libstdc++.so.6.0.14*
bash-4.1$ nm /usr/sfw/lib/amd64/libstdc++.so.6 | grep _ZNSt15_List_node_base7_M_hookEPS_
bash-4.1$ 
The LD_LIBRARY_PATH option worked. Thank you. This upgrade has been rather painful for me. You didn't ask, but let me share here some of the issues I have seen, so at least they are written down somewhere. If I should log them somewhere else (or just keep this stuff to myself), please let me know.

Issues thus far with VB 5.1.6 on Sunray on Solaris 11.3
  • This issue here with the libraries causing VBoxManage to fail sometimes
  • Fullscreen only works for the first head (ticket 15993 filed)
  • Dual head windowed on boot only instantiates first head correctly; second head is black. Toggling to full screen and back stacks all head windows on first physical head, but fixes the problem.
  • Error message in GUI says that VRAM must be at least 138 MB, but GUI only allows 128 MB. Command line can set VRAM to 256 MB
  • Audio does not work at all. If default Intel HD audio is chosen, VM will abort during boot. If any other type is chosen, Windows claims that no audio device was found. This might be because Solaris Audio host driver is no longer available, and Sun Ray does not support OSS.
michaln
Oracle Corporation
Posts: 2973
Joined: 19. Dec 2007, 15:45
Primary OS: MS Windows 7
VBox Version: PUEL
Guest OSses: Any and all
Contact:

Re: Problems with VirtualBox 5.1.4 in Solaris 11.3 non-global zone

Post by michaln »

Please add to or open tickets for the bugs, especially any crashes. Just listing it here will do nothing.

Some of the problems are caused by switching to Qt5, which unfortunately was extra painful on Solaris due to an attempt to keep supporting Solaris 10 hosts.

Re audio, if you look around the forum, you'll see that there are "problems" with it in VirtualBox 5.1. But again it's extra troublesome on Solaris for obvious reasons.
jimklimov
Posts: 83
Joined: 7. Jul 2009, 08:28
Primary OS: OpenSolaris other
VBox Version: PUEL
Guest OSses: Linux, OSOL, Windows

Re: Problems with VirtualBox 5.1.4 in Solaris 11.3 non-global zone

Post by jimklimov »

Thanks a lot for this discussion guys, I hit this problem too (though with different versions and mangled symbol names, mine looked for

Code: Select all

_ZNSt8__detail15_List_node_base7_M_hookEPS0_
but the culprit was the same:

Code: Select all

# ldd /opt/VirtualBox/amd64/VBoxManage | grep stdc
        libstdc++.so.6 =>        /usr/sfw/lib/amd64/libstdc++.so.6
        libstdc++.so.6 (GLIBCXX_3.4.21) =>       (version not found)
        libstdc++.so.6 (CXXABI_1.3) =>   (version not found)
        libstdc++.so.6 (CXXABI_1.3) =>   (version not found)
        libstdc++.so.6 (GLIBCXX_3.4.15) =>       (version not found)
        libstdc++.so.6 (CXXABI_1.3.9) =>         (version not found)
        libstdc++.so.6 (GLIBCXX_3.4) =>  (version not found)
        libstdc++.so.6 (CXXABI_1.3) =>   (version not found)
In my case, this path was preferred by a shell profile as well as crle settings.
Post Reply