Bug 236616 - emulators/virtualbox-ose: Unable to create a new machine due to "Unexpected exception: cxxrt::bad_alloc [St9bad_alloc]"
Summary: emulators/virtualbox-ose: Unable to create a new machine due to "Unexpected e...
Status: In Progress
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Some People
Assignee: vbox
URL:
Keywords: regression
Depends on:
Blocks:
 
Reported: 2019-03-18 11:41 UTC by Mateusz Piotrowski
Modified: 2019-04-11 12:27 UTC (History)
7 users (show)

See Also:
bugzilla: maintainer-feedback? (vbox)


Attachments
Use type_traits to unbreak runtime issues (2.44 KB, patch)
2019-04-10 01:19 UTC, Jung-uk Kim
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Mateusz Piotrowski freebsd_committer 2019-03-18 11:41:49 UTC
I'm getting the following error when trying to create a new virtual machine. The exact moment I get this error message is when I click "Create" in the "Hard disk" dialog during the creation process of a new machine. The VirtualBox application does not crash: it just does not allow me to create a new machine. Existing machines seem to work fine.

> Failed to create a new virtual machine.
> 
> Unexpected exception: cxxrt::bad_alloc [St9bad_alloc]
> 
> /wrkdirs/usr/ports/emulators/virtualbox-ose/work/VirtualBox-5.2.26/out/freebsd.amd64/release/obj/VBoxAPIWrap/VirtualBoxWrap.cpp[1323] (virtual nsresult VirtualBoxWrap::CreateMachine(CBSTR, CBSTR, PRUint32, CBSTR *, CBSTR, CBSTR, IMachine **)).
> 
> Result Code: NS_ERROR_FAILURE (0x80004005)
> Component: VirtualBoxWrap
> Interface: IVirtualBox {9570b9d5-f1a1-448a-10c5-e12f5285adad}

I'm running  FreeBSD 13.0-CURRENT r345136 GENERIC amd64 with virtualbox-ose-5.2.26_3.

Let me know if I can
Comment 1 Mateusz Piotrowski freebsd_committer 2019-03-18 11:42:22 UTC
Let me know if I can provide any help with debugging.
Comment 2 Mateusz Piotrowski freebsd_committer 2019-03-20 09:58:27 UTC
Here are some additional error messages I get when running "vagrant up" to create a new machine:

> There was an error while executing `VBoxManage`, a CLI used by Vagrant
> for controlling VirtualBox. The command and stderr is shown below.
> 
> Command: ["import", "-n", "/home/0mp/.vagrant.d/boxes/ubuntu-VAGRANTSLASH-bionic64/20190219.0.0/virtualbox/box.ovf"]
> 
> Stderr: 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
> Interpreting /home/0mp/.vagrant.d/boxes/ubuntu-VAGRANTSLASH-bionic64/20190219.0.0/virtualbox/box.ovf...
> OK.
> VBoxManage: error: Output argument aExtraConfigValues points to invalid memory location (0000000000000000)
> VBoxManage: error: Details: code NS_ERROR_INVALID_POINTER (0x80004003), component VirtualSystemDescriptionWrap, interface IVirtualSystemDescription, callee nsISupports
> VBoxManage: error: Context: "GetDescription(ComSafeArrayAsOutParam(retTypes), ComSafeArrayAsOutParam(aRefs), ComSafeArrayAsOutParam(aOvfValues), ComSafeArrayAsOutParam(aVBoxValues), ComSafeArrayAsOutParam(aExtraConfigValues))" at line 387 of file VBoxManageAppliance.cpp

Tested on FreeBSD 13.0-CURRENT r345294 GENERIC amd64, vagrant-2.2.4_1, virtualbox-ose-5.2.26_3.
Comment 3 Vladimir Kondratyev freebsd_committer 2019-03-30 00:38:19 UTC
> Unexpected exception: cxxrt::bad_alloc [St9bad_alloc]

I have got the same error.

