FIX: JScript Garbage Collector Is in Inconsistent State When Many Cross-Thread Calls Are Made (266071)



The information in this article applies to:

  • Microsoft JScript 5.0
  • Microsoft Internet Explorer (Programming) 5
  • Microsoft Internet Explorer (Programming) 5.01

This article was previously published under Q266071

SYMPTOMS

Any multi-threaded host that uses JScript to make calls to marshaled objects may experience spurious script errors and application failures.

CAUSE

JScript implements a mark and sweep garbage collector. During the sweep phase of a garbage collection, if the garbage collector has a reference to a proxy, a release of the proxy causes a call out to the marshaled object. During this call out, another thread may make a call into the thread on which the garbage collector is running. The garbage collector has code to detect this case and abort the garbage collection procedure so that the incoming call can execute script code correctly.

To abort the garbage collector in progress, the code must clear the bits set during the mark phase. The code was incorrectly setting the bits instead of clearing them.

RESOLUTION

To resolve this problem, obtain the latest service pack for Windows 2000. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

260910 How to Obtain the Latest Windows 2000 Service Pack

To resolve this problem, install version 5.5 of the Microsoft Windows Script Engines.

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article.

This problem was first corrected in Windows 2000 Service Pack 1.

This problem was corrected in version 5.5 of the Windows Script Engines.

REFERENCES

For more information about developing Web-based solutions for Microsoft Internet Explorer, visit the following Microsoft Web sites:

Modification Type:MajorLast Reviewed:5/11/2006
Keywords:kbBug kbfix KB266071