Ubuntu MATE 18.04 Holoplay segfault

Ubuntu MATE 18.04 LTS
kernel 5.3.0-59-generic
holoplayservice 1.1.1 amd64 installed
nvidia 440.82 driver running on Quadro K5100M

The 8.9" display works as a typical second display hooked up my Eurocom X8E laptop. The holoplay service starts at login and shows it has this display available. The problem I’ve found is:

Jun 12 16:37:54 x8e kernel: [ 527.155016] HoloPlayService[4893]: segfault at 28 ip 0000000000486481 sp 00007f43dfffd050 error 4 in HoloPlayService[400000+247000]
This seems occur whenever I try to register the device with the looking glass website, or if I start Schrodinger’s Maestro from the 2020-2 suite.

ldd /usr/bin/HoloPlayService
linux-vdso.so.1 (0x00007ffef05df000)
libudev.so.1 => /lib/x86_64-linux-gnu/libudev.so.1 (0x00007f0ae1f4f000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f0ae1d47000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f0ae1b43000)
libXrandr.so.2 => /usr/lib/x86_64-linux-gnu/libXrandr.so.2 (0x00007f0ae1938000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f0ae1600000)
libappindicator3.so.1 => /usr/lib/x86_64-linux-gnu/libappindicator3.so.1 (0x00007f0ae13f3000)
libdbusmenu-glib.so.4 => /usr/lib/x86_64-linux-gnu/libdbusmenu-glib.so.4 (0x00007f0ae11d7000)
libgtk-3.so.0 => /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 (0x00007f0ae08cf000)
libgdk-3.so.0 => /usr/lib/x86_64-linux-gnu/libgdk-3.so.0 (0x00007f0ae05d9000)
libatk-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0 (0x00007f0ae03b3000)
libgio-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007f0ae0014000)
libpangocairo-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0 (0x00007f0adfe07000)
libgdk_pixbuf-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 (0x00007f0adfbe3000)
libcairo-gobject.so.2 => /usr/lib/x86_64-linux-gnu/libcairo-gobject.so.2 (0x00007f0adf9da000)
libpango-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0 (0x00007f0adf78d000)
libcairo.so.2 => /usr/lib/x86_64-linux-gnu/libcairo.so.2 (0x00007f0adf470000)
libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007f0adf21c000)
libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f0adef05000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f0adeb7c000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f0ade7de000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f0ade5c6000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f0ade3a7000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f0addfb6000)
/lib64/ld-linux-x86-64.so.2 (0x00007f0ae216d000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f0addda4000)
libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f0addb9a000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f0add972000)
libindicator3.so.7 => /usr/lib/x86_64-linux-gnu/libindicator3.so.7 (0x00007f0add760000)
libdbusmenu-gtk3.so.4 => /usr/lib/x86_64-linux-gnu/libdbusmenu-gtk3.so.4 (0x00007f0add54c000)
libgmodule-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007f0add348000)
libXi.so.6 => /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00007f0add138000)
libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007f0adcf32000)
libatk-bridge-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libatk-bridge-2.0.so.0 (0x00007f0adcd01000)
libepoxy.so.0 => /usr/lib/x86_64-linux-gnu/libepoxy.so.0 (0x00007f0adca00000)
libpangoft2-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0 (0x00007f0adc7ea000)
libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f0adc5a5000)
libXinerama.so.1 => /usr/lib/x86_64-linux-gnu/libXinerama.so.1 (0x00007f0adc3a2000)
libXcursor.so.1 => /usr/lib/x86_64-linux-gnu/libXcursor.so.1 (0x00007f0adc198000)
libXcomposite.so.1 => /usr/lib/x86_64-linux-gnu/libXcomposite.so.1 (0x00007f0adbf95000)
libXdamage.so.1 => /usr/lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007f0adbd92000)
libxkbcommon.so.0 => /usr/lib/x86_64-linux-gnu/libxkbcommon.so.0 (0x00007f0adbb53000)
libwayland-cursor.so.0 => /usr/lib/x86_64-linux-gnu/libwayland-cursor.so.0 (0x00007f0adb94b000)
libwayland-egl.so.1 => /usr/lib/x86_64-linux-gnu/libwayland-egl.so.1 (0x00007f0adb749000)
libwayland-client.so.0 => /usr/lib/x86_64-linux-gnu/libwayland-client.so.0 (0x00007f0adb53a000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f0adb31d000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f0adb0f5000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f0adaeda000)
libmount.so.1 => /lib/x86_64-linux-gnu/libmount.so.1 (0x00007f0adac86000)
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f0ada9d2000)
libthai.so.0 => /usr/lib/x86_64-linux-gnu/libthai.so.0 (0x00007f0ada7c9000)
libpixman-1.so.0 => /usr/lib/x86_64-linux-gnu/libpixman-1.so.0 (0x00007f0ada524000)
libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f0ada2f2000)
libxcb-shm.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0 (0x00007f0ada0ef000)
libxcb-render.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-render.so.0 (0x00007f0ad9ee2000)
libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007f0ad9cda000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f0ad9a68000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f0ad9864000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f0ad965e000)
libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007f0ad9411000)
libatspi.so.0 => /usr/lib/x86_64-linux-gnu/libatspi.so.0 (0x00007f0ad91e1000)
libharfbuzz.so.0 => /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007f0ad8f43000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f0ad8d11000)
libblkid.so.1 => /lib/x86_64-linux-gnu/libblkid.so.1 (0x00007f0ad8ac4000)
libdatrie.so.1 => /usr/lib/x86_64-linux-gnu/libdatrie.so.1 (0x00007f0ad88bd000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f0ad86a8000)
libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007f0ad8424000)
libgraphite2.so.3 => /usr/lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007f0ad81f7000)
libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f0ad7ff0000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f0ad7dca000)
liblz4.so.1 => /usr/lib/x86_64-linux-gnu/liblz4.so.1 (0x00007f0ad7bae000)
libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007f0ad7892000)
libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f0ad767d000)

