Path appears valid, but to something that is not Hops related

Hi there, my hops component works perfectly in Rhino 7, but throws the above error in Rhino 8.

Rhino 8 SR0 2023-10-31 (Rhino 8, 8.0.23304.09001, Git hash:master @ 20e15cf9bd66e6676f849f22e485cb3e82a8beac)
License type: Educational, build 2023-10-31
License details: Cloud Zoo

Windows 10 (10.0.19045 SR0.0) or greater (Physical RAM: 32Gb)
.NET 7.0.13

Computer platform: LAPTOP - Plugged in [100% battery remaining]

Hybrid graphics configuration.
Primary display: Intel(R) UHD Graphics (Intel) Memory: 1GB, Driver date: 2-18-2022 (M-D-Y).
> Integrated graphics device with 3 adapter port(s)
- Windows Main Display is laptop’s integrated screen or built-in port
- Secondary monitor attached to adapter port 1
Primary OpenGL: NVIDIA Quadro T2000 with Max-Q Design (NVidia) Memory: 4GB, Driver date: 6-10-2023 (M-D-Y). OpenGL Ver: 4.6.0 NVIDIA 536.25
> Integrated accelerated graphics device (shares primary device ports)
- Video pass-through to primary display device

OpenGL Settings
Safe mode: Off
Use accelerated hardware modes: On
Redraw scene when viewports are exposed: On
Graphics level being used: OpenGL 4.6 (primary GPU’s maximum)

Anti-alias mode: 4x
Mip Map Filtering: Linear
Anisotropic Filtering Mode: High

Vendor Name: NVIDIA Corporation
Render version: 4.6
Shading Language: 4.60 NVIDIA
Driver Date: 6-10-2023
Driver Version: 31.0.15.3625
Maximum Texture size: 32768 x 32768
Z-Buffer depth: 24 bits
Maximum Viewport size: 32768 x 32768
Total Video Memory: 4 GB

Rhino plugins that do not ship with Rhino
C:\Users\cawn069856\AppData\Roaming\McNeel\Rhinoceros\packages\8.0\Karamba3D\2.2.0.180\Karamba3D_LicensePlugin_Rhino7.rhp “Karamba3DLicense”

Rhino plugins that ship with Rhino
C:\Program Files\Rhino 8\Plug-ins\Commands.rhp “Commands” 8.0.23304.9001
C:\Program Files\Rhino 8\Plug-ins\rdk.rhp “Renderer Development Kit”
C:\Program Files\Rhino 8\Plug-ins\RhinoRenderCycles.rhp “Rhino Render” 8.0.23304.9001
C:\Program Files\Rhino 8\Plug-ins\rdk_etoui.rhp “RDK_EtoUI” 8.0.23304.9001
C:\Program Files\Rhino 8\Plug-ins\NamedSnapshots.rhp “Snapshots”
C:\Program Files\Rhino 8\Plug-ins\MeshCommands.rhp “MeshCommands” 8.0.23304.9001
C:\Program Files\Rhino 8\Plug-ins\IronPython\RhinoDLR_Python.rhp “IronPython” 8.0.23304.9001
C:\Program Files\Rhino 8\Plug-ins\RhinoCycles.rhp “RhinoCycles” 8.0.23304.9001
C:\Program Files\Rhino 8\Plug-ins\Grasshopper\GrasshopperPlugin.rhp “Grasshopper” 8.0.23304.9001
C:\Program Files\Rhino 8\Plug-ins\RhinoCode\RhinoCodePlugin.rhp “RhinoCodePlugin” 8.0.23304.9001
C:\Program Files\Rhino 8\Plug-ins\Toolbars\Toolbars.rhp “Toolbars” 8.0.23304.9001
C:\Program Files\Rhino 8\Plug-ins\3dxrhino.rhp “3Dconnexion 3D Mouse”
C:\Program Files\Rhino 8\Plug-ins\Displacement.rhp “Displacement”
C:\Program Files\Rhino 8\Plug-ins\SectionTools.rhp “SectionTools”

