Hi,

we are facing a pretty strange problem when running our SmartGWT aplication on IE11 (other IE versions work fine).

IE11 goes into never ending cycles when working with our SmartGWT application.
It happens very randomly and we have no steps to reproduce it. The complexity of our application makes it impossible to post a sample of the code.
Most often it happens when users work with the application, then they minimize the browser window and after some time they restore it and try to continue working.

The never ending cycle is always something like this:

Code:
onVisibilityChanged_5
$isDrawn_1
getOrCreateJsObj_2
$getOrCreateJsObj_1
create_25
doInit
getOrCreateJsObj_2
$getOrCreateJsObj_1
create_25
...
After several experiments we found a problematic place in the BaseWidget.isCreated() native method:

Code:
public native boolean isCreated()/*-{
  var id = this.@com.smartgwt.client.widgets.BaseWidget::id;
  var obj;
  return id != null && (obj = $wnd.window[id]) != null && obj !== undefined && $wnd.isc.isA.Canvas(obj) === true;
}-*/;

This method returns false for existing Canvas object.
The strange thing is that calling $wnd.isc.isA.Canvas(obj) returns true, but it is not '===' to true - last segment of the condition.

I have checked it by the following modification of the method directly in the compiled javascript:

Code:
var trueCheckCount = 0;
function $isCreated_2(this$static){
  var id = this$static.id_0, returnTemp, stackIndex;
  $stack_0[stackIndex = ++$stackDepth_0] = $isCreated_2;
  var obj;
  returnTemp = id != null && (obj = $wnd.window[id]) != null && obj !== undefined && $wnd.isc.isA.Canvas(obj) == true;

  if (returnTemp) {
    if (!(id != null && (obj = $wnd.window[id]) != null && obj !== undefined && $wnd.isc.isA.Canvas(obj) === true)) {
      alert("TRUE != TRUE  (was OK: " + trueCheckCount + "x before)");
    } else {
      trueCheckCount++;
    }
  }
  
  $stackDepth_0 = stackIndex - 1;
  return returnTemp;
}
In different test runs, the alert was shown after different number of passes. E.g. on the first run it passed 358 698 times, on the second run it passed 330 125 times …

Does anybody have any idea what could be the problem?


Svatya

Browser: IE11 (Windows7/8)
SmartGWT: v9.0p_2014-03-02/LGPL Development Only (built 2014-03-02)
GWT: 2.4