[Pkg-virtualbox-commits] [virtualbox] 01/02: Imported Upstream version 5.1.18-dfsg

Gianfranco Costamagna locutusofborg at moszumanska.debian.org
Wed Mar 15 23:04:53 UTC 2017


This is an automated email from the git hooks/post-receive script.

locutusofborg pushed a commit to branch master
in repository virtualbox.

commit 10f9063a0d557d6aa90dca3981cfec3798991b91
Author: Gianfranco Costamagna <costamagnagianfranco at yahoo.it>
Date:   Wed Mar 15 23:55:30 2017 +0100

    Imported Upstream version 5.1.18-dfsg
---
 Config.kmk                                         |   4 +-
 doc/manual/en_US/user_BasicConcepts.xml            |  72 +++++---
 doc/manual/user_ChangeLogImpl.xml                  |  44 +++++
 include/VBox/err.h                                 |   5 +-
 include/VBox/vmm/cpum.h                            |   4 +
 src/VBox/Additions/linux/Makefile                  |   7 +-
 src/VBox/Additions/linux/drm/Makefile.module.kms   |   4 +
 src/VBox/Devices/EFI/FirmwareBin/VBoxEFI32.fd      | Bin 2097152 -> 2097152 bytes
 src/VBox/Devices/EFI/FirmwareBin/VBoxEFI64.fd      | Bin 2097152 -> 2097152 bytes
 .../Graphics/BIOS/VBoxVgaBiosAlternative286.asm    |   6 +-
 .../Graphics/BIOS/VBoxVgaBiosAlternative286.md5sum |   2 +-
 .../Graphics/BIOS/VBoxVgaBiosAlternative386.asm    |   6 +-
 .../Graphics/BIOS/VBoxVgaBiosAlternative386.md5sum |   2 +-
 .../Graphics/BIOS/VBoxVgaBiosAlternative8086.asm   |   6 +-
 .../BIOS/VBoxVgaBiosAlternative8086.md5sum         |   2 +-
 .../Devices/PC/BIOS/VBoxBiosAlternative286.asm     |   4 +-
 .../Devices/PC/BIOS/VBoxBiosAlternative286.md5sum  |   2 +-
 .../Devices/PC/BIOS/VBoxBiosAlternative386.asm     |   4 +-
 .../Devices/PC/BIOS/VBoxBiosAlternative386.md5sum  |   2 +-
 .../Devices/PC/BIOS/VBoxBiosAlternative8086.asm    |   4 +-
 .../Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum |   2 +-
 src/VBox/Frontends/VBoxBugReport/VBoxBugReport.cpp |   4 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_el.ts |  22 +--
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_es.ts |  70 ++++----
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_it.ts |   6 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_nl.ts |   6 +-
 .../Frontends/VirtualBox/nls/VirtualBox_pt_BR.ts   |   6 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_sl.ts |  24 +--
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts |   6 +-
 .../Frontends/VirtualBox/nls/VirtualBox_zh_CN.ts   |  70 ++++----
 .../Frontends/VirtualBox/nls/VirtualBox_zh_TW.ts   | 148 ++++++++--------
 src/VBox/Frontends/VirtualBox/nls/qt_el.ts         |   2 +-
 src/VBox/Frontends/VirtualBox/nls/qt_zh_TW.ts      |  22 +--
 src/VBox/GuestHost/OpenGL/spu_loader/spuload.c     |   6 +
 src/VBox/GuestHost/OpenGL/util/dll.c               |   2 +
 src/VBox/HostDrivers/linux/Makefile                |   6 +-
 src/VBox/HostServices/SharedFolders/Makefile.kmk   |   1 +
 src/VBox/HostServices/SharedFolders/mappings.cpp   |  22 +--
 .../SharedFolders/testcase/Makefile.kmk            |   1 +
 .../testcase/tstSharedFolderService.cpp            | 196 +++++++++++++++++----
 .../testcase/tstSharedFolderService.h              |   1 +
 src/VBox/HostServices/SharedFolders/vbsf.cpp       |  13 +-
 src/VBox/HostServices/SharedFolders/vbsfpath.cpp   |   7 +-
 src/VBox/HostServices/SharedFolders/vbsfpath.h     |  14 ++
 .../HostServices/SharedFolders/vbsfpathabs.cpp     | 178 +++++++++++++++++++
 src/VBox/Installer/linux/vboxautostart-service.sh  |   2 +-
 src/VBox/Main/include/PCIDeviceAttachmentImpl.h    |   2 +-
 src/VBox/Main/src-all/PCIDeviceAttachmentImpl.cpp  |  18 +-
 src/VBox/Main/src-client/ConsoleImpl2.cpp          |   8 +-
 src/VBox/Main/src-server/MediumAttachmentImpl.cpp  |   1 -
 src/VBox/Main/src-server/SnapshotImpl.cpp          |  90 +++++++---
 src/VBox/VMM/VMMR3/CPUMR3CpuId.cpp                 |   6 +-
 src/VBox/VMM/VMMR3/PGMSavedState.cpp               |  16 +-
 .../xpcom18a4/nsprpub/pr/src/pthreads/ptthread.c   |   9 +-
 54 files changed, 806 insertions(+), 361 deletions(-)

diff --git a/Config.kmk b/Config.kmk
index dc0d971..170967c 100644
--- a/Config.kmk
+++ b/Config.kmk
@@ -208,7 +208,7 @@ VBOX_VERSION_MINOR = 1
 # This is the current build number. It should be increased every time we publish a
 # new build. The define is available in every source file. Only even build numbers
 # will be published, odd numbers are set during development.
-VBOX_VERSION_BUILD = 16
+VBOX_VERSION_BUILD = 18
 # The raw version string. This *must not* contain any other information/fields than
 # major, minor and build revision (as it is now) -- also will be used for host/guest version
 # comparison.
@@ -6946,7 +6946,7 @@ endif
 SVN                    ?= svn$(HOSTSUFF_EXE)
 VBOX_SVN_REV_KMK        = $(PATH_OUT)/revision.kmk
 ifndef VBOX_SVN_REV
- VBOX_SVN_REV_FALLBACK := $(patsubst %:,,  $Rev: 113841 $  )
+ VBOX_SVN_REV_FALLBACK := $(patsubst %:,,  $Rev: 114002 $  )
  VBOX_SVN_DEP          := $(firstword $(wildcard $(PATH_ROOT)/.svn/wc.db $(abspath $(PATH_ROOT)/../.svn/wc.db) $(abspath $(PATH_ROOT)/../../.svn/wc.db) $(PATH_ROOT)/.svn/entries))
  ifeq ($(which $(SVN)),)
   VBOX_SVN_DEP         :=
diff --git a/doc/manual/en_US/user_BasicConcepts.xml b/doc/manual/en_US/user_BasicConcepts.xml
index b0212f2..0c49aa9 100644
--- a/doc/manual/en_US/user_BasicConcepts.xml
+++ b/doc/manual/en_US/user_BasicConcepts.xml
@@ -40,7 +40,7 @@
 
         <glossentry>
           <glossterm>Windows 2000 / XP / Server 2003 / Vista / Server 2008 /
-            Windows 7 / Windows 8 / Windows 8.1 / Windows 10 RTM 10240 / Server 2012</glossterm>
+            7 / 8 / 8.1 / 10 RTM 10240 / Server 2012</glossterm>
 
           <glossdef>
             <para>All versions, editions and service packs are fully supported
@@ -431,29 +431,6 @@
             </glossdef>
           </glossentry>
 
-          <glossentry>
-            <glossterm>Removable Media</glossterm>
-            <glossdef>
-              <para>If this is checked, VirtualBox will save the state of what
-              media has been mounted between several runs of a virtual machine.</para>
-            </glossdef>
-          </glossentry>
-
-          <glossentry>
-            <glossterm>Mini ToolBar</glossterm>
-            <glossdef>
-              <para>In full screen or seamless mode, VirtualBox can display a
-              small toolbar that contains some of the items that are normally
-              available from the virtual machine's menu bar. This toolbar
-              reduces itself to a small gray line unless you move the mouse
-              over it. With the toolbar, you can return from full screen or
-              seamless mode, control machine execution or enable certain
-              devices. If you don't want to see the toolbar, disable this
-              setting.</para>
-              <para>The second setting allows to show the toolbar at the top
-              of the screen instead of showing it at the bottom.</para>
-            </glossdef>
-          </glossentry>
         </glosslist></para>
     </sect2>
 
@@ -1387,6 +1364,53 @@
     <xref linkend="sharedfolders" />.</para>
   </sect1>
 
+  <sect1>
+    <title>User Interface</title>
+
+    <para>The "User Interface" section allows you to change certain aspects of
+      the user interface of this VM.</para>
+      
+    <para><glosslist>
+      <glossentry>
+        <glossterm>Menu Bar</glossterm>
+        <glossdef>
+          <para>This widget allows you to disable certain menus (click at
+            the menu to release it), certain menu entries (uncheck the
+            checkbox of the entry to disable it) and the complete menu bar
+            (uncheck the rightmost checkbox).
+          </para>
+        </glossdef>
+      </glossentry>
+
+      <glossentry>
+        <glossterm>Mini ToolBar</glossterm>
+        <glossdef>
+          <para>In full screen or seamless mode, VirtualBox can display a
+          small toolbar that contains some of the items that are normally
+          available from the virtual machine's menu bar. This toolbar
+          reduces itself to a small gray line unless you move the mouse
+          over it. With the toolbar, you can return from full screen or
+          seamless mode, control machine execution or enable certain
+          devices. If you don't want to see the toolbar, disable this
+          setting.</para>
+          <para>The second setting allows to show the toolbar at the top
+          of the screen instead of showing it at the bottom.</para>
+        </glossdef>
+      </glossentry>
+
+      <glossentry>
+        <glossterm>Status Bar</glossterm>
+        <glossdef>
+          <para>This widget allows you to disable certain icons of the
+          status bar (uncheck the checkbox of an icon to disable it),
+          to re-arrange icons (drag and drop the icon) and to disable the
+          complete status bar (uncheck the leftmost checkbox).</para>
+        </glossdef>
+      </glossentry>
+    </glosslist></para>
+
+  </sect1>
+
   <sect1 id="efi">
     <title>Alternative firmware (EFI)</title>
 
diff --git a/doc/manual/user_ChangeLogImpl.xml b/doc/manual/user_ChangeLogImpl.xml
index e2c71f7..1bd377a 100644
--- a/doc/manual/user_ChangeLogImpl.xml
+++ b/doc/manual/user_ChangeLogImpl.xml
@@ -3,6 +3,50 @@
 <chapter> <!-- HACK ALERT! Seems we must have a single top level element for xi:include to work.
                            So, we use chapter and xpointer="xpointer(/chapter/)" with xi:include. -->
   <sect1>
