The Problem
Restart a windows 10 computer and log on via remote desktop. The RDP session will not have hardware acceleration, thus it cannot use direct3d or opengl. Open the Iris sample dataset and run the saved script to create a 3D scatterplot. An error similar to 'LoadLibrary failed with error 126' is displayed and JMP crashes, without giving an option to restore files or submit a crash report. For sure this happens with nvidia graphics cards, it might happen with others.
Solution
Run a script to send the current session to the console, then open JMP, and run something invoking opengl (like a scatterplot 3d) and then log back in via remote desktop. Now you can open any other Scatterplot in that session of JMP without an error.
I did this with two files, one is 'C:/bat/Close RDP and start JMP.bat' which sends the session to the console, opens JMP, and runs the second file detailed below. This first bat file must be run as an administrator in order to send the session to the console:
off
REM - ask the user which program(s) to start
set /p j16="Copies of JMP 16 to start: "
set /p j15="Copies of JMP 15 to start: "
set /p j14="Copies of JMP 14 to start: "
set /p j13="Copies of JMP 13 to start: "
set /p j12="Copies of JMP 12 to start: "
REM - Send all sessions to the console (anyone in front of the computer will see whatever is on the screen), all will error except the current session:
tscon 1 /dest:console
tscon 2 /dest:console
tscon 3 /dest:console
tscon 4 /dest:console
tscon 5 /dest:console
tscon 6 /dest:console
tscon 7 /dest:console
tscon 8 /dest:console
tscon 9 /dest:console
tscon 10 /dest:console
REM - Start each program
IF %j16% geq 1 ( FOR /L %%x IN (1,1,%j16%) DO ( start "" "C:\Program Files\SAS\JMPPRO\16\jmp.exe" "C:\bat\JMP start OpenGL.jsl" ) )
IF %j15% geq 1 ( FOR /L %%x IN (1,1,%j15%) DO ( start "" "C:\Program Files\SAS\JMPPRO\15\jmp.exe" "C:\bat\JMP start OpenGL.jsl" ) )
IF %j14% geq 1 ( FOR /L %%x IN (1,1,%j14%) DO ( start "" "C:\Program Files\SAS\JMPPRO\14\jmp.exe" "C:\bat\JMP start OpenGL.jsl" ) )
IF %j13% geq 1 ( FOR /L %%x IN (1,1,%j13%) DO ( start "" "C:\Program Files\SAS\JMPPRO\13\jmp.exe" "C:\bat\JMP start OpenGL.jsl" ) )
IF %j12% geq 1 ( FOR /L %%x IN (1,1,%j12%) DO ( start "" "C:\Program Files\SAS\JMPPRO\12\jmp.exe" "C:\bat\JMP start OpenGL.jsl" ) )
REM - lock the workstation in case you don't log back in right away (not 100% sure this works)
%windir%\System32\rundll32.exe user32.dll, LockWorkStation
And the second is 'C:/bat/JMP start openGL.jsl', which opens the scatterplot 3d:
names default to here(1);
dt = Open("$Sample_Data/iris.jmp");
dt << Scatterplot 3D(
Y( :Sepal length, :Sepal width, :Petal length, :Petal width ),
Frame3D(
Set Rotation( -37.7763571468042, -20.0181349932962, 0.755666043084993 )
)
);