VMware Communities
ticapix
Contributor
Contributor

WS 12 on Linux: undefined symbol in libvmwareui.so

Hi,

I just installed Workstation 12.0.0.2985596 64bits on Debian 8 64bits

When I'm running vmplayer, it's immediately exiting and returning the error code 1.

The end of the log in /tmp/vmware_ticapix shows

2015-10-02T22:18:59.510+03:00| appLoader| I125: Loading shipped version of libvmwarebase.so.

2015-10-02T22:18:59.512+03:00| appLoader| I125: Loading shipped version of libcurl.so.4.

2015-10-02T22:18:59.512+03:00| appLoader| I125: Loading shipped version of libcds.so.

2015-10-02T22:18:59.512+03:00| appLoader| I125: Loading shipped version of libgck.so.0.

2015-10-02T22:18:59.512+03:00| appLoader| I125: Loading system version of libgpg-error.so.0.

2015-10-02T22:18:59.513+03:00| appLoader| I125: Loading shipped version of libgcrypt.so.11.

2015-10-02T22:18:59.513+03:00| appLoader| I125: Loading shipped version of libgcr.so.0.

2015-10-02T22:18:59.513+03:00| appLoader| I125: Loading system version of libXau.so.6.

2015-10-02T22:18:59.513+03:00| appLoader| I125: Loading system version of libXrandr.so.2.

2015-10-02T22:18:59.513+03:00| appLoader| I125: Loading shipped version of libview.so.3.

2015-10-02T22:18:59.514+03:00| appLoader| I125: Loading shipped version of libbasichttp.so.

2015-10-02T22:18:59.514+03:00| appLoader| I125: Loading shipped version of libgvmomi.so.

2015-10-02T22:18:59.520+03:00| appLoader| I125: Loading shipped version of libvmwareui.so.

2015-10-02T22:18:59.562+03:00| appLoader| W115: Unable to load libvmwareui.so from /usr/lib/vmware/lib/libvmwareui.so/libvmwareui.so: /usr/lib/vmware/lib/libvmwareui.so/libvmwareui.so: undefined symbol: _ZN4Glib10spawn_syncERKSsRKNS_11ArrayHandleISsNS_17Container_Helpers10TypeTraitsISsEEEENS_10SpawnFlagsERKN4sigc4slotIvNSA_3nilESC_SC_SC_SC_SC_SC_EEPSsSG_Pi

2015-10-02T22:18:59.563+03:00| appLoader| W115: Unable to load dependencies for /usr/lib/vmware/lib/libvmware-fuseUI.so/libvmware-fuseUI.so

2015-10-02T22:18:59.563+03:00| appLoader| W115: Unable to execute /usr/lib/vmware/bin/vmware-fuseUI.

Demangling the unresolved symbol shows

Glib::spawn_sync(std::string const&, Glib::ArrayHandle<std::string, Glib::Container_Helpers::TypeTraits<std::string> > const&, Glib::SpawnFlags, sigc::slot<void, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil> const&, std::string*, std::string*, int*)

which supposedly belongs to glibmm

% ldd /usr/lib/vmware/lib/libvmwareui.so/libvmwareui.so | grep glibmm

        libglibmm-2.4.so.1 => /usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1 (0x00007f32786df000)

nm on the glibmm lib shows

% nm -CD /usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1 | grep spawn_sync

                 U g_spawn_sync

0000000000049e80 T Glib::spawn_sync(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Glib::ArrayHandle<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Glib::Container_Helpers::TypeTraits<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, Glib::SpawnFlags, sigc::slot<void, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, int*)

0000000000049cf0 T Glib::spawn_sync(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Glib::ArrayHandle<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Glib::Container_Helpers::TypeTraits<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, Glib::ArrayHandle<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Glib::Container_Helpers::TypeTraits<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, Glib::SpawnFlags, sigc::slot<void, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, int*)

So apparently, it's a missing or wrong mapping between std::string and std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >

% ldd /usr/lib/vmware/lib/libvmwareui.so/libvmwareui.so | grep libstd 

        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fe45db6e000)

I have the following lib installed

ii  libstdc++-4.9-dev:amd64                   4.9.3-4                            amd64    GNU Standard C++ Library v3 (development files)
ii  libstdc++-5-dev:amd64                     5.2.1-17                           amd64    GNU Standard C++ Library v3 (development files)
ii  libstdc++-arm-none-eabi-newlib            15:4.9.3+svn227297-1+8             all      GNU Standard C++ Library v3 for ARM Cortex-A/R/M processors (newlib)
ii  libstdc++6:amd64                          5.2.1-17                           amd64    GNU Standard C++ Library v3
ii  libstdc++6:i386                           5.2.1-17                           i386     GNU Standard C++ Library v3
ii  libglibmm-2.4-1v5:amd64                   2.44.0-3                           amd64    C++ wrapper for the GLib toolkit (shared libraries)

Has anyone an idea of what is wrong in my setup ? or a lead to what could be the root cause ?

Thanks,

Pierre

Tags (2)
5 Replies
Damijan
Contributor
Contributor

Hi Ticapix,

I had the same problem for all VMware versions and found very extremely stupid "workaround".

The problem as you already said is in libglibmm-2.4.so.1 or more precisely in spawn_sync.

"Solution" is to simply ln -s /usr/lib/vmware/lib/libglibmm-2.4.so.1/libglibmm-2.4.so.1 /usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1

BEWARE: You are actually overwriting the existing link to /usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1.3.0.

I am pretty sure that some other applications on your system won't like that. I am using KDE so am assuming that this would be more the case in GNOME environment but still.

If you temporary go this route I strongly suggest you to write a simple bash script which will replace original symlink(libglibmm-2.4.so.1 to libglibmm-2.4.so.1.3.0) on vmware start and replace it back with original after vmware shutdown.

Perhaps this is an issue with gcc 5.x migration libglibmm-2.4-1v5 - but this is just a wild guess.

P.S. If this is not feasible "solution" for you than I do hope for better ending (read VMware running on your PC) on your part.

Cheers!

kpicman
Contributor
Contributor

It worked for me. Thanks.

0 Kudos
boycer
Contributor
Contributor

Hi All,

Thanks for raising this issue. I had the exact same problem on Kubuntu 15.10 running the 4.2.0-16-generic kernel after a completely fresh installation and reboot. As mentioned, the solution provided is a bit risky since it involves messing with links to libraries. Here is another approach that worked for me:

$ export LD_LIBRARY_PATH=/usr/lib/vmware/lib/libglibmm-2.4.so.1/:$LD_LIBRARY_PATH

$ vmware

as is mentioned in the threads indicated, the export command can be added to the load script for vmware:

- Re: Vmware 11+patch and pro 12 on Ubuntu 15.10 Does not start

0 Kudos
boycer
Contributor
Contributor

A followup - the license key program requires a similar solution to run:

$ sudo -s

# export LD_LIBRARY_PATH=/usr/lib/vmware/lib/libglibmm-2.4.so.1/:$LD_LIBRARY_PATH

# sudo /usr/lib/vmware/bin/vmware-enter-serial

0 Kudos
rakotomandimby
Enthusiast
Enthusiast

I also suddenly encoutered the problem and my solution is a bit different but also worked: Make WS used as much shipped libraries as possible.

I did this with: Mihamina Rakotomandimby: vmware workstation 12 unable to load libvmwareui.so

0 Kudos