On Linux, there is no field 'controlTable' in Display.java. It is only present in the win32 version of Display.java. Indeed, when I run this analysis on a heap dump of an Eclipse application, it seems to report back that all SWT controls are lost. When I analyse one of those controls in detail, I see that there are paths from the Display object down to the control. These paths seem to start from the 'widgetTable' field in Display.Technically, it finds instances of org.eclipse.swt.widgets.Control which are not accessible from org.eclipse.swt.widgets.Display's field 'controlTable'.
Another thing I expected was that this analysis would take the 'isDisposed' state into account. When a control is disposed, I suspect it is fine that it is not accessible from Display anymore. The only thing left to do with the control is garbage collection. I would think that only controls that are not reachable from Display and are not disposed should be reported?