From: Mortimer Hemmit (mortimer.hemmit_at_gmail.com)
Date: Tue Feb 14 2023 - 16:12:48 CST

Hi,

Recently VMD 1.9.4a53 for 64-bit Windows has been crashing on startup
with an OSPRay error for me. There seem to be lots of threads about
this already (e.g.
<https://www.ks.uiuc.edu/Research/vmd/mailing_list/vmd-l/34017.html>,
<https://www.ks.uiuc.edu/Research/vmd/mailing_list/vmd-l/33943.html>,
<https://www.ks.uiuc.edu/Research/vmd/mailing_list/vmd-l/32557.html>)
so I won't repeat the error here.

I think I've found the cause of the error (or at least one part of it).

Quick summary: The embree3.dll library that ships with VMD 1.9.4a53
depends on the VC++12 redistributable. This is old and some newer
machines (like mine) might not have it installed.
Two possible solutions:
1) Recompile embree3.dll to depend on the more modern VC++14
redistributable (I tested this by copying it over the dll from more
recent embree releases, and they let VMD start out of the box)
2) Include the VC++12 DLLs with VMD or convince end users to install
it themselves

More details:
One can check the dependencies with "dumpbin /dependents embree3.dll"
in developer command prompt:

Dump of file embree3.dll

File Type: DLL

  Image has the following dependencies:

    tbb.dll
    MSVCP120.dll
    MSVCR120.dll
    KERNEL32.dll
    ADVAPI32.dll

and when I went to my library directories, I actually did not have
MSVCR120.dll installed. Installing it from Microsoft docs did the
trick and VMD started up normally.

Is embree3.dll the ONLY file that poses a problem? It seems so. I
replaced VMD's embree3.dll with various releases of embree (namely
3.2.2, 3.2.3, 3.2.4, 3.3.0, 3.5.0) and only the ones compiled with
VC++14 let VMD start properly, which imply that nothing else in the
VMD startup chain requires MSVCR120.dll and friends.

One could probably dig further to look for other odd library
dependencies and prove that what's here is the real problem, or test
whether OSPRay actually works once VMD starts, but hopefully this
provides a good starting point.

Mortimer