Building with clang70 from ports fixed it for me.
Comment 4 Steve Wills freebsd_committer 2019-04-01 17:36:45 UTC
(In reply to Vladimir Kondratyev from comment #3)
Confirmed, building with clang70 from ports fixed it for me as well.
Comment 5 Dimitry Andric freebsd_committer 2019-04-01 17:56:00 UTC
(In reply to Mateusz Piotrowski from comment #1)
> Let me know if I can provide any help with debugging.

Can you try to get a stack trace for the exception?

E.g. by running the thing in gdb, and using "catch throw" to catch the exception first-chance, and when it is hit, run "bt".
Comment 6 Mateusz Piotrowski freebsd_committer 2019-04-02 10:45:59 UTC
(In reply to Dimitry Andric from comment #5)
Well, VirtualBox is not crashing on my machine. Those are the virtual machines inside VirtualBox that are affected.
Comment 7 Dimitry Andric freebsd_committer 2019-04-02 19:21:11 UTC
(In reply to Mateusz Piotrowski from comment #2)
> Here are some additional error messages I get when running "vagrant up" to
> create a new machine:
> 
> > There was an error while executing `VBoxManage`, a CLI used by Vagrant
> > for controlling VirtualBox. The command and stderr is shown below.
> > 
> > Command: ["import", "-n", "/home/0mp/.vagrant.d/boxes/ubuntu-VAGRANTSLASH-bionic64/20190219.0.0/virtualbox/box.ovf"]
> > 
> > Stderr: 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
> > Interpreting /home/0mp/.vagrant.d/boxes/ubuntu-VAGRANTSLASH-bionic64/20190219.0.0/virtualbox/box.ovf...
> > OK.
> > VBoxManage: error: Output argument aExtraConfigValues points to invalid memory location (0000000000000000)
> > VBoxManage: error: Details: code NS_ERROR_INVALID_POINTER (0x80004003), component VirtualSystemDescriptionWrap, interface IVirtualSystemDescription, callee nsISupports
> > VBoxManage: error: Context: "GetDescription(ComSafeArrayAsOutParam(retTypes), ComSafeArrayAsOutParam(aRefs), ComSafeArrayAsOutParam(aOvfValues), ComSafeArrayAsOutParam(aVBoxValues), ComSafeArrayAsOutParam(aExtraConfigValues))" at line 387 of file VBoxManageAppliance.cpp
> 
> Tested on FreeBSD 13.0-CURRENT r345294 GENERIC amd64, vagrant-2.2.4_1,
> virtualbox-ose-5.2.26_3.

I can reproduce these, but I have no clue what causes it. The code is hard to follow due to all the macros and object interfacing... It doesn't throw here, at least, so I don't see any bad_alloc exceptions.
Comment 8 Guido Falsi freebsd_committer 2019-04-07 08:56:14 UTC
Hi,

I'm seeing this too, but with a strange twist.

I have a laptop and a desktop machine both running the same FreeBSD version (13 r345473 at present), I'm using packaged base and both machines use the exact same package set, for both base and ports.

Virtualbox was working fine on both, I am now reinstalling the desktop machine from scratch.

Virtualbox keeps working fine on the laptop, also being able to create new VMs.

On the reinstalled desktop machine instead, launching it from scratch (no configuration here) it fails with the reported error when trying to create a new VM.

This is really strange IMHO, since the two machines are running the exact same binaries.

Could be configuration related, or caused by some dependency?

I'm now going to force the rebuild of the virtualbox packages, just in case.

After this I could force virtualbox to be rebuilt using clang 6 or clang 7.
Comment 9 Guido Falsi freebsd_committer 2019-04-07 09:24:14 UTC
For further information, recovering the old .VirtualBox directory reproduced the old setup, and I'm able to launch and use normally the old VMs, but if I try to create a new one the error persists.
Comment 10 Guido Falsi freebsd_committer 2019-04-07 16:16:36 UTC
I'd also like to confirm that compiling virtualbox with clang/llvm 7.0 makes it work again.
Comment 11 Jung-uk Kim freebsd_committer 2019-04-10 01:19:49 UTC
Created attachment 203549 [details]
Use type_traits to unbreak runtime issues

Can you please try this patch *with* Clang 8, i.e., default compiler?
Comment 12 Guido Falsi freebsd_committer 2019-04-10 17:20:09 UTC
(In reply to Jung-uk Kim from comment #11)
> Created attachment 203549 [details]
> Use type_traits to unbreak runtime issues
> 
> Can you please try this patch *with* Clang 8, i.e., default compiler?

I recompiled applying your patch using the default clang 8 (the system compiler) but I get the same error when trying to create a new VM.
Comment 13 Guido Falsi freebsd_committer 2019-04-10 19:17:15 UTC
(In reply to Guido Falsi from comment #12)
> (In reply to Jung-uk Kim from comment #11)
> > Created attachment 203549 [details]
> > Use type_traits to unbreak runtime issues
> > 
> > Can you please try this patch *with* Clang 8, i.e., default compiler?
> 
> I recompiled applying your patch using the default clang 8 (the system
> compiler) but I get the same error when trying to create a new VM.

Actually now that I'm running with this patched version I'm seeing VMs crashing after some time they run.

Not sure if this is caused by the patch. I'll report back if reverting to virtualbox compiled with clang 7.0 makes the crashes disappear.
Comment 14 commit-hook freebsd_committer 2019-04-10 20:47:51 UTC
A commit references this bug:

Author: jkim
Date: Wed Apr 10 20:47:24 UTC 2019
New revision: 498595
URL: https://svnweb.freebsd.org/changeset/ports/498595

Log:
  Apply a bandaid to work around runtime issues with Clang 8.0.

  PR:		236616

Changes:
  head/emulators/virtualbox-ose/Makefile
Comment 15 Jung-uk Kim freebsd_committer 2019-04-10 20:50:21 UTC
(In reply to Guido Falsi from comment #13)
Okay, sorry for the noise.  It will take some time to figure out what's really going on here.  For now, we're falling back to devel/llvm60 on head.
Comment 16 Guido Falsi freebsd_committer 2019-04-10 21:07:07 UTC
(In reply to Jung-uk Kim from comment #15)
> (In reply to Guido Falsi from comment #13)
> Okay, sorry for the noise.  It will take some time to figure out what's
> really going on here.  For now, we're falling back to devel/llvm60 on head.

Nothing to be sorry about. Thanks for trying to fix it!
Comment 17 Mateusz Piotrowski freebsd_committer 2019-04-11 12:27:14 UTC
(In reply to commit-hook from comment #14)

This change does help. Thanks.