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

This article was previously published under Q266071
This article has been archived. It is offered "as is" and will no longer be updated.
Any multi-threaded host that uses JScript to make calls to marshaled objects may experience spurious script errors and application failures.
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.
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.
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.
For more information about developing Web-based solutions for Microsoft Internet Explorer, visit the following Microsoft Web sites:

Article ID: 266071 - Last Review: 01/10/2015 07:50:58 - Revision: 5.0

Microsoft JScript 5.0, Microsoft Internet Explorer 5.0, Microsoft Internet Explorer 5.01

  • kbnosurvey kbarchive kbbug kbfix KB266071