Any help would be appreciated :slight_smile:

Can you post the file you’re trying to use in your Hops component so I can take a look?

Hi Andy, see attached the .gh file I am referencing in hops - as I said it works in Rhino7 but not in Rhino8.

AgentLessPanels.gh (21.7 KB)

Hi @William_Nash. It seems to be working just fine on my machine (see image). I did have to copy out the components you’re using as the “input surface” from your original definition in order to feed it back into your input… but it worked. If it were me, I’d make that first group which makes the “synclastic/anticlastic surface” into it’s own Hops definition. And then feed the output of that into your second definition that does the panelization. What version of Hops are you using? I’m using Hops 0.16.2. Perhaps it’s one of your other 3rd party plugins that is causing rhino.compute to crash on startup. Can you try removing those all (except for Lunchbox which was required for this definition) and test again? Then, try adding your plugins back one-by-one to see which one might be the offending plugin.

Yes I am able to get it work within the file, but referencing as a hops definition from another file throws the error. Now with the synclastic/antisynclastic surface in a standalone file (with only native components) I try to reference it into the original AgentLessPanels.gh and it throws the same error.

I have tried hops 0.16.2 and 0.15.5 to no avail.
AgentLessPanels.gh (21.6 KB)
ClasticSrf.gh (8.0 KB)

In fact with hops 0.15.5 when I try to open the file I receive the attached error.

May I ask how I can see the rhino.compute terminal?
AgentLessPanels.html (1.8 KB)

Yes, 0.15.5 won’t work with Rhino 8. We made some significant changes between those two builds in order to get things to work with .NET 7.
To see the console window, go to Grasshopper->Preferences->Solver and then under the Hops Preferences uncheck the toggle to “Hide Rhino.Compute Console Window”. Then restart Rhino/GH and you should see a new application show up next to Rhino whenever you start Grasshopper.

Right, do you think I need to SetDotNetFramework off Core?

Here is the log from the console showing the error…

And successfully running in Rhino7:

It’s weird because I don’t have a D:\ drive on my machine…

No. I don’t think you need to turn off the Framework setting. Honestly I think one of your 3rd party plugins isn’t working with Rhino 8 and when rhino.compute tries to load it, it’s crashing your server. Did you try to remove all plugins and see if it works then?

this might be the answer:

Let me update .NET before I start deleting plugins.

Great success - you live and learn!

2 Likes

I’m having the same problem! Will check if the same solution works for me.

Well that was short lived, now I can use AgentLessPanels as a hops component but ClasticSrf is nonresponsive, @AndyPayne can you let me know if it works on your end?

I’m going to try loading in safe mode to limit plugins and see if I can find the root issue…

There is something odd happening, as soon as I drop a hops component on the canvas it crashes, Rhino7 now as well, here is the rhino.compute terminal output

—> System.Net.Sockets.SocketException (995): The I/O operation has been aborted because of either a thread exit or an application request.
— End of inner exception stack trace —
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError , CancellationToken )
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.GetResult(Int16 )
at System.Net.Http.HttpConnection.FillAsync(Boolean )
at System.Net.Http.HttpConnection.ReadNextResponseHeaderLineAsync(Boolean , Boolean )
at System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage , Boolean , CancellationToken )
— End of inner exception stack trace —
at System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage , Boolean , CancellationToken )
at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage , Boolean , Boolean , CancellationToken )
at System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage , Boolean , CancellationToken )
at System.Net.Http.HttpClient.SendAsyncCore(HttpRequestMessage , HttpCompletionOption , Boolean , Boolean , CancellationToken )
— End of inner exception stack trace —
— End of inner exception stack trace —
at System.Net.Http.HttpClient.SendAsyncCore(HttpRequestMessage , HttpCompletionOption , Boolean , Boolean , CancellationToken )
at rhino.compute.ReverseProxyModule.SendProxyRequest(HttpRequest initialRequest, HttpMethod method, String baseurl) in D:\BuildAgent\work\4852f584398a78e4\src\rhino.compute\ReverseProxy.cs:line 152
at rhino.compute.ReverseProxyModule.ReverseProxyPost(HttpRequest req, HttpResponse res) in D:\BuildAgent\work\4852f584398a78e4\src\rhino.compute\ReverseProxy.cs:line 187
at Carter.CarterExtensions.<>c__DisplayClass1_0.<b__0>d.MoveNext()
— End of stack trace from previous location —
at Microsoft.AspNetCore.Routing.EndpointMiddleware.g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)

