# How to understand a hang report

{% hint style="warning" %}
As of now, the information on this page might be out-of-date. We apologize for any inconvenience.
{% endhint %}

It could be difficult for designers to figure out what happened, given that they may lack knowledge in computer science. Here is a typical hang report.

```
Grasshopper has lost responsiveness for more than 1 minute.
An emergency save has been made.
Problem might be caused by Component_PipeSurface in SurfaceComponents, Version=6.2.18065.11031, Culture=neutral, PublicKeyToken=dda4f5ec2cd80803.

A stack trace report is attached for diagnosis: 

   at UnsafeNativeMethods.RHC_RhinoPipeBreps(IntPtr pConstCurve, Int32 paramCount, Double[] railParams, Double[] radii, Boolean localBlending, Int32 capMode, Boolean fitRail, Double absTol, Double angTol, IntPtr pBrepArray)
   at UnsafeNativeMethods.RHC_RhinoPipeBreps(IntPtr pConstCurve, Int32 paramCount, Double[] railParams, Double[] radii, Boolean localBlending, Int32 capMode, Boolean fitRail, Double absTol, Double angTol, IntPtr pBrepArray)
   at Rhino.Geometry.Brep.CreatePipe(Curve rail, IEnumerable`1 railRadiiParameters, IEnumerable`1 radii, Boolean localBlending, PipeCapMode cap, Boolean fitRail, Double absoluteTolerance, Double angleToleranceRadians)
   at Rhino.Geometry.Brep.CreatePipe(Curve rail, Double radius, Boolean localBlending, PipeCapMode cap, Boolean fitRail, Double absoluteTolerance, Double angleToleranceRadians)
   at SurfaceComponents.SurfaceComponents.Component_PipeSurface.SolveInstance(IGH_DataAccess DA)
   at Grasshopper.Kernel.GH_Component.Solution_Compute_MixedAccess(GH_StructureIterator it)
   at Grasshopper.Kernel.GH_Component.ComputeData()
   at Grasshopper.Kernel.GH_Document.SolveAllObjects(GH_SolutionMode mode)
   at Grasshopper.Kernel.GH_Document.NewSolution(Boolean expireAllObjects, GH_SolutionMode mode)
   at Grasshopper.Kernel.GH_Document.set_EnableSolutions(Boolean Value)
   at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
   at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
   at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
   at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
   at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
   at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ToolStrip.WndProc(Message& m)
   at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
```

### Situations when Pancake knows what raises the hang

Usually, Pancake will try to figure out which **component** caused the lag, such as:

```
Problem might be caused by Component_PipeSurface in SurfaceComponents, Version=6.2.18065.11031, Culture=neutral, PublicKeyToken=dda4f5ec2cd80803.
```

You will notice Pancake says it is caused by `Component_PipeSurface`, rather than a user-friendly name you see in GH. Operations associated with BRep or massive data can be time-consuming. As is demonstrated in the example, `Pipe` problem caused the hang. For most geometry-related hang, the first one in the stacktrace is  `UnsafeNativeMethods.xxxxxxx`. If not, the problem might be related to inflated data.&#x20;

### Situations when Pancake doesn't know what happened

Rarely, you will read the following sentence:

```
Pancake cannot determine which component leads to the problem.
```

It often sources from the two things:

* A problem unrelated to computation happens, such as user interface, file open/save, loading new libraries and so on.
* Something running parallely in Rhinoceros or Grasshopper causes GH interface to hang.

The basic principle is to go through the stack trace, looking for familiar words. In 99% circumstances, the first one is where problems lie. Pay attention to the first word after the first `at`. There are certain possibilities:

* `Rhino.xxxxxxx` The problem is in Rhino **SDK**, attach the stacktrace and post your problem on McNeel support forum. The hang is unlikely associated with a geometric malfunction.
* `UnsafeNativeMethods.xxxxxxx` The problem is in Rhinoceros itself. If your Rhino doesn't crash, it is most likely because of too much data or too high accuracy. If your Rhino crashes later, it is most likely due to a malformed geometry.
* `Grasshopper.GUI.xxxxxxx` The problem is about Grasshopper user intreface. It is most likely about some components with customizable looking.
* `Grasshopper.Kernel.xxxxxxx` The problem is about Grasshopper kernel, most likely caused by file open/save and loading library.
* `Pancakexxxx.xxxxxxx` The problem is caused by a Pancake extension. Disable that extension and see Contact.
* `ghManager.xxxxxxx` The problem is caused by Pancake Core. See Contact.

However, if you experience many similiar hang with different reports, you may run into a parallel situation (the second source). It is even difficult for programmers to resolve such problems. We recommend you to disable Hang Protection and if the hang persists. It is possible that Pancake and something else are scrambling about system resources.

Pancake is striving to provide you enough information to resolve a hang, but it cannot be guaranteed. You are always welcome to send us your hang report so that newer Pancake may be able to recognize the problem better.

### Rare reports and their meanings

#### Stacktrace is empty. The problem might be associated with Rhinoceros solely. Refer to manual.

#### Cannot capture stacktrace. Rhinoceros might run at a low privilege level.

The two messages refer to same problem. There're several probable reasons. Your script is still saved, though.

* The hang occurs solely in Rhinoceros domain, which means it has nothing to do with Grasshopper.
  * For example, if you are running a time-consuming BRep boolean operation manually in Rhinoceros, Grasshopper will also hang.
* The IT guy in your company has restricted stack capture. Pancake (often as well as you) can do nothing about the limitation.