+    <title>Version 5.1.18 (2017-08-15)</title>
+
+    <para>This is a maintenance release. The following items were fixed and/or
+      added:</para>
+
+    <itemizedlist>
+
+      <listitem>
+        <para>Shared Folders: fixed case insensitive filename access
+          (5.1.16 regression; Windows guests only; bug #16549)</para>
+      </listitem>
+
+      <listitem>
+        <para>Shared Folders: fixed access to long pathes
+          (5.1.16 regression; Windows guests only; bugs #14651, #16564)</para>
+      </listitem>
+
+      <listitem>
+        <para>API: fixed snapshot handling of medium attachments and PCI device
+          attachments (bug #16545)</para>
+      </listitem>
+
+      <listitem>
+        <para>API: make 32-bit Windows guests in raw mode boot again if the
+          ICH9 chipset is used (5.1.16 regression)</para>
+      </listitem>
+
+      <listitem>
+        <para>VBoxBugReport: fixed VM log collection issue</para>
+      </listitem>
+
+      <listitem>
+        <para>Linux hosts: fixed autostart service script (bug #14955)</para>
+      </listitem>
+
+      <listitem>
+        <para>Windows Additions: fixed automatic logins for Windows Vista and
+          newer (5.1.4 regression; bug #15904)</para>
+      </listitem>
+
+    </itemizedlist>
+  </sect1>
+
+  <sect1>
     <title>Version 5.1.16 (2017-03-08)</title>
 
     <para>This is a maintenance release. The following items were fixed and/or
diff --git a/include/VBox/err.h b/include/VBox/err.h
index 4638902..03b24f2 100644
--- a/include/VBox/err.h
+++ b/include/VBox/err.h
@@ -3,7 +3,7 @@
  */
 
 /*
- * Copyright (C) 2006-2016 Oracle Corporation
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
@@ -2759,6 +2759,9 @@
 #define VERR_AUDIO_NO_FREE_OUTPUT_STREAMS           (-6602)
 /** Pending stream disable operation in progress.  */
 #define VERR_AUDIO_STREAM_PENDING_DISABLE           (-6603)
+/** There is more data available.
+ *  This can happen due to a buffer wraparound of a buffer read/write operation. */
+#define VINF_AUDIO_MORE_DATA_AVAILABLE              (6604)
 /** @} */
 
 
diff --git a/include/VBox/vmm/cpum.h b/include/VBox/vmm/cpum.h
index 0aa622b..2892dd9 100644
--- a/include/VBox/vmm/cpum.h
+++ b/include/VBox/vmm/cpum.h
@@ -206,6 +206,10 @@ typedef enum CPUMMICROARCH
     kCpumMicroarch_AMD_16h_First,
     kCpumMicroarch_AMD_16h_End,
 
+    kCpumMicroarch_AMD_Zen_First,
+    kCpumMicroarch_AMD_Zen_Ryzen = kCpumMicroarch_AMD_Zen_First,
+    kCpumMicroarch_AMD_Zen_End,
+
     kCpumMicroarch_AMD_Unknown,
     kCpumMicroarch_AMD_End,
 
diff --git a/src/VBox/Additions/linux/Makefile b/src/VBox/Additions/linux/Makefile
index bca90d6..1b48201 100644
--- a/src/VBox/Additions/linux/Makefile
+++ b/src/VBox/Additions/linux/Makefile
@@ -40,7 +40,7 @@ all:
 	        cp vboxguest/Module.symvers vboxsf; \
 	    fi; \
 	    echo "*** Building 'vboxsf' module ***"; \
-	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxsf; \
+	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxsf || exit 1; \
 	    if [ -f vboxsf/vboxsf.ko ]; then \
 	        cp vboxsf/vboxsf.ko .; \
 	    else \
@@ -53,10 +53,11 @@ all:
 	        cp vboxguest/Module.symvers vboxvideo; \
 	    fi; \
 	    echo "*** Building 'vboxvideo' module ***"; \
-	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxvideo; \
+	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxvideo || \
+	      (echo; echo "Building of vboxvideo failed, ignoring!"; echo); \
 	    if [ -f vboxvideo/vboxvideo.ko ]; then \
 	        cp vboxvideo/vboxvideo.ko .; \
-	    else \
+	    elif [ -f vboxvideo/vboxvideo.o ]; then \
 	        cp vboxvideo/vboxvideo.o .; \
 	    fi; \
 	    echo; \
diff --git a/src/VBox/Additions/linux/drm/Makefile.module.kms b/src/VBox/Additions/linux/drm/Makefile.module.kms
index bd38d0b..3e11ed4 100644
--- a/src/VBox/Additions/linux/drm/Makefile.module.kms
+++ b/src/VBox/Additions/linux/drm/Makefile.module.kms
@@ -28,6 +28,10 @@ ifeq ($(MY_KERNELRELEASE),)
   # as of 2.6.16 KERNELRELEASE is only set if the kernel is configured
   MY_KERNELRELEASE := $(KERNELVERSION)
 endif
+ifeq ($(KERN_VERSION),24)
+  # sledgehammer, see the 2.4 handling in Makefile.include.footer
+  MY_KERNELRELEASE := 2.4.0
+endif
 ifeq ($(filter 1.% 2.% 3.0.% 3.1.% 3.2.% 3.3.% 3.4.% 3.5.% 3.6.% 3.7.% \
 3.8.% 3.9.% 3.10.%,$(MY_KERNELRELEASE)),)
 MOD_OBJS   = HGSMIBase.o HGSMICommon.o HGSMIMemAlloc.o heapoffset.o \
diff --git a/src/VBox/Devices/EFI/FirmwareBin/VBoxEFI32.fd b/src/VBox/Devices/EFI/FirmwareBin/VBoxEFI32.fd
index 4c48f16..c643628 100644
Binary files a/src/VBox/Devices/EFI/FirmwareBin/VBoxEFI32.fd and b/src/VBox/Devices/EFI/FirmwareBin/VBoxEFI32.fd differ
diff --git a/src/VBox/Devices/EFI/FirmwareBin/VBoxEFI64.fd b/src/VBox/Devices/EFI/FirmwareBin/VBoxEFI64.fd
index 6761f5f..de9114e 100644
Binary files a/src/VBox/Devices/EFI/FirmwareBin/VBoxEFI64.fd and b/src/VBox/Devices/EFI/FirmwareBin/VBoxEFI64.fd differ
diff --git a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.asm b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.asm
index d5909a4..3e9206a 100644
--- a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.asm
+++ b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.asm
@@ -7293,7 +7293,7 @@ vesa_pm_end:                                 ; 0xc4514 LB 0x1
 
 section _DATA progbits vstart=0x4600 align=1 ; size=0x371f class=DATA group=DGROUP
 _msg_vga_init:                               ; 0xc4600 LB 0x2f
-    db  'Oracle VM VirtualBox Version 5.1.16 VGA BIOS', 00dh, 00ah, 000h
+    db  'Oracle VM VirtualBox Version 5.1.18 VGA BIOS', 00dh, 00ah, 000h
 _vga_modes:                                  ; 0xc462f LB 0x80
     db  000h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 001h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
     db  002h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 003h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
@@ -8188,7 +8188,7 @@ _vbebios_vendor_name:                        ; 0xc7c73 LB 0x13
 _vbebios_product_name:                       ; 0xc7c86 LB 0x21
     db  'Oracle VM VirtualBox VBE Adapter', 000h
 _vbebios_product_revision:                   ; 0xc7ca7 LB 0x24
-    db  'Oracle VM VirtualBox Version 5.1.16', 000h
+    db  'Oracle VM VirtualBox Version 5.1.18', 000h
 _vbebios_info_string:                        ; 0xc7ccb LB 0x2b
     db  'VirtualBox VBE Display Adapter enabled', 00dh, 00ah, 00dh, 00ah, 000h
 _no_vbebios_info_string:                     ; 0xc7cf6 LB 0x29
@@ -8247,4 +8247,4 @@ section CONST2 progbits vstart=0x7d20 align=1 ; size=0x0 class=DATA group=DGROUP
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0bch
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0b8h
diff --git a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.md5sum b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.md5sum
index 61c3082..18d67ca 100644
--- a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.md5sum
+++ b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.md5sum
@@ -1 +1 @@
-cb5fd4c3a5a780d2448db9f4fe7e5300 *VBoxVgaBios286.rom
+381e9097e4f33ebdc5c76bcf9fb4796f *VBoxVgaBios286.rom
diff --git a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.asm b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.asm
index af03e64..114a4f6 100644
--- a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.asm
+++ b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.asm
@@ -6769,7 +6769,7 @@ vesa_pm_end:                                 ; 0xc4514 LB 0x1
 
 section _DATA progbits vstart=0x4600 align=1 ; size=0x371f class=DATA group=DGROUP
 _msg_vga_init:                               ; 0xc4600 LB 0x2f
-    db  'Oracle VM VirtualBox Version 5.1.16 VGA BIOS', 00dh, 00ah, 000h
+    db  'Oracle VM VirtualBox Version 5.1.18 VGA BIOS', 00dh, 00ah, 000h
 _vga_modes:                                  ; 0xc462f LB 0x80
     db  000h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 001h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
     db  002h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 003h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
@@ -7664,7 +7664,7 @@ _vbebios_vendor_name:                        ; 0xc7c73 LB 0x13
 _vbebios_product_name:                       ; 0xc7c86 LB 0x21
     db  'Oracle VM VirtualBox VBE Adapter', 000h
 _vbebios_product_revision:                   ; 0xc7ca7 LB 0x24
-    db  'Oracle VM VirtualBox Version 5.1.16', 000h
+    db  'Oracle VM VirtualBox Version 5.1.18', 000h
 _vbebios_info_string:                        ; 0xc7ccb LB 0x2b
     db  'VirtualBox VBE Display Adapter enabled', 00dh, 00ah, 00dh, 00ah, 000h
 _no_vbebios_info_string:                     ; 0xc7cf6 LB 0x29
@@ -7723,4 +7723,4 @@ section CONST2 progbits vstart=0x7d20 align=1 ; size=0x0 class=DATA group=DGROUP
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0b1h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0adh
diff --git a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.md5sum b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.md5sum
index 17e17a1..eb440bc 100644
--- a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.md5sum
+++ b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.md5sum
@@ -1 +1 @@
-f6f800a57b52a323c27ef04dcfdb7468 *VBoxVgaBios386.rom
+58093bf4dfd0d52e2c02b45f672f2740 *VBoxVgaBios386.rom
diff --git a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.asm b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.asm
index 8ba6508..a59be2d 100644
--- a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.asm
+++ b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.asm
@@ -7434,7 +7434,7 @@ vesa_pm_end:                                 ; 0xc4514 LB 0x1
 
 section _DATA progbits vstart=0x4600 align=1 ; size=0x371f class=DATA group=DGROUP
 _msg_vga_init:                               ; 0xc4600 LB 0x2f
-    db  'Oracle VM VirtualBox Version 5.1.16 VGA BIOS', 00dh, 00ah, 000h
+    db  'Oracle VM VirtualBox Version 5.1.18 VGA BIOS', 00dh, 00ah, 000h
 _vga_modes:                                  ; 0xc462f LB 0x80
     db  000h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 001h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
     db  002h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 003h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
@@ -8329,7 +8329,7 @@ _vbebios_vendor_name:                        ; 0xc7c73 LB 0x13
 _vbebios_product_name:                       ; 0xc7c86 LB 0x21
     db  'Oracle VM VirtualBox VBE Adapter', 000h
 _vbebios_product_revision:                   ; 0xc7ca7 LB 0x24
-    db  'Oracle VM VirtualBox Version 5.1.16', 000h
+    db  'Oracle VM VirtualBox Version 5.1.18', 000h
 _vbebios_info_string:                        ; 0xc7ccb LB 0x2b
     db  'VirtualBox VBE Display Adapter enabled', 00dh, 00ah, 00dh, 00ah, 000h
 _no_vbebios_info_string:                     ; 0xc7cf6 LB 0x29
@@ -8388,4 +8388,4 @@ section CONST2 progbits vstart=0x7d20 align=1 ; size=0x0 class=DATA group=DGROUP
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 043h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 03fh
diff --git a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.md5sum b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.md5sum
index 0d678c2..c80b897 100644
--- a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.md5sum
+++ b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.md5sum
@@ -1 +1 @@
-13123527ba806b6216dcbd3b4b435c1e *VBoxVgaBios8086.rom
+6225bcbe6028512d2b3fafa70b43ba73 *VBoxVgaBios8086.rom
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm
index b165223..61bf1da 100644
--- a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm
@@ -1115,7 +1115,7 @@ section CONST progbits vstart=0xb0 align=1 ; size=0xcde class=DATA group=DGROUP
 
 section CONST2 progbits vstart=0xd8e align=1 ; size=0x3fa class=DATA group=DGROUP
 _bios_cvs_version_string:                    ; 0xf0d8e LB 0x12
-    db  'VirtualBox 5.1.16', 000h
+    db  'VirtualBox 5.1.18', 000h
 _bios_prefix_string:                         ; 0xf0da0 LB 0x8
     db  'BIOS: ', 000h, 000h
 _isotag:                                     ; 0xf0da8 LB 0x6
@@ -17798,4 +17798,4 @@ biosorg_check_before_or_at_0FFEEh:           ; 0xfff80 LB 0x70
     db  'XM'
 cpu_reset:                                   ; 0xffff0 LB 0x10
     jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
-    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 054h
+    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 052h
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum
index 76beb62..fb7a88c 100644
--- a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum
@@ -1 +1 @@
-ddf193883558a1ce6db9d4b6f655fb48 *VBoxPcBios286.rom
+17a97e90f25f11a082402a88853ab611 *VBoxPcBios286.rom
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm
index 84da474..b6ecebe 100644
--- a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm
@@ -1078,7 +1078,7 @@ section CONST progbits vstart=0xb0 align=1 ; size=0xcde class=DATA group=DGROUP
 
 section CONST2 progbits vstart=0xd8e align=1 ; size=0x3fa class=DATA group=DGROUP
 _bios_cvs_version_string:                    ; 0xf0d8e LB 0x12
-    db  'VirtualBox 5.1.16', 000h
+    db  'VirtualBox 5.1.18', 000h
 _bios_prefix_string:                         ; 0xf0da0 LB 0x8
     db  'BIOS: ', 000h, 000h
 _isotag:                                     ; 0xf0da8 LB 0x6
@@ -17197,4 +17197,4 @@ biosorg_check_before_or_at_0FFEEh:           ; 0xfff80 LB 0x70
     db  'XM'
 cpu_reset:                                   ; 0xffff0 LB 0x10
     jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
-    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 0e5h
+    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 0e3h
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum
index 76d860c..4d8a861 100644
--- a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum
@@ -1 +1 @@
-96f77f81e0b36fc998c855cb73084c7a *VBoxPcBios386.rom
+d0e34c273675aac6c06fb51c5ba89f19 *VBoxPcBios386.rom
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm
index 0d32107..3ad29a0 100644
--- a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm
@@ -1115,7 +1115,7 @@ section CONST progbits vstart=0xb0 align=1 ; size=0xcde class=DATA group=DGROUP
 
 section CONST2 progbits vstart=0xd8e align=1 ; size=0x3fa class=DATA group=DGROUP
 _bios_cvs_version_string:                    ; 0xf0d8e LB 0x12
-    db  'VirtualBox 5.1.16', 000h
+    db  'VirtualBox 5.1.18', 000h
 _bios_prefix_string:                         ; 0xf0da0 LB 0x8
     db  'BIOS: ', 000h, 000h
 _isotag:                                     ; 0xf0da8 LB 0x6
@@ -18273,4 +18273,4 @@ biosorg_check_before_or_at_0FFEEh:           ; 0xfff80 LB 0x70
     db  'XM'
 cpu_reset:                                   ; 0xffff0 LB 0x10
     jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
-    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fbh, 002h
+    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fbh, 000h
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum
index 707677c..3950c49 100644
--- a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum
@@ -1 +1 @@
-dbb72c2d4a81e99b8a2c44a67fa3ffc5 *VBoxPcBios8086.rom
+719e2f876a8ed51416c2a2c2f9cc9d38 *VBoxPcBios8086.rom
diff --git a/src/VBox/Frontends/VBoxBugReport/VBoxBugReport.cpp b/src/VBox/Frontends/VBoxBugReport/VBoxBugReport.cpp
index 0f3a2f3..26c754c 100644
--- a/src/VBox/Frontends/VBoxBugReport/VBoxBugReport.cpp
+++ b/src/VBox/Frontends/VBoxBugReport/VBoxBugReport.cpp
@@ -632,12 +632,12 @@ void createBugReport(BugReport* report, const char *pszHome, MachineInfoList& ma
     for (MachineInfoList::iterator it = machines.begin(); it != machines.end(); ++it)
     {
         VBRDir VmDir(PathJoin((*it)->getLogPath(), "VBox.log*"));
-        const char *pcszVmLogFile = HomeDir.next();
+        const char *pcszVmLogFile = VmDir.next();
         while (pcszVmLogFile)
         {
             report->addItem(new BugReportFile(PathJoin((*it)->getLogPath(), pcszVmLogFile),
                                               PathJoin((*it)->getName(), pcszVmLogFile)));
-            pcszVmLogFile = HomeDir.next();
+            pcszVmLogFile = VmDir.next();
         }
         report->addItem(new BugReportFile((*it)->getSettingsFile(),
                                          PathJoin((*it)->getName(), RTPathFilename((*it)->getSettingsFile()))));
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_el.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_el.ts
index 5b677bb..3c8b4f2 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_el.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_el.ts
@@ -6,7 +6,7 @@
     <message>
         <source>English</source>
         <comment>Native language name</comment>
-        <translatorcomment>2016-11-10</translatorcomment>
+        <translatorcomment>2017-03-13</translatorcomment>
         <translation>Ελληνικά</translation>
     </message>
     <message>
@@ -1220,7 +1220,7 @@
     </message>
     <message>
         <source>Verifying %1...</source>
-        <translation type="unfinished"></translation>
+        <translation>Επιβεβαιώνεται %1...</translation>
     </message>
 </context>
 <context>
@@ -5163,7 +5163,7 @@
     </message>
     <message>
         <source><p>The Virtual Machine reports that the guest OS supports <b>mouse pointer integration</b>. This means that you do not need to <i>capture</i> the mouse pointer to be able to use it in your guest OS -- all mouse actions you perform when the mouse pointer is over the Virtual Machine's display are directly sent to the guest OS. If the mouse is currently captured, it will be automatically uncaptured.</p><p>The mouse icon on the s [...]
-        <translation><p>Η Εικονική Μηχανή αναφέρει οτι το λειτουργικό του επισκέπτη υποστηρίζει <b>ενσωμάτωση δείκτη ποντικιού</b>. Αυτό σημαίνει οτι δεν χρειάζεται να <i>δεσμεύσετε</i> τον δείκτη ποντικιού για να μπορέσετε να το χρησιμοποιήσετε στο λειτουργικό του επισκέπτη - όλες οι ενέργειες που πραγματοποιείται όταν ο δείκτης ποντικιού είναι πάνω από την οθόνη της Εικονικής Μηχανής στέλνονται κατευθείαν στο λειτουργικό του επισκέπτη. Αν το ποντίκι είναι  [...]
+        <translation><p>Η Εικονική Μηχανή αναφέρει οτι το λειτουργικό του επισκέπτη υποστηρίζει <b>ενσωμάτωση δείκτη ποντικιού</b>. Αυτό σημαίνει οτι δεν χρειάζεται να <i>δεσμεύσετε</i> τον δείκτη ποντικιού για να μπορέσετε να το χρησιμοποιήσετε στο λειτουργικό του επισκέπτη - όλες οι ενέργειες που πραγματοποιούνται όταν ο δείκτης ποντικιού είναι πάνω από την οθόνη της Εικονικής Μηχανής στέλνονται κατευθείαν στο λειτουργικό του επισκέπτη. Αν το ποντίκι είναι [...]
     </message>
     <message>
         <source>Release</source>
@@ -5500,7 +5500,7 @@
     </message>
     <message>
         <source><p>The <b><nobr>%1</nobr></b> has been successfully downloaded from <nobr><a href="%2">%2</a></nobr> and saved locally as <nobr><b>%3</b>.</nobr></p><p>Do you wish to install this extension pack?</p></source>
-        <translation><p>Το <b><nobr>%1</nobr></b> κατέβηκε επιτυχώς από <nobr><a href="%2">%2</a></nobr> και σώθηκε τοπικά ως <nobr><b>%3</b>.</nobr></p><p>Θέλετε να εγκαταστήσετε το πακέτο επέκτρασης;</p></translation>
+        <translation><p>Το <b><nobr>%1</nobr></b> κατέβηκε επιτυχώς από <nobr><a href="%2">%2</a></nobr> και αποθηκεύτηκε τοπικά ως <nobr><b>%3</b>.</nobr></p><p>Θέλετε να εγκαταστήσετε το πακέτο επέκτρασης;</p></translation>
     </message>
     <message>
         <source>Install</source>
@@ -5623,7 +5623,7 @@
     </message>
     <message>
         <source>Ignore</source>
-        <translation>Αγνόησε</translation>
+        <translation>Αγνοήστε</translation>
     </message>
     <message>
         <source>Failed to create NAT network.</source>
@@ -5745,7 +5745,7 @@
     </message>
     <message>
         <source><p>The <b>VirtualBox Guest Additions</b> disk image file has been successfully downloaded from <nobr><a href="%1">%1</a></nobr> but can't be saved locally as <nobr><b>%2</b>.</nobr></p><p>Please choose another location for that file.</p></source>
-        <translation><p>Το αρχείο εικόνας δίσκου <b>Προσθήκες Επισκέπτη του VirtualBox</b> κατέβηκε επιτυχώς από <nobr><a href="%1">%1</a></nobr> αλλά δεν μπορεί να αποθηκευθεί τοπικά ως <nobr><b>%2</b>.</nobr></p><p>Παρακαλώ επιλέξτε μία άλλη τοποθεσία για αυτό το αρχείο.</p></translation>
+        <translation><p>Το αρχείο εικόνας δίσκου <b>Προσθήκες Επισκέπτη του VirtualBox</b> κατέβηκε επιτυχώς από <nobr><a href="%1">%1</a></nobr> αλλά δεν μπορεί να αποθηκευτεί τοπικά ως <nobr><b>%2</b>.</nobr></p><p>Παρακαλώ επιλέξτε μία άλλη τοποθεσία για αυτό το αρχείο.</p></translation>
     </message>
     <message>
         <source><p>Could not find the <b>VirtualBox User Manual</b> <nobr><b>%1</b>.</nobr></p><p>Do you wish to download this file from the Internet?</p></source>
@@ -5971,11 +5971,11 @@
     </message>
     <message>
         <source><p>The <b>VirtualBox Guest Additions</b> disk image file has been successfully downloaded from <nobr><a href="%1">%1</a></nobr> and saved locally as <nobr><b>%2</b>, </nobr>but the SHA-256 checksum verification failed.</p><p>Please do the download, installation and verification manually.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Το αρχείο εικόνας δίσκου <b>Προσθήκες Επισκέπτη του VirtualBox</b> κατέβηκε επιτυχώς από <nobr><a href="%1">%1</a></nobr> και αποθηκεύτηκε επιτυχώς ως <nobr><b>%2</b>, </nobr>αλλά ο έλεγχος για την επιβεβαίωση του SHA-256 απέτυχε.</p><p>Παρακαλούμε κατεβάστε, εγκαταστήστε και επιβεβαιώστε μη αυτόματα.</p></translation>
     </message>
     <message>
         <source><p>The <b><nobr>%1</nobr></b> has been successfully downloaded from <nobr><a href="%2">%2</a></nobr> and saved locally as <nobr><b>%3</b>, </nobr>but the SHA-256 checksum verification failed.</p><p>Please do the download, installation and verification manually.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Το <b><nobr>%1</nobr></b> κατέβηκε επιτυχώς από <nobr><a href="%2">%2</a></nobr> και αποθηκεύτηκε τοπικά ως <nobr><b>%3</b>, </nobr>αλλά ο έλεγχος για την επιβεβαίωση του SHA-256 απέτυχε.</p><p>Παρακαλούμε κατεβάστε, εγκαταστήστε και επιβεβαιώστε μη αυτόματα.</p></translation>
     </message>
 </context>
 <context>
@@ -6527,7 +6527,7 @@
     </message>
     <message>
         <source>&Save the machine state</source>
-        <translation>Αποθήκευση την κατάστασης της μηχανής</translation>
+        <translation>Αποθήκευση της κατάστασης της μηχανής</translation>
     </message>
     <message>
         <source><p>Sends the ACPI Power Button press event to the virtual machine.</p><p>Normally, the guest operating system running inside the virtual machine will detect this event and perform a clean shutdown procedure. This is a recommended way to turn off the virtual machine because all applications running inside it will get a chance to save their data and state.</p><p>If the machine doesn't respond to this action then the guest operating system  [...]
@@ -8588,12 +8588,12 @@
     <message>
         <source>Ignore</source>
         <comment>USBDeviceFilterAction</comment>
-        <translation>Αγνόησε</translation>
+        <translation>Αγνοήστε</translation>
     </message>
     <message>
         <source>Hold</source>
         <comment>USBDeviceFilterAction</comment>
-        <translation>Κράτα</translation>
+        <translation>Κρατήστε</translation>
     </message>
     <message>
         <source>UDP</source>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_es.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_es.ts
index ad7907c..9fade3c 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_es.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_es.ts
@@ -1835,52 +1835,52 @@
     <message>
         <source><tr><td>%1:</td><td>%2</td></tr></source>
         <comment>key: value</comment>
-        <translation type="unfinished"></translation>
+        <translation><tr><td>%1:</td><td>%2</td></tr></translation>
     </message>
     <message>
         <source>Issuer</source>
-        <translation type="unfinished"></translation>
+        <translation>Emisor</translation>
     </message>
     <message>
         <source>Subject</source>
-        <translation type="unfinished"></translation>
+        <translation>Sujeto</translation>
     </message>
     <message>
         <source>Not Valid Before</source>
-        <translation type="unfinished"></translation>
+        <translation>No válido antes</translation>
     </message>
     <message>
         <source>Not Valid After</source>
-        <translation type="unfinished"></translation>
+        <translation>No válido después</translation>
     </message>
     <message>
         <source>Serial Number</source>
-        <translation type="unfinished"></translation>
+        <translation>Número de serie</translation>
     </message>
     <message>
         <source>Self-Signed</source>
-        <translation type="unfinished"></translation>
+        <translation>Autofirmado</translation>
     </message>
     <message>
         <source>Authority (CA)</source>
-        <translation type="unfinished"></translation>
+        <translation>Autoridad (CA)</translation>
     </message>
     <message>
         <source>Public Algorithm</source>
-        <translation type="unfinished"></translation>
+        <translation>Algoritmo público</translation>
     </message>
     <message>
         <source>%1 (%2)</source>
         <comment>value (clarification)</comment>
-        <translation type="unfinished"></translation>
+        <translation>%1 (%2)</translation>
     </message>
     <message>
         <source>Signature Algorithm</source>
-        <translation type="unfinished"></translation>
+        <translation>Algoritmo de firma</translation>
     </message>
     <message>
         <source>X.509 Version Number</source>
-        <translation type="unfinished"></translation>
+        <translation>Número de versión X.509</translation>
     </message>
 </context>
 <context>
@@ -2624,7 +2624,7 @@
     </message>
     <message>
         <source>Verifying %1...</source>
-        <translation type="unfinished"></translation>
+        <translation>Verificando %1...</translation>
     </message>
 </context>
 <context>
@@ -11077,27 +11077,27 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Delete</source>
         <comment>extension pack</comment>
-        <translation type="unfinished"></translation>
+        <translation>Eliminar</translation>
     </message>
     <message>
         <source>Do you want to delete the downloaded file <nobr><b>%1</b></nobr>?</source>
-        <translation type="unfinished"></translation>
+        <translation>¿Quiere eliminar el archivo descargado <nobr><b>%1</b></nobr>?</translation>
     </message>
     <message>
         <source>Do you want to delete following list of files <nobr><b>%1</b></nobr>?</source>
-        <translation type="unfinished"></translation>
+        <translation>¿Quiere eliminar la siguiente lista de archivos <nobr><b>%1</b></nobr>?</translation>
     </message>
     <message>
         <source><p>The reason for this error are most likely wrong permissions of the IPC daemon socket due to an installation problem. Please check the permissions of <font color=blue>'/tmp'</font> and <font color=blue>'/tmp/.vbox-*-ipc/'</font></p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>La razón de este error probablemente se debe a permisos erroneos del demonio socket IPC por un problema de instalación. Consulte los permisos de <font color=blue>'/tmp'</font> y <font color=blue>'/tmp/.vbox-*-ipc/'</font></p></translation>
     </message>
     <message>
         <source><p>The <b>VirtualBox Guest Additions</b> disk image file has been successfully downloaded from <nobr><a href="%1">%1</a></nobr> and saved locally as <nobr><b>%2</b>, </nobr>but the SHA-256 checksum verification failed.</p><p>Please do the download, installation and verification manually.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>El archivo de imagen de disco de las <b>VirtualBox Guest Additions</b> ha sido descargado correctamente de <nobr><a href="%1">%1</a></nobr> y guardado localmente como <nobr><b>%2</b>, </nobr>pero la suma de verificación SHA-256 ha fallado.</p><p>Realice la descarga, instalación y verificación manualmente.</p></translation>
     </message>
     <message>
         <source><p>The <b><nobr>%1</nobr></b> has been successfully downloaded from <nobr><a href="%2">%2</a></nobr> and saved locally as <nobr><b>%3</b>, </nobr>but the SHA-256 checksum verification failed.</p><p>Please do the download, installation and verification manually.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p><b><nobr>%1</nobr></b> ha sido descargado correctamente de <nobr><a href="%2">%2</a></nobr> y guardado localmente como <nobr><b>%3</b>, </nobr>pero la suma de verificación SHA-256 ha fallado.</p><p>Realice la descarga, instalación y verificación manualmente.</p></translation>
     </message>
 </context>
 <context>
@@ -17549,82 +17549,82 @@ Versión %1</translation>
     <message>
         <source>General</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished">General</translation>
+        <translation>General</translation>
     </message>
     <message>
         <source>Preview</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished">Previsualización</translation>
+        <translation>Previsualización</translation>
     </message>
     <message>
         <source>System</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished">Sistema</translation>
+        <translation>Sistema</translation>
     </message>
     <message>
         <source>Display</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished">Pantalla</translation>
+        <translation>Pantalla</translation>
     </message>
     <message>
         <source>Storage</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished">Almacenamiento</translation>
+        <translation>Almacenamiento</translation>
     </message>
     <message>
         <source>Audio</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished">Audio</translation>
+        <translation>Audio</translation>
     </message>
     <message>
         <source>Network</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished">Red</translation>
+        <translation>Red</translation>
     </message>
     <message>
         <source>Serial ports</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished">Puertos serie</translation>
+        <translation>Puertos serie</translation>
     </message>
     <message>
         <source>Parallel ports</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished">Puertos paralelos</translation>
+        <translation>Puertos paralelos</translation>
     </message>
     <message>
         <source>USB</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished">USB</translation>
+        <translation>USB</translation>
     </message>
     <message>
         <source>Shared folders</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished">Carpetas compartidas</translation>
+        <translation>Carpetas compartidas</translation>
     </message>
     <message>
         <source>User interface</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished">Interfaz de usuario</translation>
+        <translation>Interfaz de usuario</translation>
     </message>
     <message>
         <source>Description</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished">Descripción</translation>
+        <translation>Descripción</translation>
     </message>
     <message>
         <source>Runtime attributes</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished"></translation>
+        <translation>Atributos en tiempo de ejecución</translation>
     </message>
     <message>
         <source>Storage statistics</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished"></translation>
+        <translation>Estadísticas de almacenamiento</translation>
     </message>
     <message>
         <source>Network statistics</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished"></translation>
+        <translation>Estadísticas de red</translation>
     </message>
 </context>
 <context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_it.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_it.ts
index df00f86..f5879c9 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_it.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_it.ts
@@ -2771,7 +2771,7 @@
     </message>
     <message>
         <source>Verifying %1...</source>
-        <translation type="unfinished"></translation>
+        <translation>Verifica di %1 in corso...</translation>
     </message>
 </context>
 <context>
@@ -11619,11 +11619,11 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source><p>The <b>VirtualBox Guest Additions</b> disk image file has been successfully downloaded from <nobr><a href="%1">%1</a></nobr> and saved locally as <nobr><b>%2</b>, </nobr>but the SHA-256 checksum verification failed.</p><p>Please do the download, installation and verification manually.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Il file dell'immagine del disco delle <b>VirtualBox Guest Additions</b> è stato scaricato correttamente da <nobr><a href="%1">%1</a></nobr> e salvato localmente come <nobr><b>%2</b>, </nobr>ma la verifica del codice di controllo SHA-256 non è riuscita..</p><p>Esegui lo scaricamento, l'installazione e la verifica manualmente.</p></translation>
     </message>
     <message>
         <source><p>The <b><nobr>%1</nobr></b> has been successfully downloaded from <nobr><a href="%2">%2</a></nobr> and saved locally as <nobr><b>%3</b>, </nobr>but the SHA-256 checksum verification failed.</p><p>Please do the download, installation and verification manually.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Il file di <b><nobr>%1</nobr></b> è stato scaricato correttamente da <nobr><a href="%2">%2</a></nobr> e salvato localmente come <nobr><b>%3</b>, </nobr>ma la verifica del codice di controllo SHA-256 non è riuscita..</p><p>Esegui lo scaricamento, l'installazione e la verifica manualmente.</p></translation>
     </message>
 </context>
 <context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_nl.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_nl.ts
index fbb62e6..99d9f3c 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_nl.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_nl.ts
@@ -2371,7 +2371,7 @@
     </message>
     <message>
         <source>Verifying %1...</source>
-        <translation type="unfinished"></translation>
+        <translation>Verifiëren %1...</translation>
     </message>
 </context>
 <context>
@@ -9402,11 +9402,11 @@
     </message>
     <message>
         <source><p>The <b>VirtualBox Guest Additions</b> disk image file has been successfully downloaded from <nobr><a href="%1">%1</a></nobr> and saved locally as <nobr><b>%2</b>, </nobr>but the SHA-256 checksum verification failed.</p><p>Please do the download, installation and verification manually.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Het <b>VirtualBox Guest Additions</b>-schijfimagebestand is met succes gedownload van<nobr><a href="%1">%1</a></nobr> en lokaal opgeslagen als <nobr><b>%2</b>,</nobr> maar de SHA-256 checksumverificatie mislukte.</p><p> Download, installeer en verifiëer handmatig.</p></translation>
     </message>
     <message>
         <source><p>The <b><nobr>%1</nobr></b> has been successfully downloaded from <nobr><a href="%2">%2</a></nobr> and saved locally as <nobr><b>%3</b>, </nobr>but the SHA-256 checksum verification failed.</p><p>Please do the download, installation and verification manually.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Het <b><nobr>%1</nobr></b> is met succes gedownload van <nobr><a href="%2">%2</a></nobr> en lokaal opgeslagen als <nobr><b>%3</b>, </nobr> maar de SHA-256 checksumverificatie mislukte.</p><p> Download, installeer en verifiëer handmatig.</p></translation>
     </message>
 </context>
 <context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt_BR.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt_BR.ts
index 73cff08..3de5b1e 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt_BR.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt_BR.ts
@@ -2706,7 +2706,7 @@
     </message>
     <message>
         <source>Verifying %1...</source>
-        <translation type="unfinished"></translation>
+        <translation>Verificando %1...</translation>
     </message>
 </context>
 <context>
@@ -11472,11 +11472,11 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source><p>The <b>VirtualBox Guest Additions</b> disk image file has been successfully downloaded from <nobr><a href="%1">%1</a></nobr> and saved locally as <nobr><b>%2</b>, </nobr>but the SHA-256 checksum verification failed.</p><p>Please do the download, installation and verification manually.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>O arquivo de imagem de disco dos <b>Adicionais de Convidado do VirtualBox</b> foi baixado com sucesso de <nobr><a href="%1">%1</a></nobr> e gravado localmente como <nobr><b>%2</b>, </nobr>mas a verificaçãao de checksum SHA-256 falhou.</p><p>Faça o download, instalação e verificação manualmente.</p></translation>
     </message>
     <message>
         <source><p>The <b><nobr>%1</nobr></b> has been successfully downloaded from <nobr><a href="%2">%2</a></nobr> and saved locally as <nobr><b>%3</b>, </nobr>but the SHA-256 checksum verification failed.</p><p>Please do the download, installation and verification manually.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>O arquivo <b><nobr>%1</nobr></b> foi baixado com sucesso de <nobr><a href="%2">%2</a></nobr> e gravado localmente como <nobr><b>%3</b>, </nobr>mas a verificação de checksum SHA-256 falhou.</p><p>Faça o download, instalação e verificação manualmente.</p></translation>
     </message>
 </context>
 <context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sl.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sl.ts
index 2b70f09..0c35b0a 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sl.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sl.ts
@@ -1537,7 +1537,7 @@
     <message>
         <location line="+1"/>
         <source>Verifying %1...</source>
-        <translation type="unfinished"></translation>
+        <translation>Preverjanje %1 …</translation>
     </message>
 </context>
 <context>
@@ -6320,19 +6320,19 @@
     <message>
         <location line="+407"/>
         <source><p>The <b>VirtualBox Guest Additions</b> disk image file has been successfully downloaded from <nobr><a href="%1">%1</a></nobr> and saved locally as <nobr><b>%2</b>, </nobr>but the SHA-256 checksum verification failed.</p><p>Please do the download, installation and verification manually.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Datoteka odtis diska <b>Dodatki za gosta VirtualBox</b> je bila uspešno prejeta s/z <nobr><a href="%1">%1</a></nobr> in krajevno shranjena kot <nobr><b>%2</b>, </nobr>vendar je preverjanje nadzorne vsote SHA-256 spodletelo.</p><p>Prosimo, da prejem, namestitev in preverjanje opravite ročno.</p></translation>
     </message>
     <message>
         <location line="+100"/>
         <source><p>The <b><nobr>%1</nobr></b> has been successfully downloaded from <nobr><a href="%2">%2</a></nobr> and saved locally as <nobr><b>%3</b>, </nobr>but the SHA-256 checksum verification failed.</p><p>Please do the download, installation and verification manually.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p><b>%1</b> je bil uspešno prejet s/z <nobr><a href="%2">%2</a></nobr> in krajevno shranjen kot <nobr><b>%3</b>, </nobr>vendar je preverjanje nadzorne vsote SHA-256 spodletelo.</p><p>Prosimo, da prejem, namestitev in preverjanje opravite ročno.</p></translation>
     </message>
     <message>
         <location line="+14"/>
         <location line="+9"/>
         <source>Delete</source>
         <comment>extension pack</comment>
-        <translation type="unfinished">Izbriši</translation>
+        <translation>Izbriši</translation>
     </message>
     <message>
         <location line="+337"/>
@@ -6777,12 +6777,12 @@
     <message>
         <location line="-20"/>
         <source>Do you want to delete the downloaded file <nobr><b>%1</b></nobr>?</source>
-        <translation type="unfinished"></translation>
+        <translation>Ali želite izbrisati prejeto datoteko <nobr><b>%1</b></nobr>?</translation>
     </message>
     <message>
         <location line="+9"/>
         <source>Do you want to delete following list of files <nobr><b>%1</b></nobr>?</source>
-        <translation type="unfinished"></translation>
+        <translation>Ali želite izbrisati naslednji seznam datotek <nobr><b>%1</b></nobr>?</translation>
     </message>
     <message>
         <location line="+30"/>
@@ -6918,7 +6918,7 @@
     <message>
         <location line="+20"/>
         <source><p>The <b><nobr>%1</nobr></b> has been successfully downloaded from <nobr><a href="%2">%2</a></nobr> and saved locally as <nobr><b>%3</b>.</nobr></p><p>Do you wish to install this extension pack?</p></source>
-        <translation><p><b><nobr>%1</nobr></b> je bil uspešno prejet iz <nobr><a href="%2">%2</a></nobr> in krajevno shranjen kot <nobr><b>%3</b>.</nobr></p><p>Ali želite namestiti paket razširitev?</p></translation>
+        <translation><p><b><nobr>%1</nobr></b> je bil uspešno prejet s/z <nobr><a href="%2">%2</a></nobr> in krajevno shranjen kot <nobr><b>%3</b>.</nobr></p><p>Ali želite namestiti paket razširitev?</p></translation>
     </message>
     <message>
         <location line="+6"/>
@@ -7057,7 +7057,7 @@
     <message>
         <location line="+52"/>
         <source><p>The reason for this error are most likely wrong permissions of the IPC daemon socket due to an installation problem. Please check the permissions of <font color=blue>'/tmp'</font> and <font color=blue>'/tmp/.vbox-*-ipc/'</font></p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Razlog za to napako so najverjetneje napačna dovoljenja vtiča opravila IPC zaradi težav pri namestitvi. Preverite dovoljenja map <font color=blue>'/tmp'</font> in <font color=blue>'/tmp/.vbox-*-ipc/'</font>.</p></translation>
     </message>
     <message>
         <location line="+10"/>
@@ -8739,18 +8739,18 @@
     <message>
         <location line="+3"/>
         <source><p>If you choose <b>Current snapshot tree branch</b>, the new machine will reflect the current state of the original machine and will have matching snapshots for all snapshots in the tree branch starting at the current state in the original machine.</p></source>
-        <translation><p>Če izberete <b>Trenutno vejo drevesa posnetka stanja</b>, bo nov računalnik odražal trenutno stanje izvirnega računalnika in bo imel ujemajoče se posnetke stanja za vse posnetke v veji drevesa z začetkom pri trenutnem stanju v izvirnem računalniku.</p></translation>
+        <translation><p>Če izberete <b>Trenutno vejo drevesa posnetka stanja</b>, bo nov računalnik odražal trenutno stanje izvirnega računalnika in bo imel ujemajoče se posnetke stanja vseh posnetkov v veji drevesa z začetkom pri trenutnem stanju v izvirnem računalniku.</p></translation>
     </message>
     <message>
         <location line="+5"/>
         <source><p>If you choose <b>Everything</b>, the new machine will reflect the current state of the original machine and will have matching snapshots for all snapshots in the original machine.</p></source>
-        <translation><p>Če izberete <b>Vse</b>, bo nov računalnik odražal trenutno stanje izvirnega računalnika in bo imel ujemajoče se posnetke stanja za vse posnetke stanja v izvirnem računalniku.</p></translation>
+        <translation><p>Če izberete <b>Vse</b>, bo nov računalnik odražal trenutno stanje izvirnega računalnika in bo imel ujemajoče se posnetke stanja vseh posnetkov stanja v izvirnem računalniku.</p></translation>
     </message>
     <message>
         <location line="+16"/>
         <location filename="../src/wizards/clonevm/UIWizardCloneVMPageExpert.cpp" line="+1"/>
         <source>Current &machine state</source>
-        <translation>Trenutno &stanje računlanika</translation>
+        <translation>Trenutno &stanje računalnika</translation>
     </message>
     <message>
         <location line="+1"/>
@@ -11686,7 +11686,7 @@
     <message>
         <location line="+2"/>
         <source>The current state is identical to the state stored in the current snapshot</source>
-        <translation>Trenutno stanje je enko stanju shranjenemu v trenutnem posnetku</translation>
+        <translation>Trenutno stanje je enako stanju, shranjenemu v trenutnem posnetku</translation>
     </message>
     <message>
         <location line="+108"/>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts
index dd92c01..5f3937b 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts
@@ -2347,7 +2347,7 @@
     </message>
     <message>
         <source>Verifying %1...</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 doğrulanıyor...</translation>
     </message>
 </context>
 <context>
@@ -9915,11 +9915,11 @@
     </message>
     <message>
         <source><p>The <b>VirtualBox Guest Additions</b> disk image file has been successfully downloaded from <nobr><a href="%1">%1</a></nobr> and saved locally as <nobr><b>%2</b>, </nobr>but the SHA-256 checksum verification failed.</p><p>Please do the download, installation and verification manually.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p><b>VirtualBox Misafir Eklentileri</b> disk kalıbı dosyası <nobr><a href="%1">%1</a></nobr> adresinden başarılı olarak indirildi ve <nobr><b>%2</b></nobr> ile yerel olarak kaydedildi, ancak SHA-256 sağlama doğrulaması başarısız oldu.</p><p>Lütfen indirmeyi, kurulumu ve doğrulamayı el ile yapın.</p></translation>
     </message>
     <message>
         <source><p>The <b><nobr>%1</nobr></b> has been successfully downloaded from <nobr><a href="%2">%2</a></nobr> and saved locally as <nobr><b>%3</b>, </nobr>but the SHA-256 checksum verification failed.</p><p>Please do the download, installation and verification manually.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p><b>%1</b>, <nobr><a href="%2">%2</a></nobr> adresinden başarılı olarak indirildi ve <nobr><b>%3</b></nobr> ile yerel olarak kaydedildi, ancak SHA-256 sağlama doğrulaması başarısız oldu.</p><p>Lütfen indirmeyi, kurulumu ve doğrulamayı el ile yapın.</p></translation>
     </message>
 </context>
 <context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_CN.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_CN.ts
index da53f89..42b45c7 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_CN.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_CN.ts
@@ -1666,52 +1666,52 @@
     <message>
         <source><tr><td>%1:</td><td>%2</td></tr></source>
         <comment>key: value</comment>
-        <translation type="unfinished"></translation>
+        <translation><tr><td>%1:</td><td>%2</td></tr></translation>
     </message>
     <message>
         <source>Issuer</source>
-        <translation type="unfinished"></translation>
+        <translation>签发者</translation>
     </message>
     <message>
         <source>Subject</source>
-        <translation type="unfinished"></translation>
+        <translation>主题</translation>
     </message>
     <message>
         <source>Not Valid Before</source>
-        <translation type="unfinished"></translation>
+        <translation>在此之前无效</translation>
     </message>
     <message>
         <source>Not Valid After</source>
-        <translation type="unfinished"></translation>
+        <translation>在此之后无效</translation>
     </message>
     <message>
         <source>Serial Number</source>
-        <translation type="unfinished"></translation>
+        <translation>序列号</translation>
     </message>
     <message>
         <source>Self-Signed</source>
-        <translation type="unfinished"></translation>
+        <translation>自行签署</translation>
     </message>
     <message>
         <source>Authority (CA)</source>
-        <translation type="unfinished"></translation>
+        <translation>授权机构 (CA)</translation>
     </message>
     <message>
         <source>Public Algorithm</source>
-        <translation type="unfinished"></translation>
+        <translation>公钥算法</translation>
     </message>
     <message>
         <source>%1 (%2)</source>
         <comment>value (clarification)</comment>
-        <translation type="unfinished"></translation>
+        <translation>%1 (%2)</translation>
     </message>
     <message>
         <source>Signature Algorithm</source>
-        <translation type="unfinished"></translation>
+        <translation>签名算法</translation>
     </message>
     <message>
         <source>X.509 Version Number</source>
-        <translation type="unfinished"></translation>
+        <translation>X.509 版本</translation>
     </message>
 </context>
 <context>
@@ -2393,7 +2393,7 @@
     </message>
     <message>
         <source>Verifying %1...</source>
-        <translation type="unfinished"></translation>
+        <translation>校验 %1...</translation>
     </message>
 </context>
 <context>
@@ -9401,27 +9401,27 @@
     <message>
         <source>Delete</source>
         <comment>extension pack</comment>
-        <translation type="unfinished">删除</translation>
+        <translation>删除</translation>
     </message>
     <message>
         <source>Do you want to delete the downloaded file <nobr><b>%1</b></nobr>?</source>
-        <translation type="unfinished"></translation>
+        <translation>确认删除已下载的文件 <nobr><b>%1</b></nobr>?</translation>
     </message>
     <message>
         <source>Do you want to delete following list of files <nobr><b>%1</b></nobr>?</source>
-        <translation type="unfinished"></translation>
+        <translation>确认删除下列文件 <nobr><b>%1</b></nobr>?</translation>
     </message>
     <message>
         <source><p>The reason for this error are most likely wrong permissions of the IPC daemon socket due to an installation problem. Please check the permissions of <font color=blue>'/tmp'</font> and <font color=blue>'/tmp/.vbox-*-ipc/'</font></p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>此错误的原因很可能是安装问题导致 IPC 守护套接字权限有误。 请检查 <font color=blue>'/tmp'</font> 和 <font color=blue>'/tmp/.vbox-*-ipc/'</font> 的权限。</p></translation>
     </message>
     <message>
         <source><p>The <b>VirtualBox Guest Additions</b> disk image file has been successfully downloaded from <nobr><a href="%1">%1</a></nobr> and saved locally as <nobr><b>%2</b>, </nobr>but the SHA-256 checksum verification failed.</p><p>Please do the download, installation and verification manually.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>增强功能包虚拟光盘已从 <nobr><a href="%1">%1</a></nobr>成功下载并保存在 <nobr><b>%2</b>, </nobr>但是 SHA-256 校验有误。</p><p>请你自己下载安装和校验。</p></translation>
     </message>
     <message>
         <source><p>The <b><nobr>%1</nobr></b> has been successfully downloaded from <nobr><a href="%2">%2</a></nobr> and saved locally as <nobr><b>%3</b>, </nobr>but the SHA-256 checksum verification failed.</p><p>Please do the download, installation and verification manually.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p><b><nobr>%1</nobr></b>已从 <nobr><a href="%2">%2</a></nobr>成功下载并保存在 <nobr><b>%3</b>, </nobr>但是 SHA-256 校验有误。</p><p>请你自己下载安装和校验。</p></translation>
     </message>
 </context>
 <context>
@@ -13396,82 +13396,82 @@
     <message>
         <source>General</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished">常规</translation>
+        <translation>常规</translation>
     </message>
     <message>
         <source>Preview</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished">预览</translation>
+        <translation>预览</translation>
     </message>
     <message>
         <source>System</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished">系统</translation>
+        <translation>系统</translation>
     </message>
     <message>
         <source>Display</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished">显示</translation>
+        <translation>显示</translation>
     </message>
     <message>
         <source>Storage</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished">存储</translation>
+        <translation>存储</translation>
     </message>
     <message>
         <source>Audio</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished">声音</translation>
+        <translation>声音</translation>
     </message>
     <message>
         <source>Network</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished">网络</translation>
+        <translation>网络</translation>
     </message>
     <message>
         <source>Serial ports</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished">串口</translation>
+        <translation>串口</translation>
     </message>
     <message>
         <source>Parallel ports</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished">并口</translation>
+        <translation>并口</translation>
     </message>
     <message>
         <source>USB</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished"></translation>
+        <translation>USB设备</translation>
     </message>
     <message>
         <source>Shared folders</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished">共享文件夹</translation>
+        <translation>共享文件夹</translation>
     </message>
     <message>
         <source>User interface</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished">用户界面</translation>
+        <translation>用户界面</translation>
     </message>
     <message>
         <source>Description</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished">描述</translation>
+        <translation>描述</translation>
     </message>
     <message>
         <source>Runtime attributes</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished"></translation>
+        <translation>运行属性</translation>
     </message>
     <message>
         <source>Storage statistics</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished"></translation>
+        <translation>存储统计</translation>
     </message>
     <message>
         <source>Network statistics</source>
         <comment>InformationElementType</comment>
-        <translation type="unfinished"></translation>
+        <translation>网络统计</translation>
     </message>
 </context>
 <context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_TW.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_TW.ts
index 2b31bf9..66e5837 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_TW.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_TW.ts
@@ -159,7 +159,7 @@
     <name>UIActionPool</name>
     <message>
         <source>&Machine</source>
-        <translation>機器(&M)</translation>
+        <translation>虛擬機器(&M)</translation>
     </message>
     <message>
         <source>&Adjust Window Size</source>
@@ -229,7 +229,7 @@
     </message>
     <message>
         <source>Dock Icon</source>
-        <translation>停駐圖示</translation>
+        <translation>Dock 圖示</translation>
     </message>
     <message>
         <source>Show Monitor Preview</source>
@@ -399,11 +399,11 @@
     </message>
     <message>
         <source>&New Machine...</source>
-        <translation>新增機器(&N)...</translation>
+        <translation>新增虛擬機器(&N)...</translation>
     </message>
     <message>
         <source>&Add Machine...</source>
-        <translation>加入機器(&A)...</translation>
+        <translation>加入虛擬機器(&A)...</translation>
     </message>
     <message>
         <source>Gro&up</source>
@@ -842,11 +842,11 @@
     </message>
     <message>
         <source>S&how in Finder</source>
-        <translation>顯示在尋找器(&H)</translation>
+        <translation>顯示在 Finder(&H)</translation>
     </message>
     <message>
         <source>Show the VirtualBox Machine Definition files in Finder</source>
-        <translation>在尋找器顯示 VirtualBox Machine Definition 檔案</translation>
+        <translation>在 Finder 中顯示 VirtualBox Machine Definition 檔案</translation>
     </message>
     <message>
         <source>S&how in Explorer</source>
@@ -854,7 +854,7 @@
     </message>
     <message>
         <source>Show the VirtualBox Machine Definition files in Explorer</source>
-        <translation>在檔案總管顯示 VirtualBox Machine Definition 檔案</translation>
+        <translation>在檔案總管中顯示 VirtualBox Machine Definition 檔案</translation>
     </message>
     <message>
         <source>S&how in File Manager</source>
@@ -926,11 +926,11 @@
     </message>
     <message>
         <source>Detach the GUI from headless VM</source>
-        <translation>從無表頭 VM 卸除 GUI</translation>
+        <translation>從無標題虛擬機器卸除 GUI</translation>
     </message>
     <message>
         <source>Disable Dock Icon Overlay</source>
-        <translation>停用停駐圖示重疊</translation>
+        <translation>停用 Dock 圖示重疊</translation>
     </message>
 </context>
 <context>
@@ -1193,7 +1193,7 @@
     </message>
     <message>
         <source>Verifying %1...</source>
-        <translation type="unfinished"></translation>
+        <translation>正在驗證 %1...</translation>
     </message>
 </context>
 <context>
@@ -1779,7 +1779,7 @@
     </message>
     <message>
         <source>Machine Windows:</source>
-        <translation>機器視窗:</translation>
+        <translation>虛擬機器視窗:</translation>
     </message>
     <message>
         <source>&Raise Window Under Mouse</source>
@@ -1861,7 +1861,7 @@
     </message>
     <message>
         <source>Default &Machine Folder:</source>
-        <translation>預設機器資料夾(&M):</translation>
+        <translation>預設虛擬機器資料夾(&M):</translation>
     </message>
     <message>
         <source>V&RDP Authentication Library:</source>
@@ -2078,15 +2078,15 @@
     </message>
     <message>
         <source>No new name specified for the NAT network previously called <b>%1</b>.</source>
-        <translation>未指定先前稱為 <b>%1</b> 的 NAT 網路之新名稱。</translation>
+        <translation>先前稱為 <b>%1</b> 的 NAT 網路未指定新名稱。</translation>
     </message>
     <message>
         <source>No CIDR specified for the NAT network <b>%1</b>.</source>
-        <translation>未指定 NAT 網路<b>%1</b>的 CIDR。</translation>
+        <translation>未指定 NAT 網路 <b>%1</b> 的 CIDR。</translation>
     </message>
     <message>
         <source>No CIDR specified for the NAT network previously called <b>%1</b>.</source>
-        <translation>未指定先前稱為 <b>%1</b> 的 NAT 網路之 CIDR。</translation>
+        <translation>先前稱為 <b>%1</b> 的 NAT 網路未指定 CIDR。</translation>
     </message>
     <message>
         <source>Invalid CIDR specified (<i>%1</i>) for the NAT network <b>%2</b>.</source>
@@ -2322,7 +2322,7 @@
     </message>
     <message>
         <source>When checked, the DHCP Server will be enabled for this network on machine start-up.</source>
-        <translation>勾選時,這個網路卡在機器啟動時將使用 DHCP 伺服器。</translation>
+        <translation>勾選時,這個網路卡在虛擬機器啟動時將使用 DHCP 伺服器。</translation>
     </message>
 </context>
 <context>
@@ -3770,7 +3770,7 @@
     <name>UIMachineSettingsSF</name>
     <message>
         <source> Machine Folders</source>
-        <translation> 機器資料夾</translation>
+        <translation> 虛擬機器資料夾</translation>
     </message>
     <message>
         <source> Transient Folders</source>
@@ -3786,7 +3786,7 @@
     </message>
     <message>
         <source>Lists all shared folders accessible to this machine. Use 'net use x: \\vboxsvr\share' to access a shared folder named <i>share</i> from a DOS-like OS, or 'mount -t vboxsf share mount_point' to access it from a Linux OS. This feature requires Guest Additions.</source>
-        <translation>列出所有可存取這部機器的共用資料夾。 從類似 DOS 的作業系統使用 [net use x: \\vboxsvr\share] 存取名為 <i>share</i> 的共用資料夾,或從 Linux 作業系統 [mount -t vboxsf share mount_point] 來存取它。 這個功能需要 Guest Additions 。</translation>
+        <translation>列出這部虛擬機器可存取的所有共用資料夾。 從類似 DOS 的作業系統使用 [net use x: \\vboxsvr\share] 存取名為 <i>share</i> 的共用資料夾,或從 Linux 作業系統 [mount -t vboxsf share mount_point] 來存取它。 這個功能需要 Guest Additions 。</translation>
     </message>
     <message>
         <source>Name</source>
@@ -3834,7 +3834,7 @@
     </message>
     <message>
         <source>Removes selected shared folder.</source>
-        <translation>移除選取的共用資料夾定。</translation>
+        <translation>移除選取的共用資料夾。</translation>
     </message>
 </context>
 <context>
@@ -4024,7 +4024,7 @@
     </message>
     <message>
         <source>The Storage Tree can contain several controllers of different types. This machine currently has no controllers.</source>
-        <translation>[存放裝置樹] 能包含數個不同類型的控制器。 這部機器目前沒有控制器。</translation>
+        <translation>[存放裝置樹] 能包含數個不同類型的控制器。 這部虛擬機器目前沒有控制器。</translation>
     </message>
     <message>
         <source>Attributes</source>
@@ -4162,7 +4162,7 @@
     </message>
     <message>
         <source>The machine currently has more storage controllers assigned than a %1 chipset supports. Please change the chipset type on the System settings page or reduce the number of the following storage controllers on the Storage settings page: %2</source>
-        <translation>機器目前指派超過 %1 晶片組所支援的存放控制器。 請在 [系統] 設定頁中變更晶片組類型或在 [存放裝置] 設定頁中減少以下存放控制器的數量: %2</translation>
+        <translation>虛擬機器目前指派超過 %1 晶片組所支援的存放控制器。 請在 [系統] 設定頁中變更晶片組類型或在 [存放裝置] 設定頁中減少以下存放控制器的數量: %2</translation>
     </message>
     <message>
         <source>Add USB Controller</source>
@@ -4194,7 +4194,7 @@
     </message>
     <message>
         <source>Lists all storage controllers for this machine and the virtual images and host drives attached to them.</source>
-        <translation>列出這部機器的所有存放裝置控制器與附加到它們的虛擬映像和主機磁碟機。</translation>
+        <translation>列出這部虛擬機器的所有存放裝置控制器與附加到它們的虛擬映像和主機磁碟機。</translation>
     </message>
     <message>
         <source>Holds the name of the storage controller currently selected in the Storage Tree.</source>
@@ -4489,7 +4489,7 @@
     </message>
     <message>
         <source>When checked, enables the virtual USB controller of this machine.</source>
-        <translation>勾選時,啟用這部機器的虛擬 USB 控制器。</translation>
+        <translation>勾選時,啟用這部虛擬機器的虛擬 USB 控制器。</translation>
     </message>
     <message>
         <source>Enable &USB Controller</source>
@@ -4501,7 +4501,7 @@
     </message>
     <message>
         <source>Lists all USB filters of this machine. The checkbox to the left defines whether the particular filter is enabled or not. Use the context menu or buttons to the right to add or remove USB filters.</source>
-        <translation>列出這部機器的所有 USB 篩選器。 左側的核取方塊定義是否啟用特定的篩選器。 使用內容功能表或右側的按鈕加入或移除 USB 篩選器。</translation>
+        <translation>列出這部虛擬機器的所有 USB 篩選器。 左側的核取方塊定義是否啟用特定的篩選器。 使用內容功能表或右側的按鈕加入或移除 USB 篩選器。</translation>
     </message>
     <message>
         <source>[filter]</source>
@@ -4565,15 +4565,15 @@
     </message>
     <message>
         <source>When chosen, enables the virtual USB OHCI controller of this machine. The USB OHCI controller provides USB 1.0 support.</source>
-        <translation>選擇時,啟用這部機器的虛擬 USB OHCI 控制器。  USB OHCI 控制器提供 USB 1.0 支援。</translation>
+        <translation>選擇時,啟用這部虛擬機器的虛擬 USB OHCI 控制器。  USB OHCI 控制器提供 USB 1.0 支援。</translation>
     </message>
     <message>
         <source>When chosen, enables the virtual USB EHCI controller of this machine. The USB EHCI controller provides USB 2.0 support.</source>
-        <translation>選擇時,啟用這部機器的虛擬 USB EHCI 控制器。 USB EHCI 控制器提供 USB 2.0 支援。</translation>
+        <translation>選擇時,啟用這部虛擬機器的虛擬 USB EHCI 控制器。 USB EHCI 控制器提供 USB 2.0 支援。</translation>
     </message>
     <message>
         <source>When chosen, enables the virtual USB xHCI controller of this machine. The USB xHCI controller provides USB 3.0 support.</source>
-        <translation>選擇時,啟用這部機器的虛擬 USB xHCI 控制器。  USB xHCI 控制器提供 USB 3.0 支援。</translation>
+        <translation>選擇時,啟用這部虛擬機器的虛擬 USB xHCI 控制器。  USB xHCI 控制器提供 USB 3.0 支援。</translation>
     </message>
     <message>
         <source>Add Empty Filter</source>
@@ -4779,11 +4779,11 @@
     </message>
     <message>
         <source>This type of medium is attached directly, allowed to be used concurrently by several machines.</source>
-        <translation>這個媒體類型是直接附加,允許由數部機器同時使用。</translation>
+        <translation>這個媒體類型是直接附加,允許由數部虛擬機器同時使用。</translation>
     </message>
     <message>
         <source>This type of medium is attached directly, and can be used by several machines.</source>
-        <translation>這個媒體類型是直接附加,能由數部機器使用。</translation>
+        <translation>這個媒體類型是直接附加,能由數部虛擬機器使用。</translation>
     </message>
     <message>
         <source>This type of medium is attached indirectly, so that one base medium can be used for several VMs which have their own differencing medium to store their modifications.</source>
@@ -5253,7 +5253,7 @@
     </message>
     <message>
         <source>Failed to detach the hard disk (<nobr><b>%1</b></nobr>) from the slot <i>%2</i> of the machine <b>%3</b>.</source>
-        <translation>從機器 <b>%3</b> 的插槽 <i>%2</i> 分離硬碟裝置 (<nobr><b>%1</b></nobr>) 失敗。</translation>
+        <translation>從虛擬機器 <b>%3</b> 的插槽 <i>%2</i> 分離硬碟裝置 (<nobr><b>%1</b></nobr>) 失敗。</translation>
     </message>
     <message>
         <source>Failed to update Guest Additions. The Guest Additions disk image file will be inserted for user installation.</source>
@@ -5281,7 +5281,7 @@
     </message>
     <message>
         <source>Failed to attach the hard disk (<nobr><b>%1</b></nobr>) to the slot <i>%2</i> of the machine <b>%3</b>.</source>
-        <translation>在機器 <b>%3</b> 的插槽 <i>%2</i> 附加硬碟裝置 (<nobr><b>%1</b></nobr>) 失敗。</translation>
+        <translation>在虛擬機器 <b>%3</b> 的插槽 <i>%2</i> 附加硬碟裝置 (<nobr><b>%1</b></nobr>) 失敗。</translation>
     </message>
     <message>
         <source><p>Note that the storage unit of this medium will not be deleted and that it will be possible to use it later again.</p></source>
@@ -5430,19 +5430,19 @@
     </message>
     <message>
         <source><p>You are about to remove following virtual machine items from the machine list:</p><p><b>%1</b></p><p>Do you wish to proceed?</p></source>
-        <translation><p>您即將從機器清單移除以下虛擬機器項目:</p><p><b>%1</b></p><p>您希望進行嗎?</p></translation>
+        <translation><p>您即將從虛擬機器清單移除以下虛擬機器項目:</p><p><b>%1</b></p><p>您希望進行嗎?</p></translation>
     </message>
     <message>
         <source><p>You are about to remove following inaccessible virtual machines from the machine list:</p><p>%1</p><p>Do you wish to proceed?</p></source>
-        <translation><p>您即將從機器清單移除以下不可存取的虛擬機器項目:</p><p>%1</p><p>您希望進行嗎?</p></translation>
+        <translation><p>您即將從虛擬機器清單移除以下不可存取的虛擬機器項目:</p><p>%1</p><p>您希望進行嗎?</p></translation>
     </message>
     <message>
         <source><p>You are about to remove following virtual machines from the machine list:</p><p>%1</p><p>Would you like to delete the files containing the virtual machine from your hard disk as well? Doing this will also remove the files containing the machine's virtual hard disks if they are not in use by another machine.</p></source>
-        <translation><p>您即將從機器清單移除以下虛擬機器:</p><p>%1</p><p>您希望同時從硬碟中刪除包含虛擬機器的檔案嗎?  如此做也將移除包含機器的虛擬硬碟的檔案如果另一部機器未使用中。</p></translation>
+        <translation><p>您即將從虛擬機器清單移除以下虛擬機器:</p><p>%1</p><p>您希望同時從硬碟中刪除包含虛擬機器的檔案嗎?  如此做也將移除包含機器的虛擬硬碟的檔案如果另一部機器未使用中。</p></translation>
     </message>
     <message>
         <source><p>You are about to remove following virtual machines from the machine list:</p><p>%1</p><p>Would you like to delete the files containing the virtual machine from your hard disk as well?</p></source>
-        <translation><p>您即將從機器清單移除以下虛擬機器:</p><p>%1</p><p>您希望同時從硬碟中刪除包含虛擬機器的檔案嗎?  </p></translation>
+        <translation><p>您即將從虛擬機器清單移除以下虛擬機器:</p><p>%1</p><p>您希望同時從硬碟中刪除包含虛擬機器的檔案嗎?  </p></translation>
     </message>
     <message>
         <source>Do you wish to cancel all current network operations?</source>
@@ -5460,11 +5460,11 @@
     </message>
     <message>
         <source><p>Cannot remove the machine folder <nobr><b>%1</b>.</nobr></p><p>Please check that this folder really exists and that you have permissions to remove it.</p></source>
-        <translation><p>無法移除機器資料夾 <nobr><b>%1</b>。</nobr></p><p>請檢查此資料夾真的存在且有權限移除。</p></translation>
+        <translation><p>無法移除虛擬機器資料夾 <nobr><b>%1</b>。</nobr></p><p>請檢查此資料夾真的存在且有權限移除。</p></translation>
     </message>
     <message>
         <source><p>Cannot create the machine folder <b>%1</b> in the parent folder <nobr><b>%2</b>.</nobr></p><p>This folder already exists and possibly belongs to another machine.</p></source>
-        <translation><p>無法在上層資料夾 <b>%2</b> 建立機器資料夾 <nobr><b>%1</b>。</nobr></p><p>此資料夾已經存在和可能屬於另一個機器。</p></translation>
+        <translation><p>無法在上層資料夾 <b>%2</b> 建立虛擬機器資料夾 <nobr><b>%1</b>。</nobr></p><p>此資料夾已經存在和可能屬於另一個虛擬機器。</p></translation>
     </message>
     <message>
         <source><p>Are you sure you want to discard the saved state of the following virtual machines?</p><p><b>%1</b></p><p>This operation is equivalent to resetting or powering off the machine without doing a proper shutdown of the guest OS.</p></source>
@@ -5484,7 +5484,7 @@
     </message>
     <message>
         <source><p>You are trying to move machine <nobr><b>%1</b></nobr> to group <nobr><b>%2</b></nobr> which already have sub-group <nobr><b>%1</b></nobr>.</p><p>Please resolve this name-conflict and try again.</p></source>
-        <translation><p>您嘗試移動機器 <nobr><b>%1</b></nobr> 到群組 <nobr><b>%2</b></nobr>,其已經有子群組 <nobr><b>%1</b></nobr>。</p><p>請解決此名稱衝突並重試。</p></translation>
+        <translation><p>您嘗試移動虛擬機器 <nobr><b>%1</b></nobr> 到群組 <nobr><b>%2</b></nobr>,其已經有子群組 <nobr><b>%1</b></nobr>。</p><p>請解決此名稱衝突並重試。</p></translation>
     </message>
     <message>
         <source><p>You are trying to move group <nobr><b>%1</b></nobr> to group <nobr><b>%2</b></nobr> which already have another item with the same name.</p><p>Would you like to automatically rename it?</p></source>
@@ -5508,7 +5508,7 @@
     </message>
     <message>
         <source><p>Could not start the machine <b>%1</b> because the following physical network interfaces were not found:</p><p><b>%2</b></p><p>You can either change the machine's network settings or stop the machine.</p></source>
-        <translation><p>無法啟動機器 <b>%1</b>,因為找不到以下實體網路介面:</p><p><b>%2</b></p><p>您可以變更機器的網路設定或停止機器。</p></translation>
+        <translation><p>無法啟動虛擬機器 <b>%1</b>,因為找不到以下實體網路介面:</p><p><b>%2</b></p><p>您可以變更虛擬機器的網路設定或停止虛擬機器。</p></translation>
     </message>
     <message>
         <source>Change Network Settings</source>
@@ -5596,7 +5596,7 @@
     </message>
     <message>
         <source><p>Unable to eject the virtual optical disk <nobr><b>%1</b></nobr> from the machine <b>%2</b>.</p></source>
-        <translation><p>無法從機器 <b>%2</b> 退出虛擬光碟 <nobr><b>%1</b></nobr>。</p></translation>
+        <translation><p>無法從虛擬機器 <b>%2</b> 退出虛擬光碟 <nobr><b>%1</b></nobr>。</p></translation>
     </message>
     <message>
         <source><p>Would you like to try to force ejection of this disk?</p></source>
@@ -5608,7 +5608,7 @@
     </message>
     <message>
         <source><p>Unable to eject the virtual floppy disk <nobr><b>%1</b></nobr> from the machine <b>%2</b>.</p></source>
-        <translation><p>無法從機器 <b>%2</b> 退出虛擬軟碟 <nobr><b>%1</b></nobr>。</p></translation>
+        <translation><p>無法從虛擬機器 <b>%2</b> 退出虛擬軟碟 <nobr><b>%1</b></nobr>。</p></translation>
     </message>
     <message numerus="yes">
         <source><p>The %n following virtual machine(s) are currently in a saved state: <b>%1</b></p><p>If you continue the runtime state of the exported machine(s) will be discarded. The other machine(s) will not be changed.</p></source>
@@ -5724,7 +5724,7 @@
     </message>
     <message>
         <source>Failed to set the extra data for key <i>%1</i> of machine <i>%2</i> to value <i>{%3}</i>.</source>
-        <translation>設定機器 <i>%2</i> 機碼<i>%1</i> 的額外資料為數值 <i>{%3}</i> 失敗。</translation>
+        <translation>設定虛擬機器 <i>%2</i> 機碼<i>%1</i> 的額外資料為數值 <i>{%3}</i> 失敗。</translation>
     </message>
     <message>
         <source>Failed to save the settings.</source>
@@ -5740,23 +5740,23 @@
     </message>
     <message>
         <source>Failed to attach the optical drive (<nobr><b>%1</b></nobr>) to the slot <i>%2</i> of the machine <b>%3</b>.</source>
-        <translation>在機器 <b>%3</b> 的插槽 <i>%2</i> 附加光碟機 (<nobr><b>%1</b></nobr>) 失敗。</translation>
+        <translation>在虛擬機器 <b>%3</b> 的插槽 <i>%2</i> 附加光碟機 (<nobr><b>%1</b></nobr>) 失敗。</translation>
     </message>
     <message>
         <source>Failed to attach the floppy drive (<nobr><b>%1</b></nobr>) to the slot <i>%2</i> of the machine <b>%3</b>.</source>
-        <translation>在機器 <b>%3</b> 的插槽 <i>%2</i> 附加軟碟機 (<nobr><b>%1</b></nobr>) 失敗。</translation>
+        <translation>在虛擬機器 <b>%3</b> 的插槽 <i>%2</i> 附加軟碟機 (<nobr><b>%1</b></nobr>) 失敗。</translation>
     </message>
     <message>
         <source>Failed to detach the optical drive (<nobr><b>%1</b></nobr>) from the slot <i>%2</i> of the machine <b>%3</b>.</source>
-        <translation>在機器 <b>%3</b> 的插槽 <i>%2</i> 分離光碟機 (<nobr><b>%1</b></nobr>) 失敗。</translation>
+        <translation>在虛擬機器 <b>%3</b> 的插槽 <i>%2</i> 分離光碟機 (<nobr><b>%1</b></nobr>) 失敗。</translation>
     </message>
     <message>
         <source>Failed to detach the floppy drive (<nobr><b>%1</b></nobr>) from the slot <i>%2</i> of the machine <b>%3</b>.</source>
-        <translation>在機器 <b>%3</b> 的插槽 <i>%2</i> 分離軟碟機 (<nobr><b>%1</b></nobr>) 失敗。</translation>
+        <translation>在虛擬機器 <b>%3</b> 的插槽 <i>%2</i> 分離軟碟機 (<nobr><b>%1</b></nobr>) 失敗。</translation>
     </message>
     <message>
         <source><p>Could not insert the <b>VirtualBox Guest Additions</b> disk image file into the virtual machine <b>%1</b>, as the machine has no optical drives. Please add a drive using the storage page of the virtual machine settings window.</p></source>
-        <translation><p>無法放入 <b>VirtualBox Guest Additions</b> 磁碟映像檔案到虛擬機器 <b>%1</b>,因為機器沒有光碟機。 請使用虛擬機器設定視窗的 [存放裝置] 頁面加入磁碟機。</p></translation>
+        <translation><p>無法放入 <b>VirtualBox Guest Additions</b> 磁碟映像檔案到虛擬機器 <b>%1</b>,因為虛擬機器沒有光碟機。 請使用虛擬機器設定視窗的 [存放裝置] 頁面加入磁碟機。</p></translation>
     </message>
     <message>
         <source><p>The <b>VirtualBox Guest Additions</b> disk image file has been successfully downloaded from <nobr><a href="%1">%1</a></nobr> and saved locally as <nobr><b>%2</b>.</nobr></p><p>Do you wish to register this disk image file and insert it into the virtual optical drive?</p></source>
@@ -5768,11 +5768,11 @@
     </message>
     <message>
         <source><p>A critical error has occurred while running the virtual machine and the machine execution has been stopped.</p><p>For help, please see the Community section on <a href=https://www.virtualbox.org>https://www.virtualbox.org</a> or your support contract. Please provide the contents of the log file <tt>VBox.log</tt> and the image file <tt>VBox.png</tt>, which you can find in the <nobr><b>%1</b></nob [...]
-        <translation><p>執行虛擬機器時發生關鍵錯誤並已停止機器執行。</p><p>有關協助,請查閱 <a href=https://www.virtualbox.org>https://www.virtualbox.org</a> 的 Community 區或您的技術支援。 請提供日誌檔 <tt>VBox.log</tt> 的內容和圖像檔 <tt>VBox.png</tt>,您可以在 <nobr><b>%1</b></nobr> 目錄找到,以及說明您正在做什麼時發生此錯誤。 請注意,您也可以從 VirtualBox 主視窗的<b>機器</b>功能表選取<b>顯示紀錄</b>存取以上檔案。</p><p>如果您要關閉機器按下 [<b>確定</b>] 或如果您要保留它作為除錯按下 [<b>忽略 [...]
+        <translation><p>執行虛擬機器時發生關鍵錯誤並已停止虛擬機器執行。</p><p>有關協助,請查閱 <a href=https://www.virtualbox.org>https://www.virtualbox.org</a> 的 Community 區或您的技術支援。 請提供日誌檔 <tt>VBox.log</tt> 的內容和圖像檔 <tt>VBox.png</tt>,您可以在 <nobr><b>%1</b></nobr> 目錄找到,以及說明您正在做什麼時發生此錯誤。 請注意,您也可以從 VirtualBox 主視窗的<b>虛擬機器</b>功能表選取<b>顯示紀錄</b>存取以上檔案。</p><p>如果您要關閉虛擬機器按下 [<b>確定</b>] 或如果您要保留它作為除錯按下 [<b [...]
     </message>
     <message>
         <source><p>A critical error has occurred while running the virtual machine and the machine execution should be stopped.</p><p>For help, please see the Community section on <a href=https://www.virtualbox.org>https://www.virtualbox.org</a> or your support contract. Please provide the contents of the log file <tt>VBox.log</tt>, which you can find in the virtual machine log directory, as well as a description of what you were doing when this  [...]
-        <translation><p>執行虛擬機器時發生嚴重錯誤,且需要停止執行虛擬機器。</p><p>請查看在 <a href=https://www.virtualbox.org>https://www.virtualbox.org</a> 的 Community 區或您的技術支援合約取得協助。 請提供日誌檔案 <tt>VBox.log</tt> 的內容。您可以在虛擬機器的 log 目錄找到,以及發生此錯誤時的動作描述。 請注意,您也可以從 VirtualBox 主視窗的 [<b>機器</b>] 功能表選取 [<b>顯示日誌</b>] 來存取上述檔案。</p><p>按下 [<b>確定</b>] 以關閉機器。</p></translation>
+        <translation><p>執行虛擬機器時發生嚴重錯誤,且需要停止執行虛擬機器。</p><p>請查看在 <a href=https://www.virtualbox.org>https://www.virtualbox.org</a> 的 Community 區或您的技術支援合約取得協助。 請提供日誌檔案 <tt>VBox.log</tt> 的內容。您可以在虛擬機器的 log 目錄找到,以及發生此錯誤時的動作描述。 請注意,您也可以從 VirtualBox 主視窗的 [<b>虛擬機器</b>] 功能表選取 [<b>顯示日誌</b>] 來存取上述檔案。</p><p>按下 [<b>確定</b>] 以關閉虛擬機器。</p></translation>
     </message>
     <message>
         <source><p>A new version of VirtualBox has been released! Version <b>%1</b> is available at <a href="https://www.virtualbox.org/">virtualbox.org</a>.</p><p>You can download this version using the link:</p><p><a href=%2>%3</a></p></source>
@@ -5828,7 +5828,7 @@
     </message>
     <message>
         <source>You are about to create a new virtual machine without a hard disk. You will not be able to install an operating system on the machine until you add one. In the mean time you will only be able to start the machine using a virtual optical disk or from the network.</source>
-        <translation>您即將建立新的虛擬機器不含硬碟。 除非加入一個硬碟否則將無法安裝作業系統。 同時,您將只能使用虛擬光碟或從網路啟動機器。</translation>
+        <translation>您即將建立新的虛擬機器不含硬碟。 除非加入一個硬碟否則將無法安裝作業系統。 同時,您將只能使用虛擬光碟或從網路啟動虛擬機器。</translation>
     </message>
     <message>
         <source><p>The virtual machine window will be now switched to <b>full-screen</b> mode. You can go back to windowed mode at any time by pressing <b>%1</b>.</p><p>Note that the <i>Host</i> key is currently defined as <b>%2</b>.</p><p>Note that the main menu bar is hidden in full-screen mode. You can access it by pressing <b>Host+Home</b>.</p></source>
@@ -5857,27 +5857,27 @@
     <message>
         <source>Delete</source>
         <comment>extension pack</comment>
-        <translation type="unfinished">刪除</translation>
+        <translation>刪除</translation>
     </message>
     <message>
         <source>Do you want to delete the downloaded file <nobr><b>%1</b></nobr>?</source>
-        <translation type="unfinished"></translation>
+        <translation>您要刪除下載的檔案 <nobr><b>%1</b></nobr> 嗎?</translation>
     </message>
     <message>
         <source>Do you want to delete following list of files <nobr><b>%1</b></nobr>?</source>
-        <translation type="unfinished"></translation>
+        <translation>您要刪除以下檔案 <nobr><b>%1</b></nobr> 的清單嗎?</translation>
     </message>
     <message>
         <source><p>The reason for this error are most likely wrong permissions of the IPC daemon socket due to an installation problem. Please check the permissions of <font color=blue>'/tmp'</font> and <font color=blue>'/tmp/.vbox-*-ipc/'</font></p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>這個錯誤的原因很可能是因為安裝問題的 IPC daemon socket 權限錯誤。 請檢查 <font color=blue>'/tmp'</font> 和 <font color=blue>'/tmp/.vbox-*-ipc/'</font>的權限</p></translation>
     </message>
     <message>
         <source><p>The <b>VirtualBox Guest Additions</b> disk image file has been successfully downloaded from <nobr><a href="%1">%1</a></nobr> and saved locally as <nobr><b>%2</b>, </nobr>but the SHA-256 checksum verification failed.</p><p>Please do the download, installation and verification manually.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p><b>VirtualBox Guest Additions</b> 磁碟映像檔從 <nobr><a href="%1">%1</a></nobr> 下載成功並以 <nobr><b>%2</b> 儲存在本機,</nobr>但 SHA-256 校驗碼驗證失敗。</p><p>請進行手動下載、安裝和驗證。</p></translation>
     </message>
     <message>
         <source><p>The <b><nobr>%1</nobr></b> has been successfully downloaded from <nobr><a href="%2">%2</a></nobr> and saved locally as <nobr><b>%3</b>, </nobr>but the SHA-256 checksum verification failed.</p><p>Please do the download, installation and verification manually.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p><b>%1</b> 從 <nobr><a href="%2">%2</a></nobr> 下載成功並以 <nobr><b>%3</b> 儲存在本機,</nobr>但 SHA-256 校驗碼驗證失敗。</p><p>請進行手動下載、安裝和驗證。</p></translation>
     </message>
 </context>
 <context>
@@ -6429,7 +6429,7 @@
     </message>
     <message>
         <source>&Save the machine state</source>
-        <translation>儲存機器狀態(&S)</translation>
+        <translation>儲存虛擬機器狀態(&S)</translation>
     </message>
     <message>
         <source><p>Sends the ACPI Power Button press event to the virtual machine.</p><p>Normally, the guest operating system running inside the virtual machine will detect this event and perform a clean shutdown procedure. This is a recommended way to turn off the virtual machine because all applications running inside it will get a chance to save their data and state.</p><p>If the machine doesn't respond to this action then the guest operating system  [...]
@@ -6445,15 +6445,15 @@
     </message>
     <message>
         <source>&Power off the machine</source>
-        <translation>機器關機(&P)</translation>
+        <translation>虛擬機器關機(&P)</translation>
     </message>
     <message>
         <source>Restore the machine state stored in the current snapshot</source>
-        <translation>還原儲存在目前快照的機器狀態</translation>
+        <translation>還原儲存在目前快照的虛擬機器狀態</translation>
     </message>
     <message>
         <source><p>When checked, the machine will be returned to the state stored in the current snapshot after it is turned off. This is useful if you are sure that you want to discard the results of your last sessions and start again at that snapshot.</p></source>
-        <translation><p>勾選時,機器將在關閉之後返回目前快照中儲存的狀態。 這是有用的,如果您確認要放棄上次的工作階段結果並再次啟動該快照。</p></translation>
+        <translation><p>勾選時,虛擬機器將在關閉之後返回目前快照中儲存的狀態。 這是有用的,如果您確認要放棄上次的工作階段結果並再次啟動該快照。</p></translation>
     </message>
     <message>
         <source>&Restore current snapshot '%1'</source>
@@ -6764,7 +6764,7 @@
     </message>
     <message>
         <source><p>A <b>dynamically allocated</b> hard disk file will only use space on your physical hard disk as it fills up (up to a maximum <b>fixed size</b>), although it will not shrink again automatically when space on it is freed.</p></source>
-        <translation><p><b>動態配置</b>硬碟檔案只使用實體硬碟的空間作為填滿 (直到最大的<b>固定大小</b>) ,雖然有可用空間也不會再次自動伸縮。</p></translation>
+        <translation><p><b>動態配置</b>硬碟檔案只使用實體硬碟的空間作為填滿 (直到最大的<b>固定大小</b>) ,雖然有可用空間也不會再次自動縮小。</p></translation>
     </message>
     <message>
         <source><p>A <b>fixed size</b> hard disk file may take longer to create on some systems but is often faster to use.</p></source>
@@ -6859,23 +6859,23 @@
     </message>
     <message>
         <source><p>Please choose which parts of the snapshot tree should be cloned with the machine.</p></source>
-        <translation><p>請選擇要與機器再製的快照樹部份。</p></translation>
+        <translation><p>請選擇要與虛擬機器再製的快照樹部份。</p></translation>
     </message>
     <message>
         <source><p>If you choose <b>Current machine state</b>, the new machine will reflect the current state of the original machine and will have no snapshots.</p></source>
-        <translation><p>如果您選擇 [<b>目前機器狀態</b>],新機器將反映原始機器的目前狀態,且不會有任何快照。</p></translation>
+        <translation><p>如果您選擇 [<b>目前虛擬機器狀態</b>],新虛擬機器將反映原始虛擬機器的目前狀態,且不會有任何快照。</p></translation>
     </message>
     <message>
         <source><p>If you choose <b>Current snapshot tree branch</b>, the new machine will reflect the current state of the original machine and will have matching snapshots for all snapshots in the tree branch starting at the current state in the original machine.</p></source>
-        <translation><p>如果您選擇 [<b>目前快照樹分支</b>],新機器將反映原始機器的目前狀態,且有原始機器的目前狀態開始符合快照樹分支的所有快照。</p></translation>
+        <translation><p>如果您選擇 [<b>目前快照樹分支</b>],新虛擬機器將反映原始虛擬機器的目前狀態,且有原始虛擬機器的目前狀態開始符合快照樹分支的所有快照。</p></translation>
     </message>
     <message>
         <source><p>If you choose <b>Everything</b>, the new machine will reflect the current state of the original machine and will have matching snapshots for all snapshots in the original machine.</p></source>
-        <translation><p>如果您選擇 [<b>所有</b>],新機器將反映原始機器的目前狀態,且有原始機器的所有快照的符合快照。</p></translation>
+        <translation><p>如果您選擇 [<b>所有</b>],新虛擬機器將反映原始虛擬機器的目前狀態,且有原始虛擬機器的所有快照的符合快照。</p></translation>
     </message>
     <message>
         <source>Current &machine state</source>
-        <translation>目前機器狀態(&M)</translation>
+        <translation>目前虛擬機器狀態(&M)</translation>
     </message>
     <message>
         <source>Current &snapshot tree branch</source>
@@ -6887,7 +6887,7 @@
     </message>
     <message>
         <source>New machine &name</source>
-        <translation>新機器名稱(&N)</translation>
+        <translation>新虛擬機器名稱(&N)</translation>
     </message>
     <message>
         <source>&Full Clone</source>
@@ -7237,7 +7237,7 @@
     </message>
     <message>
         <source><p>A <b>dynamically allocated</b> hard disk file will only use space on your physical hard disk as it fills up (up to a maximum <b>fixed size</b>), although it will not shrink again automatically when space on it is freed.</p></source>
-        <translation><p><b>動態配置</b>硬碟檔案只使用實體硬碟的空間作為填滿 (直到最大的<b>固定大小</b>) ,雖然有可用空間也不會再次自動伸縮。</p></translation>
+        <translation><p><b>動態配置</b>硬碟檔案只使用實體硬碟的空間作為填滿 (直到最大的<b>固定大小</b>) ,雖然有可用空間也不會再次自動縮小。</p></translation>
     </message>
     <message>
         <source><p>A <b>fixed size</b> hard disk file may take longer to create on some systems but is often faster to use.</p></source>
@@ -7318,14 +7318,6 @@
         <source>Choose a virtual hard disk file...</source>
         <translation>選擇虛擬硬碟檔案...</translation>
     </message>
-    <message>
-        <source><p><nobr>Holds the name or full path to the virtual machine folder you are about to create.</nobr></p></source>
-        <translation type="vanished"><p><nobr>保留您能建立到虛擬機器資料夾的名稱或完整路徑。</nobr></p></translation>
-    </message>
-    <message>
-        <source><p><nobr>You are about to create the virtual machine in the following folder:</nobr><br><nobr><b>%1</b></nobr></p></source>
-        <translation type="vanished"><p><nobr>您即將在以下資料夾建立虛擬機器:</nobr><br><nobr><b>%1</b></nobr></p></translation>
-    </message>
 </context>
 <context>
     <name>VBoxAboutDlg</name>
@@ -8106,7 +8098,7 @@
     </message>
     <message>
         <source>You can also change this while the machine is running.</source>
-        <translation>您也可以在機器正在執行時變更。</translation>
+        <translation>您也可以在虛擬機器正在執行時變更。</translation>
     </message>
     <message>
         <source><b>No disk image files available</b></source>
@@ -8935,7 +8927,7 @@
     </message>
     <message>
         <source>Release the selected disk image file by detaching it from the machines</source>
-        <translation>從機器分離以釋放選取的磁碟映像檔案</translation>
+        <translation>從虛擬機器分離以釋放選取的磁碟映像檔案</translation>
     </message>
     <message>
         <source>Refresh the list of disk image files</source>
diff --git a/src/VBox/Frontends/VirtualBox/nls/qt_el.ts b/src/VBox/Frontends/VirtualBox/nls/qt_el.ts
index a494b08..34de9ad 100644
--- a/src/VBox/Frontends/VirtualBox/nls/qt_el.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/qt_el.ts
@@ -29,7 +29,7 @@
     </message>
     <message>
         <source>About %1</source>
-        <translatorcomment>2016-11-10</translatorcomment>
+        <translatorcomment>2017-03-13</translatorcomment>
         <translation>Πληροφορίες για το %1</translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/qt_zh_TW.ts b/src/VBox/Frontends/VirtualBox/nls/qt_zh_TW.ts
index 82cd3ca..0fe9f24 100644
--- a/src/VBox/Frontends/VirtualBox/nls/qt_zh_TW.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/qt_zh_TW.ts
@@ -515,7 +515,7 @@ to
     </message>
     <message>
         <source>&Redo</source>
-        <translation>重作(&R)</translation>
+        <translation>重做(&R)</translation>
     </message>
     <message>
         <source>Cu&t</source>
@@ -1942,7 +1942,7 @@ Do you want to delete it anyway?</source>
     </message>
     <message>
         <source>&Redo</source>
-        <translation>重作(&R)</translation>
+        <translation>重做(&R)</translation>
     </message>
     <message>
         <source>Cu&t</source>
@@ -2663,15 +2663,15 @@ Do you want to delete it anyway?</source>
     </message>
     <message>
         <source>Orientation</source>
-        <translation>橫向</translation>
+        <translation>方向</translation>
     </message>
     <message>
         <source>Portrait</source>
-        <translation>橫向</translation>
+        <translation>直向</translation>
     </message>
     <message>
         <source>Landscape</source>
-        <translation>直向</translation>
+        <translation>橫向</translation>
     </message>
     <message>
         <source>Reverse landscape</source>
@@ -3916,7 +3916,7 @@ Please choose a different file name.</source>
     </message>
     <message>
         <source>&Redo</source>
-        <translation>重作(&R)</translation>
+        <translation>重做(&R)</translation>
     </message>
     <message>
         <source>Cu&t</source>
@@ -3969,7 +3969,7 @@ Please choose a different file name.</source>
     </message>
     <message>
         <source>Redo</source>
-        <translation>重作</translation>
+        <translation>重做</translation>
     </message>
 </context>
 <context>
@@ -3987,7 +3987,7 @@ Please choose a different file name.</source>
     </message>
     <message>
         <source>Redo</source>
-        <translation>重作</translation>
+        <translation>重做</translation>
     </message>
 </context>
 <context>
@@ -4118,17 +4118,17 @@ Please choose a different file name.</source>
     <message>
         <source>Open Image</source>
         <comment>Open Image in New Window context menu item</comment>
-        <translation>開啟映像</translation>
+        <translation>開啟圖片</translation>
     </message>
     <message>
         <source>Save Image</source>
         <comment>Download Image context menu item</comment>
-        <translation>儲存映像</translation>
+        <translation>儲存圖片</translation>
     </message>
     <message>
         <source>Copy Image</source>
         <comment>Copy Link context menu item</comment>
-        <translation>複製映像</translation>
+        <translation>複製圖片</translation>
     </message>
     <message>
         <source>Open Frame</source>
diff --git a/src/VBox/GuestHost/OpenGL/spu_loader/spuload.c b/src/VBox/GuestHost/OpenGL/spu_loader/spuload.c
index 845d717..8930ef9 100644
--- a/src/VBox/GuestHost/OpenGL/spu_loader/spuload.c
+++ b/src/VBox/GuestHost/OpenGL/spu_loader/spuload.c
@@ -96,6 +96,12 @@ SPU * crSPULoad( SPU *child, int id, char *name, char *dir, void *server )
         the_spu->privatePtr = NULL;
         path = __findDLL( name, dir );
         the_spu->dll = crDLLOpen( path, 0/*resolveGlobal*/ );
+        if (the_spu->dll == NULL)
+        {
+                crError("Couldn't load the DLL \"%s\"!\n", path);
+                crFree(the_spu);
+                return NULL;
+        }
 #if defined(DEBUG_misha) && defined(RT_OS_WINDOWS)
         crDbgCmdSymLoadPrint(path, the_spu->dll->hinstLib);
 #endif
diff --git a/src/VBox/GuestHost/OpenGL/util/dll.c b/src/VBox/GuestHost/OpenGL/util/dll.c
index bda10da..9ce5bd1 100644
--- a/src/VBox/GuestHost/OpenGL/util/dll.c
+++ b/src/VBox/GuestHost/OpenGL/util/dll.c
@@ -290,6 +290,8 @@ CRDLL *crDLLOpen( const char *dllname, int resolveGlobal )
 			crDebug( "DLL_ERROR(%s): %s", dllname, dll_err );
 		}
 		crError( "DLL Loader couldn't find/open %s", dllname );
+                crFree(dll);
+                dll = NULL;
 	}
 	return dll;
 }
diff --git a/src/VBox/HostDrivers/linux/Makefile b/src/VBox/HostDrivers/linux/Makefile
index 1c0ad4b..a034137 100644
--- a/src/VBox/HostDrivers/linux/Makefile
+++ b/src/VBox/HostDrivers/linux/Makefile
@@ -46,7 +46,7 @@ all:
 	        cp vboxdrv/Module.symvers vboxnetflt; \
 	    fi; \
 	    echo "*** Building 'vboxnetflt' module ***"; \
-	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxnetflt; \
+	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxnetflt || exit 1; \
 	    cp vboxnetflt/vboxnetflt.ko .; \
 	    echo; \
 	fi
@@ -55,7 +55,7 @@ all:
 	        cp vboxdrv/Module.symvers vboxnetadp; \
 	    fi; \
 	    echo "*** Building 'vboxnetadp' module ***"; \
-	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxnetadp; \
+	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxnetadp || exit 1; \
 	    cp vboxnetadp/vboxnetadp.ko .; \
 	    echo; \
 	fi
@@ -64,7 +64,7 @@ all:
 	        cp vboxdrv/Module.symvers vboxpci; \
 	    fi; \
 	    echo "*** Building 'vboxpci' module ***"; \
-	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxpci; \
+	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxpci || exit 1; \
 	    cp vboxpci/vboxpci.ko .; \
 	    echo; \
 	fi
diff --git a/src/VBox/HostServices/SharedFolders/Makefile.kmk b/src/VBox/HostServices/SharedFolders/Makefile.kmk
index a4cf32e..f1df926 100644
--- a/src/VBox/HostServices/SharedFolders/Makefile.kmk
+++ b/src/VBox/HostServices/SharedFolders/Makefile.kmk
@@ -40,6 +40,7 @@ VBoxSharedFolders_SOURCES = \
 	shflhandle.cpp \
 	vbsf.cpp \
 	vbsfpath.cpp \
+	vbsfpathabs.cpp \
 	mappings.cpp
 VBoxSharedFolders_SOURCES.win = \
 	VBoxSharedFolders.rc
diff --git a/src/VBox/HostServices/SharedFolders/mappings.cpp b/src/VBox/HostServices/SharedFolders/mappings.cpp
index 4b666ba..d40ecdb 100644
--- a/src/VBox/HostServices/SharedFolders/mappings.cpp
+++ b/src/VBox/HostServices/SharedFolders/mappings.cpp
@@ -19,8 +19,10 @@
 #endif
 
 #include "mappings.h"
+#include "vbsfpath.h"
 #include <iprt/alloc.h>
 #include <iprt/assert.h>
+#include <iprt/path.h>
 #include <iprt/string.h>
 
 #ifdef UNITTEST
@@ -223,7 +225,13 @@ int vbsfMappingsAdd(const char *pszFolderName, PSHFLSTRING pMapName,
     {
         if (FolderMapping[i].fValid == false)
         {
-            FolderMapping[i].pszFolderName = RTStrDup(pszFolderName);
+            /* Make sure the folder name is an absolute path, otherwise we're
+               likely to get into trouble with buffer sizes in vbsfPathGuestToHost. */
+            char szAbsFolderName[RTPATH_MAX];
+            int rc = vbsfPathAbs(NULL, pszFolderName, szAbsFolderName, sizeof(szAbsFolderName));
+            AssertRCReturn(rc, rc);
+
+            FolderMapping[i].pszFolderName = RTStrDup(szAbsFolderName);
             if (!FolderMapping[i].pszFolderName)
             {
                 return VERR_NO_MEMORY;
@@ -252,16 +260,8 @@ int vbsfMappingsAdd(const char *pszFolderName, PSHFLSTRING pMapName,
             /* Check if the host file system is case sensitive */
             RTFSPROPERTIES prop;
             prop.fCaseSensitive = false; /* Shut up MSC. */
-            char *pszAsciiRoot;
-
-            int rc = RTStrUtf8ToCurrentCP(&pszAsciiRoot, FolderMapping[i].pszFolderName);
-            if (RT_SUCCESS(rc))
-            {
-                rc = RTFsQueryProperties(pszAsciiRoot, &prop);
-                AssertRC(rc);
-                RTStrFree(pszAsciiRoot);
-            }
-
+            rc = RTFsQueryProperties(FolderMapping[i].pszFolderName, &prop);
+            AssertRC(rc);
             FolderMapping[i].fHostCaseSensitive = RT_SUCCESS(rc) ? prop.fCaseSensitive : false;
             vbsfRootHandleAdd(i);
             break;
diff --git a/src/VBox/HostServices/SharedFolders/testcase/Makefile.kmk b/src/VBox/HostServices/SharedFolders/testcase/Makefile.kmk
index 0901a7b..798476f 100644
--- a/src/VBox/HostServices/SharedFolders/testcase/Makefile.kmk
+++ b/src/VBox/HostServices/SharedFolders/testcase/Makefile.kmk
@@ -63,6 +63,7 @@ tstSharedFolderService_SOURCES  = \
     ../mappings.cpp \
     ../service.cpp \
     ../shflhandle.cpp \
+    ../vbsfpathabs.cpp \
     ../vbsfpath.cpp \
     ../vbsf.cpp
 tstSharedFolderService_LDFLAGS.darwin = \
diff --git a/src/VBox/HostServices/SharedFolders/testcase/tstSharedFolderService.cpp b/src/VBox/HostServices/SharedFolders/testcase/tstSharedFolderService.cpp
index a574396..4783987 100644
--- a/src/VBox/HostServices/SharedFolders/testcase/tstSharedFolderService.cpp
+++ b/src/VBox/HostServices/SharedFolders/testcase/tstSharedFolderService.cpp
@@ -36,6 +36,8 @@
 #include <iprt/symlink.h>
 #include <iprt/stream.h>
 #include <iprt/test.h>
+#include <iprt/string.h>
+#include <iprt/utf16.h>
 
 #include "teststubs.h"
 
@@ -115,6 +117,7 @@ static void bufferFromPath(void *pvDest, size_t cb, const char *pcszSrc)
 /*********************************************************************************************************************************
 *   Stub functions and data                                                                                                      *
 *********************************************************************************************************************************/
+static bool g_fFailIfNotLowercase = false;
 
 static PRTDIR g_testRTDirClosepDir;
 
@@ -133,19 +136,41 @@ extern int testRTDirCreate(const char *pszPath, RTFMODE fMode, uint32_t fCreate)
     RT_NOREF2(fMode, fCreate);
  /* RTPrintf("%s: pszPath=%s, fMode=0x%llx\n", __PRETTY_FUNCTION__, pszPath,
              LLUIFY(fMode)); */
+    if (g_fFailIfNotLowercase && !RTStrIsLowerCased(strpbrk(pszPath, "/\\")))
+        return VERR_FILE_NOT_FOUND;
     ARRAY_FROM_PATH(testRTDirCreatePath, pszPath);
     return 0;
 }
 
 static char testRTDirOpenName[256];
+static struct TESTDIRHANDLE
+{
+    int iEntry;
+    int iDir;
+} g_aTestDirHandles[4];
+static int g_iNextDirHandle = 0;
 static PRTDIR testRTDirOpenpDir;
 
 extern int testRTDirOpen(PRTDIR *ppDir, const char *pszPath)
 {
  /* RTPrintf("%s: pszPath=%s\n", __PRETTY_FUNCTION__, pszPath); */
+    if (g_fFailIfNotLowercase && !RTStrIsLowerCased(strpbrk(pszPath, "/\\")))
+        return VERR_FILE_NOT_FOUND;
     ARRAY_FROM_PATH(testRTDirOpenName, pszPath);
     *ppDir = testRTDirOpenpDir;
     testRTDirOpenpDir = 0;
+    if (!*ppDir && g_fFailIfNotLowercase)
+        *ppDir = (PRTDIR)&g_aTestDirHandles[g_iNextDirHandle++ % RT_ELEMENTS(g_aTestDirHandles)];
+    if (*ppDir)
+    {
+        struct TESTDIRHANDLE *pRealDir = (struct TESTDIRHANDLE *)*ppDir;
+        pRealDir->iEntry = 0;
+        pRealDir->iDir   = 0;
+        const char *pszSlash = pszPath - 1;
+        while ((pszSlash = strpbrk(pszSlash + 1, "\\/")) != NULL)
+            pRealDir->iDir += 1;
+        /*RTPrintf("opendir %s = %d \n", pszPath, pRealDir->iDir);*/
+    }
     return VINF_SUCCESS;
 }
 
@@ -153,9 +178,24 @@ extern int testRTDirOpen(PRTDIR *ppDir, const char *pszPath)
 extern int testRTDirOpenFiltered(PRTDIR *ppDir, const char *pszPath, RTDIRFILTER, uint32_t)
 {
  /* RTPrintf("%s: pszPath=%s\n", __PRETTY_FUNCTION__, pszPath); */
+    if (g_fFailIfNotLowercase && !RTStrIsLowerCased(strpbrk(pszPath, "/\\")))
+        return VERR_FILE_NOT_FOUND;
     ARRAY_FROM_PATH(testRTDirOpenName, pszPath);
     *ppDir = testRTDirOpenpDir;
     testRTDirOpenpDir = 0;
+    if (!*ppDir && g_fFailIfNotLowercase)
+        *ppDir = (PRTDIR)&g_aTestDirHandles[g_iNextDirHandle++ % RT_ELEMENTS(g_aTestDirHandles)];
+    if (*ppDir)
+    {
+        struct TESTDIRHANDLE *pRealDir = (struct TESTDIRHANDLE *)*ppDir;
+        pRealDir->iEntry = 0;
+        pRealDir->iDir   = 0;
+        const char *pszSlash = pszPath - 1;
+        while ((pszSlash = strpbrk(pszSlash + 1, "\\/")) != NULL)
+            pRealDir->iDir += 1;
+        pRealDir->iDir -= 1;
+        /*RTPrintf("openfiltered %s = %d\n", pszPath, pRealDir->iDir);*/
+    }
     return VINF_SUCCESS;
 }
 
@@ -176,7 +216,8 @@ extern int testRTDirQueryInfo(PRTDIR pDir, PRTFSOBJINFO pObjInfo, RTFSOBJATTRADD
 
 extern int testRTDirRemove(const char *pszPath)
 {
-    RT_NOREF1(pszPath);
+    if (g_fFailIfNotLowercase && !RTStrIsLowerCased(strpbrk(pszPath, "/\\")))
+        return VERR_FILE_NOT_FOUND;
     RTPrintf("%s\n", __PRETTY_FUNCTION__);
     return 0;
 }
@@ -191,6 +232,41 @@ extern int testRTDirReadEx(PRTDIR pDir, PRTDIRENTRYEX pDirEntry, size_t *pcbDirE
              __PRETTY_FUNCTION__, pDir, pcbDirEntry ? (int) *pcbDirEntry : -1,
              LLUIFY(enmAdditionalAttribs), LLUIFY(fFlags)); */
     g_testRTDirReadExDir = pDir;
+    if (g_fFailIfNotLowercase && pDir)
+    {
+        struct TESTDIRHANDLE *pRealDir = (struct TESTDIRHANDLE *)pDir;
+        if (pRealDir->iDir == 2) /* /test/mapping/ */
+        {
+            if (pRealDir->iEntry == 0)
+            {
+                pRealDir->iEntry++;
+                RT_ZERO(*pDirEntry);
+                pDirEntry->Info.Attr.fMode = RTFS_TYPE_DIRECTORY | RTFS_DOS_DIRECTORY | RTFS_UNIX_IROTH | RTFS_UNIX_IXOTH;
+                pDirEntry->cbName = 4;
+                pDirEntry->cwcShortName = 4;
+                strcpy(pDirEntry->szName, "test");
+                RTUtf16CopyAscii(pDirEntry->wszShortName, RT_ELEMENTS(pDirEntry->wszShortName), "test");
+                /*RTPrintf("readdir: 'test'\n");*/
+                return VINF_SUCCESS;
+            }
+        }
+        else if (pRealDir->iDir == 3) /* /test/mapping/test/ */
+        {
+            if (pRealDir->iEntry == 0)
+            {
+                pRealDir->iEntry++;
+                RT_ZERO(*pDirEntry);
+                pDirEntry->Info.Attr.fMode = RTFS_TYPE_FILE | RTFS_DOS_NT_NORMAL | RTFS_UNIX_IROTH | RTFS_UNIX_IXOTH;
+                pDirEntry->cbName = 4;
+                pDirEntry->cwcShortName = 4;
+                strcpy(pDirEntry->szName, "file");
+                RTUtf16CopyAscii(pDirEntry->wszShortName, RT_ELEMENTS(pDirEntry->wszShortName), "file");
+                /*RTPrintf("readdir: 'file'\n");*/
+                return VINF_SUCCESS;
+            }
+        }
+        /*else RTPrintf("%s: iDir=%d\n", pRealDir->iDir);*/
+    }
     return VERR_NO_MORE_FILES;
 }
 
@@ -225,7 +301,8 @@ extern int  testRTFileClose(RTFILE File)
 
 extern int  testRTFileDelete(const char *pszFilename)
 {
-    RT_NOREF1(pszFilename);
+    if (g_fFailIfNotLowercase && !RTStrIsLowerCased(strpbrk(pszFilename, "/\\")))
+        return VERR_FILE_NOT_FOUND;
     RTPrintf("%s\n", __PRETTY_FUNCTION__);
     return 0;
 }
@@ -266,6 +343,8 @@ extern int  testRTFileOpen(PRTFILE pFile, const char *pszFilename, uint64_t fOpe
              pszFilename, LLUIFY(fOpen)); */
     ARRAY_FROM_PATH(testRTFileOpenName, pszFilename);
     testRTFileOpenFlags = fOpen;
+    if (g_fFailIfNotLowercase && !RTStrIsLowerCased(strpbrk(pszFilename, "/\\")))
+        return VERR_FILE_NOT_FOUND;
     *pFile = testRTFileOpenpFile;
     testRTFileOpenpFile = 0;
     return VINF_SUCCESS;
@@ -407,10 +486,12 @@ extern int testRTFsQuerySizes(const char *pszFsPath, PRTFOFF pcbTotal, RTFOFF *p
 
 extern int testRTPathQueryInfoEx(const char *pszPath, PRTFSOBJINFO pObjInfo, RTFSOBJATTRADD enmAdditionalAttribs, uint32_t fFlags)
 {
-    RT_NOREF3(pszPath, enmAdditionalAttribs, fFlags);
+    RT_NOREF2(enmAdditionalAttribs, fFlags);
  /* RTPrintf("%s: pszPath=%s, enmAdditionalAttribs=0x%x, fFlags=0x%x\n",
              __PRETTY_FUNCTION__, pszPath, (unsigned) enmAdditionalAttribs,
              (unsigned) fFlags); */
+    if (g_fFailIfNotLowercase && !RTStrIsLowerCased(strpbrk(pszPath, "/\\")))
+        return VERR_FILE_NOT_FOUND;
     RT_ZERO(*pObjInfo);
     return VINF_SUCCESS;
 }
@@ -418,12 +499,16 @@ extern int testRTPathQueryInfoEx(const char *pszPath, PRTFSOBJINFO pObjInfo, RTF
 extern int testRTSymlinkDelete(const char *pszSymlink, uint32_t fDelete)
 {
     RT_NOREF2(pszSymlink, fDelete);
+    if (g_fFailIfNotLowercase && !RTStrIsLowerCased(strpbrk(pszSymlink, "/\\")))
+        return VERR_FILE_NOT_FOUND;
     RTPrintf("%s\n", __PRETTY_FUNCTION__);
     return 0;
 }
 
 extern int testRTSymlinkRead(const char *pszSymlink, char *pszTarget, size_t cbTarget, uint32_t fRead)
 {
+    if (g_fFailIfNotLowercase && !RTStrIsLowerCased(strpbrk(pszSymlink, "/\\")))
+        return VERR_FILE_NOT_FOUND;
     RT_NOREF4(pszSymlink, pszTarget, cbTarget, fRead);
     RTPrintf("%s\n", __PRETTY_FUNCTION__);
     return 0;
@@ -501,20 +586,22 @@ void testMappingsAddBadParameters(RTTEST hTest) { RT_NOREF1(hTest); }
 /* Sub-tests for testMappingsRemove(). */
 void testMappingsRemoveBadParameters(RTTEST hTest) { RT_NOREF1(hTest); }
 
-struct TESTSHFLSTRING
+union TESTSHFLSTRING
 {
     SHFLSTRING string;
     char acData[256];
 };
 
-static void fillTestShflString(struct TESTSHFLSTRING *pDest,
+static void fillTestShflString(union TESTSHFLSTRING *pDest,
                                const char *pcszSource)
 {
-    AssertRelease(  strlen(pcszSource) * 2 + 2
+    const size_t cchSource = strlen(pcszSource);
+    AssertRelease(  cchSource * 2 + 2
                   < sizeof(*pDest) - RT_UOFFSETOF(SHFLSTRING, String));
-    pDest->string.u16Length = (uint16_t)(strlen(pcszSource) * sizeof(RTUTF16));
+    pDest->string.u16Length = (uint16_t)(cchSource * sizeof(RTUTF16));
     pDest->string.u16Size   = pDest->string.u16Length + sizeof(RTUTF16);
-    for (unsigned i = 0; i <= pDest->string.u16Length; ++i)
+    /* Copy pcszSource ASCIIZ, including the trailing 0, to the UTF16 pDest->string.String.ucs2. */
+    for (unsigned i = 0; i <= cchSource; ++i)
         pDest->string.String.ucs2[i] = (uint16_t)pcszSource[i];
 }
 
@@ -522,12 +609,13 @@ static SHFLROOT initWithWritableMapping(RTTEST hTest,
                                         VBOXHGCMSVCFNTABLE *psvcTable,
                                         VBOXHGCMSVCHELPERS *psvcHelpers,
                                         const char *pcszFolderName,
-                                        const char *pcszMapping)
+                                        const char *pcszMapping,
+                                        bool fCaseSensitive = true)
 {
     VBOXHGCMSVCPARM aParms[RT_MAX(SHFL_CPARMS_ADD_MAPPING,
                                   SHFL_CPARMS_MAP_FOLDER)];
-    struct TESTSHFLSTRING FolderName;
-    struct TESTSHFLSTRING Mapping;
+    union TESTSHFLSTRING FolderName;
+    union TESTSHFLSTRING Mapping;
     VBOXHGCMCALLHANDLE_TYPEDEF callHandle = { VINF_SUCCESS };
     int rc;
 
@@ -550,7 +638,7 @@ static SHFLROOT initWithWritableMapping(RTTEST hTest,
                                    + Mapping.string.u16Size);
     aParms[1].setUInt32(0);  /* root */
     aParms[2].setUInt32('/');  /* delimiter */
-    aParms[3].setUInt32(1);  /* case sensitive */
+    aParms[3].setUInt32(fCaseSensitive);
     psvcTable->pfnCall(psvcTable->pvService, &callHandle, 0,
                        psvcTable->pvService, SHFL_FN_MAP_FOLDER,
                        SHFL_CPARMS_MAP_FOLDER, aParms);
@@ -567,7 +655,7 @@ static void unmapAndRemoveMapping(RTTEST hTest, VBOXHGCMSVCFNTABLE *psvcTable,
     VBOXHGCMSVCPARM aParms[RT_MAX(SHFL_CPARMS_UNMAP_FOLDER,
                                   SHFL_CPARMS_REMOVE_MAPPING)];
     VBOXHGCMCALLHANDLE_TYPEDEF callHandle = { VINF_SUCCESS };
-    struct TESTSHFLSTRING FolderName;
+    union TESTSHFLSTRING FolderName;
     int rc;
 
     aParms[0].setUInt32(root);
@@ -588,7 +676,7 @@ static int createFile(VBOXHGCMSVCFNTABLE *psvcTable, SHFLROOT Root,
                       SHFLHANDLE *pHandle, SHFLCREATERESULT *pResult)
 {
     VBOXHGCMSVCPARM aParms[SHFL_CPARMS_CREATE];
-    struct TESTSHFLSTRING Path;
+    union TESTSHFLSTRING Path;
     SHFLCREATEPARMS CreateParms;
     VBOXHGCMCALLHANDLE_TYPEDEF callHandle = { VINF_SUCCESS };
 
@@ -671,7 +759,7 @@ static int listDir(VBOXHGCMSVCFNTABLE *psvcTable, SHFLROOT root,
                    uint32_t resumePoint, uint32_t *pcFiles)
 {
     VBOXHGCMSVCPARM aParms[SHFL_CPARMS_LIST];
-    struct TESTSHFLSTRING Path;
+    union TESTSHFLSTRING Path;
     VBOXHGCMCALLHANDLE_TYPEDEF callHandle = { VINF_SUCCESS };
 
     aParms[0].setUInt32(root);
@@ -750,8 +838,9 @@ void testCreateFileSimple(RTTEST hTest)
                     &Result);
     RTTEST_CHECK_RC_OK(hTest, rc);
     RTTEST_CHECK_MSG(hTest,
-                     !strcmp(testRTFileOpenName, "/test/mapping/test/file"),
-                     (hTest, "pszFilename=%s\n", testRTFileOpenName));
+                     !strcmp(&testRTFileOpenName[RTPATH_STYLE == RTPATH_STR_F_STYLE_DOS ? 2 : 0],
+                             "/test/mapping/test/file"),
+                     (hTest, "pszFilename=%s\n", &testRTFileOpenName[RTPATH_STYLE == RTPATH_STR_F_STYLE_DOS ? 2 : 0]));
     RTTEST_CHECK_MSG(hTest, testRTFileOpenFlags == 0x181,
                      (hTest, "fOpen=%llu\n", LLUIFY(testRTFileOpenFlags)));
     RTTEST_CHECK_MSG(hTest, Result == SHFL_FILE_CREATED,
@@ -763,34 +852,72 @@ void testCreateFileSimple(RTTEST hTest)
                      (hTest, "File=%u\n", (uintptr_t)g_testRTFileCloseFile));
 }
 
+void testCreateFileSimpleCaseInsensitive(RTTEST hTest)
+{
+    VBOXHGCMSVCFNTABLE  svcTable;
+    VBOXHGCMSVCHELPERS  svcHelpers;
+    SHFLROOT Root;
+    const RTFILE hcFile = (RTFILE) 0x10000;
+    SHFLCREATERESULT Result;
+    int rc;
+
+    g_fFailIfNotLowercase = true;
+
+    RTTestSub(hTest, "Create file case insensitive");
+    Root = initWithWritableMapping(hTest, &svcTable, &svcHelpers,
+                                   "/test/mapping", "testname", false /*fCaseSensitive*/);
+    testRTFileOpenpFile = hcFile;
+    rc = createFile(&svcTable, Root, "/TesT/FilE", SHFL_CF_ACCESS_READ, NULL,
+                    &Result);
+    RTTEST_CHECK_RC_OK(hTest, rc);
+
+    RTTEST_CHECK_MSG(hTest,
+                     !strcmp(&testRTFileOpenName[RTPATH_STYLE == RTPATH_STR_F_STYLE_DOS ? 2 : 0],
+                             "/test/mapping/test/file"),
+                     (hTest, "pszFilename=%s\n", &testRTFileOpenName[RTPATH_STYLE == RTPATH_STR_F_STYLE_DOS ? 2 : 0]));
+    RTTEST_CHECK_MSG(hTest, testRTFileOpenFlags == 0x181,
+                     (hTest, "fOpen=%llu\n", LLUIFY(testRTFileOpenFlags)));
+    RTTEST_CHECK_MSG(hTest, Result == SHFL_FILE_CREATED,
+                     (hTest, "Result=%d\n", (int) Result));
+    unmapAndRemoveMapping(hTest, &svcTable, Root, "testname");
+    AssertReleaseRC(svcTable.pfnDisconnect(NULL, 0, svcTable.pvService));
+    RTTestGuardedFree(hTest, svcTable.pvService);
+    RTTEST_CHECK_MSG(hTest, g_testRTFileCloseFile == hcFile,
+                     (hTest, "File=%u\n", (uintptr_t)g_testRTFileCloseFile));
+
+    g_fFailIfNotLowercase = false;
+}
+
 void testCreateDirSimple(RTTEST hTest)
 {
     VBOXHGCMSVCFNTABLE  svcTable;
     VBOXHGCMSVCHELPERS  svcHelpers;
     SHFLROOT Root;
-    PRTDIR pcDir = (PRTDIR)0x10000;
+    PRTDIR pDir = (PRTDIR)&g_aTestDirHandles[g_iNextDirHandle++ % RT_ELEMENTS(g_aTestDirHandles)];
     SHFLCREATERESULT Result;
     int rc;
 
     RTTestSub(hTest, "Create directory simple");
     Root = initWithWritableMapping(hTest, &svcTable, &svcHelpers,
                                    "/test/mapping", "testname");
-    testRTDirOpenpDir = pcDir;
+    testRTDirOpenpDir = pDir;
     rc = createFile(&svcTable, Root, "test/dir",
                     SHFL_CF_DIRECTORY | SHFL_CF_ACCESS_READ, NULL, &Result);
     RTTEST_CHECK_RC_OK(hTest, rc);
     RTTEST_CHECK_MSG(hTest,
-                     !strcmp(testRTDirCreatePath, "/test/mapping/test/dir"),
-                     (hTest, "pszPath=%s\n", testRTDirCreatePath));
+                     !strcmp(&testRTDirCreatePath[RTPATH_STYLE == RTPATH_STR_F_STYLE_DOS ? 2 : 0],
+                             "/test/mapping/test/dir"),
+                     (hTest, "pszPath=%s\n", &testRTDirCreatePath[RTPATH_STYLE == RTPATH_STR_F_STYLE_DOS ? 2 : 0]));
     RTTEST_CHECK_MSG(hTest,
-                     !strcmp(testRTDirOpenName, "/test/mapping/test/dir"),
-                     (hTest, "pszFilename=%s\n", testRTDirOpenName));
+                     !strcmp(&testRTDirOpenName[RTPATH_STYLE == RTPATH_STR_F_STYLE_DOS ? 2 : 0],
+                             "/test/mapping/test/dir"),
+                     (hTest, "pszFilename=%s\n", &testRTDirOpenName[RTPATH_STYLE == RTPATH_STR_F_STYLE_DOS ? 2 : 0]));
     RTTEST_CHECK_MSG(hTest, Result == SHFL_FILE_CREATED,
                      (hTest, "Result=%d\n", (int) Result));
     unmapAndRemoveMapping(hTest, &svcTable, Root, "testname");
     AssertReleaseRC(svcTable.pfnDisconnect(NULL, 0, svcTable.pvService));
     RTTestGuardedFree(hTest, svcTable.pvService);
-    RTTEST_CHECK_MSG(hTest, g_testRTDirClosepDir == pcDir, (hTest, "pDir=%p\n", g_testRTDirClosepDir));
+    RTTEST_CHECK_MSG(hTest, g_testRTDirClosepDir == pDir, (hTest, "pDir=%p\n", g_testRTDirClosepDir));
 }
 
 void testReadFileSimple(RTTEST hTest)
@@ -890,7 +1017,7 @@ void testDirListEmpty(RTTEST hTest)
     VBOXHGCMSVCFNTABLE  svcTable;
     VBOXHGCMSVCHELPERS  svcHelpers;
     SHFLROOT Root;
-    PRTDIR pcDir = (PRTDIR)0x10000;
+    PRTDIR pDir = (PRTDIR)&g_aTestDirHandles[g_iNextDirHandle++ % RT_ELEMENTS(g_aTestDirHandles)];
     SHFLHANDLE Handle;
     SHFLDIRINFO DirInfo;
     uint32_t cFiles;
@@ -899,20 +1026,20 @@ void testDirListEmpty(RTTEST hTest)
     RTTestSub(hTest, "List empty directory");
     Root = initWithWritableMapping(hTest, &svcTable, &svcHelpers,
                                    "/test/mapping", "testname");
-    testRTDirOpenpDir = pcDir;
+    testRTDirOpenpDir = pDir;
     rc = createFile(&svcTable, Root, "test/dir",
                     SHFL_CF_DIRECTORY | SHFL_CF_ACCESS_READ, &Handle, NULL);
     RTTEST_CHECK_RC_OK(hTest, rc);
     rc = listDir(&svcTable, Root, Handle, 0, sizeof (SHFLDIRINFO), NULL,
                  &DirInfo, sizeof(DirInfo), 0, &cFiles);
     RTTEST_CHECK_RC(hTest, rc, VERR_NO_MORE_FILES);
-    RTTEST_CHECK_MSG(hTest, g_testRTDirReadExDir == pcDir, (hTest, "Dir=%p\n", g_testRTDirReadExDir));
+    RTTEST_CHECK_MSG(hTest, g_testRTDirReadExDir == pDir, (hTest, "Dir=%p\n", g_testRTDirReadExDir));
     RTTEST_CHECK_MSG(hTest, cFiles == 0,
                      (hTest, "cFiles=%llu\n", LLUIFY(cFiles)));
     unmapAndRemoveMapping(hTest, &svcTable, Root, "testname");
     AssertReleaseRC(svcTable.pfnDisconnect(NULL, 0, svcTable.pvService));
     RTTestGuardedFree(hTest, svcTable.pvService);
-    RTTEST_CHECK_MSG(hTest, g_testRTDirClosepDir == pcDir, (hTest, "pDir=%p\n", g_testRTDirClosepDir));
+    RTTEST_CHECK_MSG(hTest, g_testRTDirClosepDir == pDir, (hTest, "pDir=%p\n", g_testRTDirClosepDir));
 }
 
 void testFSInfoQuerySetFMode(RTTEST hTest)
@@ -923,16 +1050,17 @@ void testFSInfoQuerySetFMode(RTTEST hTest)
     const RTFILE hcFile = (RTFILE) 0x10000;
     const uint32_t fMode = 0660;
     SHFLFSOBJINFO Info;
-    SHFLHANDLE Handle;
     int rc;
 
     RTTestSub(hTest, "Query and set file size");
     Root = initWithWritableMapping(hTest, &svcTable, &svcHelpers,
                                    "/test/mapping", "testname");
+    SHFLHANDLE Handle = SHFL_HANDLE_NIL;
     testRTFileOpenpFile = hcFile;
     rc = createFile(&svcTable, Root, "/test/file", SHFL_CF_ACCESS_READ,
                     &Handle, NULL);
-    RTTEST_CHECK_RC_OK(hTest, rc);
+    RTTEST_CHECK_RC_OK_RETV(hTest, rc);
+
     RT_ZERO(Info);
     testRTFileQueryInfoFMode = fMode;
     rc = sfInformation(&svcTable, Root, Handle, SHFL_INFO_FILE, sizeof(Info),
@@ -959,7 +1087,7 @@ void testFSInfoQuerySetDirATime(RTTEST hTest)
     VBOXHGCMSVCFNTABLE  svcTable;
     VBOXHGCMSVCHELPERS  svcHelpers;
     SHFLROOT Root;
-    const PRTDIR pcDir = (PRTDIR) 0x10000;
+    const PRTDIR pDir = (PRTDIR)&g_aTestDirHandles[g_iNextDirHandle++ % RT_ELEMENTS(g_aTestDirHandles)];
     const int64_t ccAtimeNano = 100000;
     SHFLFSOBJINFO Info;
     SHFLHANDLE Handle;
@@ -968,7 +1096,7 @@ void testFSInfoQuerySetDirATime(RTTEST hTest)
     RTTestSub(hTest, "Query and set directory atime");
     Root = initWithWritableMapping(hTest, &svcTable, &svcHelpers,
                                    "/test/mapping", "testname");
-    testRTDirOpenpDir = pcDir;
+    testRTDirOpenpDir = pDir;
     rc = createFile(&svcTable, Root, "test/dir",
                     SHFL_CF_DIRECTORY | SHFL_CF_ACCESS_READ, &Handle, NULL);
     RTTEST_CHECK_RC_OK(hTest, rc);
@@ -977,7 +1105,7 @@ void testFSInfoQuerySetDirATime(RTTEST hTest)
     rc = sfInformation(&svcTable, Root, Handle, SHFL_INFO_FILE, sizeof(Info),
                        &Info);
     RTTEST_CHECK_RC_OK(hTest, rc);
-    RTTEST_CHECK_MSG(hTest, g_testRTDirQueryInfoDir == pcDir, (hTest, "Dir=%p\n", g_testRTDirQueryInfoDir));
+    RTTEST_CHECK_MSG(hTest, g_testRTDirQueryInfoDir == pDir, (hTest, "Dir=%p\n", g_testRTDirQueryInfoDir));
     RTTEST_CHECK_MSG(hTest, RTTimeSpecGetNano(&Info.AccessTime) == ccAtimeNano,
                      (hTest, "ATime=%llu\n",
                       LLUIFY(RTTimeSpecGetNano(&Info.AccessTime))));
@@ -993,7 +1121,7 @@ void testFSInfoQuerySetDirATime(RTTEST hTest)
     unmapAndRemoveMapping(hTest, &svcTable, Root, "testname");
     AssertReleaseRC(svcTable.pfnDisconnect(NULL, 0, svcTable.pvService));
     RTTestGuardedFree(hTest, svcTable.pvService);
-    RTTEST_CHECK_MSG(hTest, g_testRTDirClosepDir == pcDir, (hTest, "pDir=%p\n", g_testRTDirClosepDir));
+    RTTEST_CHECK_MSG(hTest, g_testRTDirClosepDir == pDir, (hTest, "pDir=%p\n", g_testRTDirClosepDir));
 }
 
 void testFSInfoQuerySetFileATime(RTTEST hTest)
diff --git a/src/VBox/HostServices/SharedFolders/testcase/tstSharedFolderService.h b/src/VBox/HostServices/SharedFolders/testcase/tstSharedFolderService.h
index f85fb80..5de63c4 100644
--- a/src/VBox/HostServices/SharedFolders/testcase/tstSharedFolderService.h
+++ b/src/VBox/HostServices/SharedFolders/testcase/tstSharedFolderService.h
@@ -53,6 +53,7 @@ void testUnmapFolderBadParameters(RTTEST hTest);
 void testCreate(RTTEST hTest);
 /* Sub-tests for testCreate(). */
 void testCreateFileSimple(RTTEST hTest);
+void testCreateFileSimpleCaseInsensitive(RTTEST hTest);
 void testCreateDirSimple(RTTEST hTest);
 void testCreateBadParameters(RTTEST hTest);
 
diff --git a/src/VBox/HostServices/SharedFolders/vbsf.cpp b/src/VBox/HostServices/SharedFolders/vbsf.cpp
index 6af14fb..88b2bc4 100644
--- a/src/VBox/HostServices/SharedFolders/vbsf.cpp
+++ b/src/VBox/HostServices/SharedFolders/vbsf.cpp
@@ -808,6 +808,7 @@ void testCreate(RTTEST hTest)
 {
     /* Simple opening of an existing file. */
     testCreateFileSimple(hTest);
+    testCreateFileSimpleCaseInsensitive(hTest);
     /* Simple opening of an existing directory. */
     /** @todo How do wildcards in the path name work? */
     testCreateDirSimple(hTest);
@@ -1407,14 +1408,10 @@ int vbsfQueryFileInfo(SHFLCLIENTDATA *pClient, SHFLROOT root, SHFLHANDLE Handle,
     RTFSOBJINFO    fileinfo;
 
 
-    if (   !(type == SHFL_HF_TYPE_DIR || type == SHFL_HF_TYPE_FILE)
-        || pcbBuffer == 0
-        || pObjInfo == 0
-        || *pcbBuffer < sizeof(SHFLFSOBJINFO))
-    {
-        AssertFailed();
-        return VERR_INVALID_PARAMETER;
-    }
+    AssertReturn(type == SHFL_HF_TYPE_DIR || type == SHFL_HF_TYPE_FILE, VERR_INVALID_PARAMETER);
+    AssertReturn(pcbBuffer != NULL, VERR_INVALID_PARAMETER);
+    AssertReturn(pObjInfo != NULL, VERR_INVALID_PARAMETER);
+    AssertReturn(*pcbBuffer >= sizeof(SHFLFSOBJINFO), VERR_INVALID_PARAMETER);
 
     /** @todo other options */
     Assert(flags == (SHFL_INFO_GET|SHFL_INFO_FILE));
diff --git a/src/VBox/HostServices/SharedFolders/vbsfpath.cpp b/src/VBox/HostServices/SharedFolders/vbsfpath.cpp
index 97a023b..55a32f8 100644
--- a/src/VBox/HostServices/SharedFolders/vbsfpath.cpp
+++ b/src/VBox/HostServices/SharedFolders/vbsfpath.cpp
@@ -594,11 +594,10 @@ int vbsfPathGuestToHost(SHFLCLIENTDATA *pClient, SHFLROOT hRoot,
 
                 if (RT_SUCCESS(rc))
                 {
-                    const size_t cbFullPathLength = pchDst - &pszFullPath[0]; /* As strlen(pszFullPath). */
                     *pchDst++ = 0;
 
                     /* Construct the full host path removing '.' and '..'. */
-                    rc = RTPathAbsEx(pszRoot, pchVerifiedPath, pszFullPath, cbFullPathAlloc);
+                    rc = vbsfPathAbs(pszRoot, pchVerifiedPath, pszFullPath, cbFullPathAlloc);
                     if (RT_SUCCESS(rc))
                     {
                         if (pfu32PathFlags && fLastComponentHasWildcard)
@@ -626,7 +625,7 @@ int vbsfPathGuestToHost(SHFLCLIENTDATA *pClient, SHFLROOT hRoot,
                             {
                                 const bool fWildCard = RT_BOOL(fu32Options & VBSF_O_PATH_WILDCARD);
                                 const bool fPreserveLastComponent = RT_BOOL(fu32Options & VBSF_O_PATH_PRESERVE_LAST_COMPONENT);
-                                rc = vbsfCorrectPathCasing(pClient, pszFullPath, cbFullPathLength,
+                                rc = vbsfCorrectPathCasing(pClient, pszFullPath, strlen(pszFullPath),
                                                            fWildCard, fPreserveLastComponent);
                             }
 
@@ -649,7 +648,7 @@ int vbsfPathGuestToHost(SHFLCLIENTDATA *pClient, SHFLROOT hRoot,
                     }
                     else
                     {
-                        LogFunc(("RTPathAbsEx %Rrc\n", rc));
+                        LogFunc(("vbsfPathAbs %Rrc\n", rc));
                     }
                 }
 
diff --git a/src/VBox/HostServices/SharedFolders/vbsfpath.h b/src/VBox/HostServices/SharedFolders/vbsfpath.h
index 8bd4f1a..8aef0bf 100644
--- a/src/VBox/HostServices/SharedFolders/vbsfpath.h
+++ b/src/VBox/HostServices/SharedFolders/vbsfpath.h
@@ -55,4 +55,18 @@ int vbsfPathGuestToHost(SHFLCLIENTDATA *pClient, SHFLROOT hRoot,
  */
 void vbsfFreeHostPath(char *pszHostPath);
 
+/**
+ * Build the absolute path by combining an absolute pszRoot and a relative pszPath.
+ * The resulting path does not contain '.' and '..' components.
+ * Similar to RTPathAbsEx but with support for Windows extended-length paths ("\\?\" prefix).
+ * Uses RTPathAbsEx for regular paths and on non-Windows hosts.
+ *
+ * @param pszRoot The absolute prefix. It is copied to the pszAbsPath without any processing.
+ *                If NULL then the pszPath must be converted to the absolute path.
+ * @param pszPath The relative path to be appended to pszRoot. Already has correct delimiters (RTPATH_SLASH).
+ * @param pszAbsPath Where to store the resulting absolute path.
+ * @param cbAbsPath Size of pszAbsBuffer in bytes.
+ */
+int vbsfPathAbs(const char *pszRoot, const char *pszPath, char *pszAbsPath, size_t cbAbsPath);
+
 #endif /* __VBSFPATH__H */
diff --git a/src/VBox/HostServices/SharedFolders/vbsfpathabs.cpp b/src/VBox/HostServices/SharedFolders/vbsfpathabs.cpp
new file mode 100644
index 0000000..f057b82
--- /dev/null
+++ b/src/VBox/HostServices/SharedFolders/vbsfpathabs.cpp
@@ -0,0 +1,178 @@
+/* $Id: vbsfpathabs.cpp $ */
+/** @file
+ * Shared Folders - guest/host path convertion and verification.
+ */
+
+/*
+ * Copyright (C) 2017 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#include <iprt/path.h>
+#include <iprt/string.h>
+
+#if defined(RT_OS_WINDOWS)
+static void vbsfPathResolveRelative(char *pszPathBegin)
+{
+    char *pszCur = pszPathBegin;
+    char * const pszTop = pszCur;
+
+    /*
+     * Get rid of double dot path components by evaluating them.
+     */
+    for (;;)
+    {
+        char const chFirst = pszCur[0];
+        if (   chFirst == '.'
+            && pszCur[1] == '.'
+            && (!pszCur[2] || pszCur[2] == RTPATH_SLASH))
+        {
+            /* rewind to the previous component if any */
+            char *pszPrev = pszCur;
+            if ((uintptr_t)pszPrev > (uintptr_t)pszTop)
+            {
+                pszPrev--;
+                while (   (uintptr_t)pszPrev > (uintptr_t)pszTop
+                       && pszPrev[-1] != RTPATH_SLASH)
+                    pszPrev--;
+            }
+            if (!pszCur[2])
+            {
+                if (pszPrev != pszTop)
+                    pszPrev[-1] = '\0';
+                else
+                    *pszPrev = '\0';
+                break;
+            }
+            Assert(pszPrev[-1] == RTPATH_SLASH);
+            memmove(pszPrev, pszCur + 3, strlen(pszCur + 3) + 1);
+            pszCur = pszPrev - 1;
+        }
+        else if (   chFirst == '.'
+                 && (!pszCur[1] || pszCur[1] == RTPATH_SLASH))
+        {
+            /* remove unnecessary '.' */
+            if (!pszCur[1])
+            {
+                if (pszCur != pszTop)
+                    pszCur[-1] = '\0';
+                else
+                    *pszCur = '\0';
+                break;
+            }
+            memmove(pszCur, pszCur + 2, strlen(pszCur + 2) + 1);
+            continue;
+        }
+        else
+        {
+            /* advance to end of component. */
+            while (*pszCur && *pszCur != RTPATH_SLASH)
+                pszCur++;
+        }
+
+        if (!*pszCur)
+            break;
+
+        /* skip the slash */
+        ++pszCur;
+    }
+}
+#endif /* RT_OS_WINDOWS */
+
+int vbsfPathAbs(const char *pszRoot, const char *pszPath, char *pszAbsPath, size_t cbAbsPath)
+{
+#if defined(RT_OS_WINDOWS)
+    const char *pszPathStart = pszRoot? pszRoot: pszPath;
+
+    /* Windows extended-length paths. */
+    if (   RTPATH_IS_SLASH(pszPathStart[0])
+        && RTPATH_IS_SLASH(pszPathStart[1])
+        && pszPathStart[2] == '?'
+        && RTPATH_IS_SLASH(pszPathStart[3])
+       )
+    {
+        /* Maximum total path length of 32,767 characters. */
+        if (cbAbsPath > _32K)
+            cbAbsPath = _32K;
+
+        /* Copy the root to pszAbsPath buffer. */
+        size_t cchRoot = pszRoot? strlen(pszRoot): 0;
+        if (cchRoot >= cbAbsPath)
+            return VERR_FILENAME_TOO_LONG;
+
+        if (pszRoot)
+        {
+            /* Caller must ensure that the path is relative, without the leading path separator. */
+            if (RTPATH_IS_SLASH(pszPath[0]))
+                return VERR_INVALID_PARAMETER;
+
+            if (cchRoot)
+               memcpy(pszAbsPath, pszRoot, cchRoot);
+
+            if (cchRoot == 0 || !RTPATH_IS_SLASH(pszAbsPath[cchRoot - 1]))
+            {
+                /* Append path separator after the root. */
+                ++cchRoot;
+                if (cchRoot >= cbAbsPath)
+                    return VERR_FILENAME_TOO_LONG;
+
+                pszAbsPath[cchRoot - 1] = RTPATH_SLASH;
+            }
+        }
+
+        /* Append the path to the pszAbsPath buffer. */
+        const size_t cchPath = strlen(pszPath);
+        if (cchRoot + cchPath >= cbAbsPath)
+            return VERR_FILENAME_TOO_LONG;
+
+        memcpy(&pszAbsPath[cchRoot], pszPath, cchPath + 1); /* Including trailing 0. */
+
+        /* Find out where the actual path begins, i.e. skip the root spec. */
+        char *pszPathBegin = &pszAbsPath[4]; /* Skip the extended-length path prefix "\\?\" */
+        if (   pszPathBegin[0]
+            && RTPATH_IS_VOLSEP(pszPathBegin[1])
+            && pszPathBegin[2] == RTPATH_SLASH)
+        {
+            /* "\\?\C:\" */
+            pszPathBegin += 3;
+        }
+        else if (   pszPathBegin[0] == 'U'
+                 && pszPathBegin[1] == 'N'
+                 && pszPathBegin[2] == 'C'
+                 && pszPathBegin[3] == RTPATH_SLASH)
+        {
+            /* "\\?\UNC\server\share" */
+            pszPathBegin += 4;
+
+            /* Skip "server\share" too. */
+            while (*pszPathBegin != RTPATH_SLASH && *pszPathBegin)
+                ++pszPathBegin;
+            if (*pszPathBegin == RTPATH_SLASH)
+            {
+                ++pszPathBegin;
+                while (*pszPathBegin != RTPATH_SLASH && *pszPathBegin)
+                    ++pszPathBegin;
+                if (*pszPathBegin == RTPATH_SLASH)
+                    ++pszPathBegin;
+            }
+        }
+        else
+            return VERR_INVALID_NAME;
+
+        /* Process pszAbsPath in place. */
+        vbsfPathResolveRelative(pszPathBegin);
+
+        return VINF_SUCCESS;
+    }
+#endif /* RT_OS_WINDOWS */
+
+    /* Fallback for the common paths. */
+    return RTPathAbsEx(pszRoot, pszPath, pszAbsPath, cbAbsPath);
+}
diff --git a/src/VBox/Installer/linux/vboxautostart-service.sh b/src/VBox/Installer/linux/vboxautostart-service.sh
index 232093a..0948c6e 100755
--- a/src/VBox/Installer/linux/vboxautostart-service.sh
+++ b/src/VBox/Installer/linux/vboxautostart-service.sh
@@ -77,7 +77,7 @@ if which start-stop-daemon >/dev/null 2>&1; then
         shift
         bin="$1"
         shift
-        start-stop-daemon --background --chuid $usr --start --exec $bin -- $@
+        start-stop-daemon --chuid $usr --start --exec $bin -- $@
     }
 fi
 
diff --git a/src/VBox/Main/include/PCIDeviceAttachmentImpl.h b/src/VBox/Main/include/PCIDeviceAttachmentImpl.h
index 2b97a72..b6f3893 100644
--- a/src/VBox/Main/include/PCIDeviceAttachmentImpl.h
+++ b/src/VBox/Main/include/PCIDeviceAttachmentImpl.h
@@ -40,7 +40,7 @@ public:
                  LONG          aHostAddess,
                  LONG          aGuestAddress,
                  BOOL          fPhysical);
-
+    HRESULT initCopy(IMachine *aParent, PCIDeviceAttachment *aThat);
     void uninit();
 
     // settings
diff --git a/src/VBox/Main/src-all/PCIDeviceAttachmentImpl.cpp b/src/VBox/Main/src-all/PCIDeviceAttachmentImpl.cpp
index 557c6b3..bac02bd 100644
--- a/src/VBox/Main/src-all/PCIDeviceAttachmentImpl.cpp
+++ b/src/VBox/Main/src-all/PCIDeviceAttachmentImpl.cpp
@@ -29,11 +29,12 @@ struct PCIDeviceAttachment::Data
     Data(const Utf8Str &aDevName,
          LONG          aHostAddress,
          LONG          aGuestAddress,
-         BOOL          afPhysical)
-        : HostAddress(aHostAddress), GuestAddress(aGuestAddress),
-          fPhysical(afPhysical)
+         BOOL          afPhysical) :
+        DevName(aDevName),
+        HostAddress(aHostAddress),
+        GuestAddress(aGuestAddress),
+        fPhysical(afPhysical)
     {
-        DevName = aDevName;
     }
 
     Utf8Str          DevName;
@@ -81,6 +82,15 @@ HRESULT PCIDeviceAttachment::init(IMachine      *aParent,
     return S_OK;
 }
 
+HRESULT PCIDeviceAttachment::initCopy(IMachine *aParent, PCIDeviceAttachment *aThat)
+{
+    LogFlowThisFunc(("aParent=%p, aThat=%p\n", aParent, aThat));
+
+    ComAssertRet(aParent && aThat, E_INVALIDARG);
+
+    return init(aParent, aThat->m->DevName, aThat->m->HostAddress, aThat->m->GuestAddress, aThat->m->fPhysical);
+}
+
 HRESULT PCIDeviceAttachment::i_loadSettings(IMachine *aParent,
                                             const settings::HostPCIDeviceAttachment &hpda)
 {
diff --git a/src/VBox/Main/src-client/ConsoleImpl2.cpp b/src/VBox/Main/src-client/ConsoleImpl2.cpp
index f7f281e..0df6235 100644
--- a/src/VBox/Main/src-client/ConsoleImpl2.cpp
+++ b/src/VBox/Main/src-client/ConsoleImpl2.cpp
@@ -3170,8 +3170,12 @@ int Console::i_configConstructorInner(PUVM pUVM, PVM pVM, AutoWriteLock *pAlock)
                 InsertConfigInteger(pCfg,  "McfgBase",   uMcfgBase);
                 InsertConfigInteger(pCfg,  "McfgLength", cbMcfgLength);
                 /* 64-bit prefetch window root resource:
-                 * Only for ICH9 and if PAE or Long Mode is enabled */
-                if (fEnablePAE || fIsGuest64Bit)
+                 * Only for ICH9 and if PAE or Long Mode is enabled.
+                 * And only with hardware virtualization (@bugref:5454). */
+                if (   (fEnablePAE || fIsGuest64Bit)
+                    && fSupportsHwVirtEx /* HwVirt needs to be supported by the host
+                                            otherwise VMM falls back to raw mode */
+                    && fHMEnabled        /* HwVirt needs to be enabled in VM config */)
                     InsertConfigInteger(pCfg,  "PciPref64Enabled", 1);
             }
             InsertConfigInteger(pCfg,  "HostBusPciAddress", uHbcPCIAddress);
diff --git a/src/VBox/Main/src-server/MediumAttachmentImpl.cpp b/src/VBox/Main/src-server/MediumAttachmentImpl.cpp
index 890de06..1dd2b3a 100644
--- a/src/VBox/Main/src-server/MediumAttachmentImpl.cpp
+++ b/src/VBox/Main/src-server/MediumAttachmentImpl.cpp
@@ -160,7 +160,6 @@ HRESULT MediumAttachment::initCopy(Machine *aParent, MediumAttachment *aThat)
     LogFlowThisFunc(("aParent=%p, aThat=%p\n", aParent, aThat));
 
     ComAssertRet(aParent && aThat, E_INVALIDARG);
-    Assert(!aParent->i_isSnapshotMachine());
 
     /* Enclose the state transition NotReady->InInit->Ready */
     AutoInitSpan autoInitSpan(this);
diff --git a/src/VBox/Main/src-server/SnapshotImpl.cpp b/src/VBox/Main/src-server/SnapshotImpl.cpp
index 34e5d6f..b8d2c0f 100644
--- a/src/VBox/Main/src-server/SnapshotImpl.cpp
+++ b/src/VBox/Main/src-server/SnapshotImpl.cpp
@@ -997,9 +997,9 @@ HRESULT SnapshotMachine::init(SessionMachine *aSessionMachine,
     /* take the pointer to UserData to share (our UserData must always be the
      * same as Machine's data) */
     mUserData.share(pMachine->mUserData);
-    /* make a private copy of all other data (recent changes from SessionMachine) */
+
+    /* make a private copy of all other data */
     mHWData.attachCopy(aSessionMachine->mHWData);
-    mMediaData.attachCopy(aSessionMachine->mMediaData);
 
     /* SSData is always unique for SnapshotMachine */
     mSSData.allocate();
@@ -1007,26 +1007,22 @@ HRESULT SnapshotMachine::init(SessionMachine *aSessionMachine,
 
     HRESULT rc = S_OK;
 
-    /* create copies of all shared folders (mHWData after attaching a copy
-     * contains just references to original objects) */
-    for (HWData::SharedFolderList::iterator it = mHWData->mSharedFolders.begin();
-         it != mHWData->mSharedFolders.end();
+    /* Create copies of all attachments (mMediaData after attaching a copy
+     * contains just references to original objects). Additionally associate
+     * media with the snapshot (Machine::uninitDataAndChildObjects() will
+     * deassociate at destruction). */
+    mMediaData.allocate();
+    for (MediaData::AttachmentList::const_iterator
+         it = aSessionMachine->mMediaData->mAttachments.begin();
+         it != aSessionMachine->mMediaData->mAttachments.end();
          ++it)
     {
-        ComObjPtr<SharedFolder> folder;
-        folder.createObject();
-        rc = folder->initCopy(this, *it);
+        ComObjPtr<MediumAttachment> pAtt;
+        pAtt.createObject();
+        rc = pAtt->initCopy(this, *it);
         if (FAILED(rc)) return rc;
-        *it = folder;
-    }
+        mMediaData->mAttachments.push_back(pAtt);
 
-    /* associate hard disks with the snapshot
-     * (Machine::uninitDataAndChildObjects() will deassociate at destruction) */
-    for (MediaData::AttachmentList::const_iterator it = mMediaData->mAttachments.begin();
-         it != mMediaData->mAttachments.end();
-         ++it)
-    {
-        MediumAttachment *pAtt = *it;
         Medium *pMedium = pAtt->i_getMedium();
         if (pMedium) // can be NULL for non-harddisk
         {
@@ -1035,6 +1031,34 @@ HRESULT SnapshotMachine::init(SessionMachine *aSessionMachine,
         }
     }
 
+    /* create copies of all shared folders (mHWData after attaching a copy
+     * contains just references to original objects) */
+    for (HWData::SharedFolderList::iterator
+         it = mHWData->mSharedFolders.begin();
+         it != mHWData->mSharedFolders.end();
+         ++it)
+    {
+        ComObjPtr<SharedFolder> pFolder;
+        pFolder.createObject();
+        rc = pFolder->initCopy(this, *it);
+        if (FAILED(rc)) return rc;
+        *it = pFolder;
+    }
+
+    /* create copies of all PCI device assignments (mHWData after attaching
+     * a copy contains just references to original objects) */
+    for (HWData::PCIDeviceAssignmentList::iterator
+         it = mHWData->mPCIDeviceAssignments.begin();
+         it != mHWData->mPCIDeviceAssignments.end();
+         ++it)
+    {
+        ComObjPtr<PCIDeviceAttachment> pDev;
+        pDev.createObject();
+        rc = pDev->initCopy(this, *it);
+        if (FAILED(rc)) return rc;
+        *it = pDev;
+    }
+
     /* create copies of all storage controllers (mStorageControllerData
      * after attaching a copy contains just references to original objects) */
     mStorageControllers.allocate();
@@ -1045,20 +1069,24 @@ HRESULT SnapshotMachine::init(SessionMachine *aSessionMachine,
     {
         ComObjPtr<StorageController> ctrl;
         ctrl.createObject();
-        ctrl->initCopy(this, *it);
+        rc = ctrl->initCopy(this, *it);
+        if (FAILED(rc)) return rc;
         mStorageControllers->push_back(ctrl);
     }
 
     /* create all other child objects that will be immutable private copies */
 
     unconst(mBIOSSettings).createObject();
-    mBIOSSettings->initCopy(this, pMachine->mBIOSSettings);
+    rc = mBIOSSettings->initCopy(this, pMachine->mBIOSSettings);
+    if (FAILED(rc)) return rc;
 
     unconst(mVRDEServer).createObject();
-    mVRDEServer->initCopy(this, pMachine->mVRDEServer);
+    rc = mVRDEServer->initCopy(this, pMachine->mVRDEServer);
+    if (FAILED(rc)) return rc;
 
     unconst(mAudioAdapter).createObject();
-    mAudioAdapter->initCopy(this, pMachine->mAudioAdapter);
+    rc = mAudioAdapter->initCopy(this, pMachine->mAudioAdapter);
+    if (FAILED(rc)) return rc;
 
     /* create copies of all USB controllers (mUSBControllerData
      * after attaching a copy contains just references to original objects) */
@@ -1070,34 +1098,40 @@ HRESULT SnapshotMachine::init(SessionMachine *aSessionMachine,
     {
         ComObjPtr<USBController> ctrl;
         ctrl.createObject();
-        ctrl->initCopy(this, *it);
+        rc = ctrl->initCopy(this, *it);
+        if (FAILED(rc)) return rc;
         mUSBControllers->push_back(ctrl);
     }
 
     unconst(mUSBDeviceFilters).createObject();
-    mUSBDeviceFilters->initCopy(this, pMachine->mUSBDeviceFilters);
+    rc = mUSBDeviceFilters->initCopy(this, pMachine->mUSBDeviceFilters);
+    if (FAILED(rc)) return rc;
 
     mNetworkAdapters.resize(pMachine->mNetworkAdapters.size());
     for (ULONG slot = 0; slot < mNetworkAdapters.size(); slot++)
     {
         unconst(mNetworkAdapters[slot]).createObject();
-        mNetworkAdapters[slot]->initCopy(this, pMachine->mNetworkAdapters[slot]);
+        rc = mNetworkAdapters[slot]->initCopy(this, pMachine->mNetworkAdapters[slot]);
+        if (FAILED(rc)) return rc;
     }
 
     for (ULONG slot = 0; slot < RT_ELEMENTS(mSerialPorts); slot++)
     {
         unconst(mSerialPorts[slot]).createObject();
-        mSerialPorts[slot]->initCopy(this, pMachine->mSerialPorts[slot]);
+        rc = mSerialPorts[slot]->initCopy(this, pMachine->mSerialPorts[slot]);
+        if (FAILED(rc)) return rc;
     }
 
     for (ULONG slot = 0; slot < RT_ELEMENTS(mParallelPorts); slot++)
     {
         unconst(mParallelPorts[slot]).createObject();
-        mParallelPorts[slot]->initCopy(this, pMachine->mParallelPorts[slot]);
+        rc = mParallelPorts[slot]->initCopy(this, pMachine->mParallelPorts[slot]);
+        if (FAILED(rc)) return rc;
     }
 
     unconst(mBandwidthControl).createObject();
-    mBandwidthControl->initCopy(this, pMachine->mBandwidthControl);
+    rc = mBandwidthControl->initCopy(this, pMachine->mBandwidthControl);
+    if (FAILED(rc)) return rc;
 
     /* Confirm a successful initialization when it's the case */
     autoInitSpan.setSucceeded();
diff --git a/src/VBox/VMM/VMMR3/CPUMR3CpuId.cpp b/src/VBox/VMM/VMMR3/CPUMR3CpuId.cpp
index c264db7..8cd5157 100644
--- a/src/VBox/VMM/VMMR3/CPUMR3CpuId.cpp
+++ b/src/VBox/VMM/VMMR3/CPUMR3CpuId.cpp
@@ -290,7 +290,8 @@ VMMR3DECL(CPUMMICROARCH) CPUMR3CpuIdDetermineMicroarchEx(CPUMCPUVENDOR enmVendor
                 return kCpumMicroarch_AMD_15h_Unknown;
             case 0x16:
                 return kCpumMicroarch_AMD_Jaguar;
-
+            case 0x17:
+                return kCpumMicroarch_AMD_Zen_Ryzen;
         }
         return kCpumMicroarch_AMD_Unknown;
     }
@@ -493,6 +494,8 @@ VMMR3DECL(const char *) CPUMR3MicroarchName(CPUMMICROARCH enmMicroarch)
 
         CASE_RET_STR(kCpumMicroarch_AMD_16h_First);
 
+        CASE_RET_STR(kCpumMicroarch_AMD_Zen_Ryzen);
+
         CASE_RET_STR(kCpumMicroarch_AMD_Unknown);
 
         CASE_RET_STR(kCpumMicroarch_Centaur_C6);
@@ -532,6 +535,7 @@ VMMR3DECL(const char *) CPUMR3MicroarchName(CPUMMICROARCH enmMicroarch)
         case kCpumMicroarch_AMD_K8_End:
         case kCpumMicroarch_AMD_15h_End:
         case kCpumMicroarch_AMD_16h_End:
+        case kCpumMicroarch_AMD_Zen_End:
         case kCpumMicroarch_AMD_End:
         case kCpumMicroarch_VIA_End:
         case kCpumMicroarch_Cyrix_End:
diff --git a/src/VBox/VMM/VMMR3/PGMSavedState.cpp b/src/VBox/VMM/VMMR3/PGMSavedState.cpp
index d915f5d..3931370 100644
--- a/src/VBox/VMM/VMMR3/PGMSavedState.cpp
+++ b/src/VBox/VMM/VMMR3/PGMSavedState.cpp
@@ -3214,8 +3214,8 @@ static DECLCALLBACK(int) pgmR3Load(PVM pVM, PSSMHANDLE pSSM, uint32_t uVersion,
             pgmR3HandlerPhysicalUpdateAll(pVM);
 
             /*
-             * Change the paging mode and restore PGMCPU::GCPhysCR3.
-             * (The latter requires the CPUM state to be restored already.)
+             * Change the paging mode (indirectly restores PGMCPU::GCPhysCR3).
+             * (Requires the CPUM state to be restored already!)
              */
             if (CPUMR3IsStateRestorePending(pVM))
                 return SSMR3SetLoadError(pSSM, VERR_WRONG_ORDER, RT_SRC_POS,
@@ -3228,18 +3228,6 @@ static DECLCALLBACK(int) pgmR3Load(PVM pVM, PSSMHANDLE pSSM, uint32_t uVersion,
                 rc = PGMR3ChangeMode(pVM, pVCpu, pVCpu->pgm.s.enmGuestMode);
                 AssertLogRelRCReturn(rc, rc);
 
-                /* Update pVM->pgm.s.GCPhysCR3. */
-                Assert(pVCpu->pgm.s.GCPhysCR3 == NIL_RTGCPHYS || FTMIsDeltaLoadSaveActive(pVM));
-                RTGCPHYS GCPhysCR3 = CPUMGetGuestCR3(pVCpu);
-                if (    pVCpu->pgm.s.enmGuestMode == PGMMODE_PAE
-                    ||  pVCpu->pgm.s.enmGuestMode == PGMMODE_PAE_NX
-                    ||  pVCpu->pgm.s.enmGuestMode == PGMMODE_AMD64
-                    ||  pVCpu->pgm.s.enmGuestMode == PGMMODE_AMD64_NX)
-                    GCPhysCR3 = (GCPhysCR3 & X86_CR3_PAE_PAGE_MASK);
-                else
-                    GCPhysCR3 = (GCPhysCR3 & X86_CR3_PAGE_MASK);
-                pVCpu->pgm.s.GCPhysCR3 = GCPhysCR3;
-
                 /* Update the PSE, NX flags and validity masks. */
                 pVCpu->pgm.s.fGst32BitPageSizeExtension = CPUMIsGuestPageSizeExtEnabled(pVCpu);
                 PGMNotifyNxeChanged(pVCpu, CPUMIsGuestNXEnabled(pVCpu));
diff --git a/src/libs/xpcom18a4/nsprpub/pr/src/pthreads/ptthread.c b/src/libs/xpcom18a4/nsprpub/pr/src/pthreads/ptthread.c
index 9d31730..a56514f 100644
--- a/src/libs/xpcom18a4/nsprpub/pr/src/pthreads/ptthread.c
+++ b/src/libs/xpcom18a4/nsprpub/pr/src/pthreads/ptthread.c
@@ -400,7 +400,14 @@ static PRThread* _PR_CreateThread(
 #ifndef VBOX_USE_IPRT_IN_NSPR
     if (0 == stackSize) stackSize = (64 * 1024);  /* default == 64K */
 #else
-    if (0 == stackSize) stackSize = (2 * 64 * 1024);  /* default == 128K */
+# ifdef RT_ARCH_AMD64
+    /* @bugref{8070}: At least on Mac OS X we run into a stack overflow if we
+     * have to handle many snapshots. Space is not a real concern on 64-bit
+     * hosts. */
+    if (0 == stackSize) stackSize = (512 * 1024);  /* default == 512K */
+# else
+    if (0 == stackSize) stackSize = (128 * 1024);  /* default == 128K */
+# endif
 #endif /* VBOX_USE_IPRT_IN_NSPR */
 #ifdef _MD_MINIMUM_STACK_SIZE
     if (stackSize < _MD_MINIMUM_STACK_SIZE) stackSize = _MD_MINIMUM_STACK_SIZE;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-virtualbox/virtualbox.git



More information about the Pkg-virtualbox-commits mailing list