OK - if I go back to hops 0.15.5 in Rhino7 all is well, there is some breaking change in 0.16.2 (or between) that is causing my issues. For now it seems I can’t use hops in Rhino8 :frowning:

Hops 0.16.0 throws the following while it crashes and burns:

Unhandled exception. System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
at System.Collections.Generic.List1.Enumerator.MoveNextRare() at Hops.RemoteDefinitionCache.Fsw_Changed(Object sender, FileSystemEventArgs e) in D:\BuildAgent\work\4852f584398a78e4\src\hops\RemoteDefinition.cs:line 1369 at System.IO.FileSystemWatcher.NotifyFileSystemEventArgs(WatcherChangeTypes changeType, ReadOnlySpan1 name)
at System.IO.FileSystemWatcher.ParseEventBufferAndNotifyForEach(ReadOnlySpan1 buffer) at System.IO.FileSystemWatcher.ReadDirectoryChangesCallback(UInt32 errorCode, UInt32 numBytes, AsyncReadState state) at System.IO.FileSystemWatcher.<>c.<StartRaisingEvents>b__85_0(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* overlappedPointer) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previous location --- at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadPoolTypedWorkItemQueue2.System.Threading.IThreadPoolWorkItem.Execute()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart()
[12:56:43 INF] Max concurrent requests = 322

I can’t fathom why it’s calling something on a D:\ drive when I don’t have one.

And now with all plugins removed bar hops and lunchbox:

at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)
[13:07:39 ERR] Connection id “0HMV2V71494DF”, Request id “0HMV2V71494DF:00000001”: An unhandled exception was thrown by the application.
System.Threading.Tasks.TaskCanceledException: The request was canceled due to the configured HttpClient.Timeout of 100 seconds elapsing.
—> System.TimeoutException: The operation was canceled.
—> System.Threading.Tasks.TaskCanceledException: The operation was canceled.
—> System.IO.IOException: Unable to read data from the transport connection: The I/O operation has been aborted because of either a thread exit or an application request…
—> System.Net.Sockets.SocketException (995): The I/O operation has been aborted because of either a thread exit or an application request.
— End of inner exception stack trace —
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource<System.Int32>.GetResult(Int16 token)
at System.Net.Http.HttpConnection.InitialFillAsync(Boolean async)
at System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
— End of inner exception stack trace —
at System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
— End of inner exception stack trace —
— End of inner exception stack trace —
at System.Net.Http.HttpClient.HandleFailure(Exception e, Boolean telemetryStarted, HttpResponseMessage response, CancellationTokenSource cts, CancellationToken cancellationToken, CancellationTokenSource pendingRequestsCts)
at System.Net.Http.HttpClient.g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
at rhino.compute.ReverseProxyModule.SendProxyRequest(HttpRequest initialRequest, HttpMethod method, String baseurl) in D:\BuildAgent\work\4852f584398a78e4\src\rhino.compute\ReverseProxy.cs:line 158
at rhino.compute.ReverseProxyModule.ReverseProxyPost(HttpRequest req, HttpResponse res) in D:\BuildAgent\work\4852f584398a78e4\src\rhino.compute\ReverseProxy.cs:line 193
at Microsoft.AspNetCore.Routing.EndpointMiddleware.g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)

Also it is throwing Object ‘Hops’ {c69bb52c-88ba-4640-b69f-188d111029e8} failed to deserialize itself: Unexpected character encountered while parsing value: <. Path ‘’, line 0, position 0.

Do the hops files need to be *.ghx?

No. It doesn’t need to be a .ghx. What framework are you loading Rhino from?

