Some IME input method issues

Someone told me that on some x86 OS ( XP or Win7 x86 ), some IME input method will prevent firefox ( official edition or 3rd build edition ) exit normally, such as sogou or QQ pinyi input method.

I reproduce the issue on my VMware XP OS.

I save the dump information, which will stop in:

I try to change WaitForSingleObject to MsgWaitForMultipleObjects, but also has the problem. After I see the dump stack, it seems that the shutdown stack record sub thread crashed, and I read the source code, found that all channel will use the shutdown stack record.

  const char* releaseChannel = NS_STRINGIFY(MOZ_UPDATE_CHANNEL);
//  if (strcmp(releaseChannel, "nightly") == 0 ||
//      strcmp(releaseChannel, "default") == 0) {
    if (strcmp(releaseChannel, "nightly") == 0 ) {
    gShutdownChecks = SCM_RECORD;
  } else {
    gShutdownChecks = SCM_NOTHING;
  }

 

So I try to get rid of “default” channel section, only keep nightly, the final firefox and the above IME input method works well.

update: For other editions such as official or other 3rd build, set MOZ_SHUTDOWN_CHECKS = nothing, also can fix the issue.