I have not yet tried to work with the Leap Motion Controller, though I see in /var/log/Xorg.0.log that it is found when plugged in. I have not tried run the HoloplaySDK unity package yet. I’d just like to get the 8.9" holodisplay working with Maestro and registered at lookingglassfactory.com first.

Thanks for your help. Please let me know what additional info you might need.
Dow Hurst

Hi @dphurst, sorry you had some issues there! I don’t think we’ve seen this particular issue before. I’ll need to dig into it with the dev team on HoloPlay Service – I’ll get back to you as soon as possible!

Alex,
Evan sent me an email suggesting I provide logs from /var/log/lookingglassfactory/logfiles. However, there were no logs. I tried changing permissions from UID = 1000, GID = 1000 to my own and restarting with no results. I then did the 2nd suggestion he gave, which was downgrade to the 1.0.1 version of holoplayservice. This version is working! The holoplayservice is starting upon login. I can then start maestro from the schrodinger suite and the looking glass factory display stops showing as a second monitor and starts showing the maestro workspace display. Loading any project then displays whatever is in the workspace in 3D. The rendering is a bit fuzzy, like the molecules are not quite in focus except for the atoms at the center of the depth field. The closer to the viewer or further away from the viewer the more out of focus the atoms are. Is this something programmed into Maestro or is this the physical nature of the 3D display itself? I would like to have all the atoms in focus.

I am willing to test any changes to the 1.1.1 build and give feedback.
Thanks,
Dow

(Copying this from my email response to you re: fuzziness, in case it helps anyone else!)

Hi Dow,

Your Looking Glass is working fine; our displays have a ‘zero parallax plane’ where objects appear completely in focus. There’s a physical limit to where a 3D object can be displayed in the virtual volume of the Looking Glass; the image starts to become grainier and less coherent as its distance from the zero parallax plane grows.

Apps made with our Unity SDK usually induce a subtle “depth-of-field blur” effect for objects nearer to and farther from the viewer, which makes it a little easier on the eyes. But the renderers for Maestro and PyMOL were developed from scratch by Schrodinger, who may have made different aesthetic decisions. It looks like Maestro may also be trying to draw objects further away from the ‘zero parallax plane’ than we typically build into our own tools, but that does let them display more information.

If this is giving you a headache and you want a near-term solution, there are some ‘clipping plane adjustment’ settings that may let you tweak the appearance of the system to your liking. Specifically, changing the location of the near-clip and far-clip planes will cause the system to cut off rendering out-of-focus content sooner.

It’s also worth noting that both Looking Glass and Schrodinger are NYC companies whose employees are and have been working from home, and the final stretches of development on both sides have happened post-quarantine, with limited access to offices and physical hardware. I believe that most of our contacts working on Maestro are using 15.6" displays; therefore, some of the design decisions may have been made with the optical properties of that display in mind. So - any focal-distance roughness might be something very simple to correct for by changing default configuration parameters, in a future version. I’m sure that Maestro developers would welcome any customer feedback on how to improve the user experience on the smaller systems, and I’ll pass along this feedback to the ones I’m in contact with.

P.S. We’re working in concert with Schrodinger on more descriptive literature about the UX for these tools, but in the meantime, here’s a quick video review of PyMOL on the 8.9" from my dad, who is a biophysical chemist at UMCP and has forgotten more about Schrodinger software than I will ever know.