I put it back to Default, I’m not sure which one that would be.

After doing that, the compute console said I was missing a file, which I downloaded and installed.
Upon second launch of Rhino 8 and Grasshopper, the compute console said I was missing a second file. So I downloaded and installed that too.

The two files are:
(1) aspnetcore-runtime-7.0.13-win-x64.exe
(2) windowsdesktop-runtime-7.0.13-win-x64.exe

After installing both, I have Hops working.

I guess we need the install procedure to tell the user what’s missing in a more friendly way, or to automatically (or ask to) download the missing files?

Sincerely,
–Anthony Yan

P.S. Here is a cut-and-paste of the compute terminal after installing the two files.
[21:59:00 INF] Rhino compute started at 2023-11-11 9:59:00 PM
[21:59:00 INF] Initiliazing reverse proxy at 2023-11-11 9:59:00 PM
[21:59:00 INF] Spawn children at startup is set to True
[21:59:00 INF] Now listening on: http://localhost:6500
[21:59:00 INF] Application started. Press Ctrl+C to shut down.
[21:59:00 INF] Hosting environment: Production
[21:59:00 INF] Content root path: C:\Users\Anthony K. Yan\AppData\Roaming\McNeel\Rhinoceros\packages\8.0\Hops\0.16.2\rhino.compute
CG [21:59:04 INF] Child process started at 2023-11-11 9:59:04 PM
CG [21:59:04 INF] Parsed port = 6001
CG [21:59:06 INF] (1/2) Loading grasshopper
CG [21:59:07 INF] (2/2) Loading compute plug-ins
CG [21:59:07 INF] Now listening on: http://localhost:6001
CG [21:59:07 INF] Application started. Press Ctrl+C to shut down.
CG [21:59:07 INF] Hosting environment: Production
CG [21:59:07 INF] Content root path: C:\Users\Anthony K. Yan\AppData\Roaming\McNeel\Rhinoceros\packages\8.0\Hops\0.16.2\rhino.compute
CG [21:59:11 INF] Child process started at 2023-11-11 9:59:11 PM
CG [21:59:11 INF] Parsed port = 6002
CG [21:59:12 INF] (1/2) Loading grasshopper
CG [21:59:14 INF] (2/2) Loading compute plug-ins
CG [21:59:14 INF] Now listening on: http://localhost:6002
CG [21:59:14 INF] Application started. Press Ctrl+C to shut down.
CG [21:59:14 INF] Hosting environment: Production
CG [21:59:14 INF] Content root path: C:\Users\Anthony K. Yan\AppData\Roaming\McNeel\Rhinoceros\packages\8.0\Hops\0.16.2\rhino.compute
CG [21:59:15 INF] Child process started at 2023-11-11 9:59:15 PM
CG [21:59:15 INF] Parsed port = 6003
CG [21:59:17 INF] (1/2) Loading grasshopper
CG [21:59:18 INF] (2/2) Loading compute plug-ins
CG [21:59:18 INF] Now listening on: http://localhost:6003
CG [21:59:18 INF] Application started. Press Ctrl+C to shut down.
CG [21:59:18 INF] Hosting environment: Production
CG [21:59:18 INF] Content root path: C:\Users\Anthony K. Yan\AppData\Roaming\McNeel\Rhinoceros\packages\8.0\Hops\0.16.2\rhino.compute
CG [21:59:19 INF] Child process started at 2023-11-11 9:59:19 PM
CG [21:59:19 INF] Parsed port = 6004
CG [21:59:21 INF] (1/2) Loading grasshopper
CG [21:59:22 INF] (2/2) Loading compute plug-ins
CG [21:59:22 INF] Now listening on: http://localhost:6004
CG [21:59:22 INF] Application started. Press Ctrl+C to shut down.
CG [21:59:22 INF] Hosting environment: Production
CG [21:59:22 INF] Content root path: C:\Users\Anthony K. Yan\AppData\Roaming\McNeel\Rhinoceros\packages\8.0\Hops\0.16.2\rhino.compute
[22:00:00 INF] Max concurrent requests = 0