Microsoft KB Archive/324866

From BetaArchive Wiki
Knowledge Base


Article ID: 324866

Article Last Modified on 2/1/2007



APPLIES TO

  • Microsoft Encarta Reference Suite 2001



This article was previously published under Q324866

SYMPTOMS

An interrupt service thread event may not be signaled after the interrupt service routine (ISR) reports an occurrence of the interrupt. This may result in a single interrupt being missed or all later interrupts being masked, depending on the design of the ISR and interrupt service thread.

CAUSE

A variable in the kernel that is used to manage the list of pending-event notifications was not declared as volatile.

RESOLUTION

A supported software update is now available from Microsoft as Windows CE 3.0 Core OS QFE Q324866. To resolve this problem immediately, click the following article number for information about obtaining Windows CE Platform Builder and core operating system software updates:

837392 How to locate core operating system fixes for Microsoft Windows CE Platform Builder products


The English version of this package should have the following file attributes or later:

   Size         File name
   --------------------------------------------
     997,976    020701_arm720_wce30-q324866.exe    
   1,063,512    020701_ppc403_wce30-q324866.exe    
   1,059,416    020701_ppc821_wce30-q324866.exe    
   1,043,032    020701_r3000_wce30-q324866.exe    
   1,043,032    020701_r4100_wce30-q324866.exe    
   1,043,032    020701_r4111_wce30-q324866.exe    
   1,100,376    020701_r4300_wce30-q324866.exe    
     997,976    020701_sa1100_wce30-q324866.exe 
                

The English version of this fix has the file attributes (or later) that are listed in the following table.

   Date         Time   Size         File name     Platform
   -----------------------------------------------------------------
   28-Jun-2002  10:49  1,349,836    Nkmain.lib    arm\ARM720\debug
   28-Jun-2002  10:49    102,400    Nkmain.pdb    arm\ARM720\debug
   28-Jun-2002  10:48    911,816    Nkmain.lib    arm\ARM720\retail
   28-Jun-2002  10:48    102,400    Nkmain.pdb    arm\ARM720\retail
   28-Jun-2002  10:39  1,346,440    Nkmain.lib    arm\SA1100\debug
   28-Jun-2002  10:39    102,400    Nkmain.pdb    arm\SA1100\debug
   28-Jun-2002  10:38    908,436    Nkmain.lib    arm\SA1100\retail
   28-Jun-2002  10:38    102,400    Nkmain.pdb    arm\SA1100\retail
   28-Jun-2002  10:43  1,535,260    Nkmain.lib    mips\R3000\debug
   28-Jun-2002  10:42    102,400    Nkmain.pdb    mips\R3000\debug
   28-Jun-2002  10:42  1,075,902    Nkmain.lib    mips\R3000\retail
   28-Jun-2002  10:42    102,400    Nkmain.pdb    mips\R3000\retail
   28-Jun-2002  10:44  1,537,416    Nkmain.lib    mips\R4100\debug
   28-Jun-2002  10:44    102,400    Nkmain.pdb    mips\R4100\debug
   28-Jun-2002  10:43  1,075,904    Nkmain.lib    mips\R4100\retail
   28-Jun-2002  10:43    102,400    Nkmain.pdb    mips\R4100\retail
   28-Jun-2002  10:45  1,561,730    Nkmain.lib    mips\R4111\debug
   28-Jun-2002  10:45    102,400    Nkmain.pdb    mips\R4111\debug
   28-Jun-2002  10:44    960,056    Nkmain.lib    mips\R4111\retail
   28-Jun-2002  10:44    102,400    Nkmain.pdb    mips\R4111\retail
   28-Jun-2002  10:46  1,603,028    Nkmain.lib    mips\R4300\debug
   28-Jun-2002  10:46    102,400    Nkmain.pdb    mips\R4300\debug
   28-Jun-2002  10:45  1,140,932    Nkmain.lib    mips\R4300\retail
   28-Jun-2002  10:45    102,400    Nkmain.pdb    mips\R4300\retail
   28-Jun-2002  10:47  1,446,390    Nkmain.lib    ppc\PPC403\debug
   28-Jun-2002  10:47    102,400    Nkmain.pdb    ppc\PPC403\debug
   28-Jun-2002  10:46    934,020    Nkmain.lib    ppc\PPC403\retail
   28-Jun-2002  10:46    102,400    Nkmain.pdb    ppc\PPC403\retail
   28-Jun-2002  10:48  1,444,462    Nkmain.lib    ppc\PPC821\debug
   28-Jun-2002  10:48    102,400    Nkmain.pdb    ppc\PPC821\debug
   28-Jun-2002  10:47    932,570    Nkmain.lib    ppc\PPC821\retail
   28-Jun-2002  10:47    102,400    Nkmain.pdb    ppc\PPC821\retail
   28-Jun-2002  10:40  1,299,164    Nkmain.lib    shx\SH3\debug
   28-Jun-2002  10:40     94,208    Nkmain.pdb    shx\SH3\debug
   28-Jun-2002  10:40    900,064    Nkmain.lib    shx\SH3\retail
   28-Jun-2002  10:40     94,208    Nkmain.pdb    shx\SH3\retail
   28-Jun-2002  10:41  1,325,112    Nkmain.lib    shx\SH4\debug
   28-Jun-2002  10:41     94,208    Nkmain.pdb    shx\SH4\debug
   28-Jun-2002  10:41    921,036    Nkmain.lib    shx\SH4\retail
   28-Jun-2002  10:41     94,208    Nkmain.pdb    shx\SH4\retail
   28-Jun-2002  10:50  1,372,564    Nkmain.lib    thumb\ARM720\debug
   28-Jun-2002  10:50    102,400    Nkmain.pdb    thumb\ARM720\debug
   28-Jun-2002  10:49    954,190    Nkmain.lib    thumb\ARM720\retail
   28-Jun-2002  10:49    102,400    Nkmain.pdb    thumb\ARM720\retail
   28-Jun-2002  10:38  1,544,018    Nkmain.lib    x86\i486\CE\debug
   28-Jun-2002  10:38    102,400    Nkmain.pdb    x86\i486\CE\debug
   28-Jun-2002  10:38  1,111,002    Nkmain.lib    x86\i486\CE\retail
   28-Jun-2002  10:38    102,400    Nkmain.pdb    x86\i486\CE\retail
                

MORE INFORMATION

A variable in the kernel that is used to manage the list of pending interrupt event notifications was not declared as volatile. Without the volatile keyword, the compiler optimizes the code to load a value from the variable into a CPU register for use, and does not reload it from RAM each time it is referenced in nearby code.

If an interrupt occurs while the value is being used from the CPU register, only the RAM copy of the value is updated by the ISR. The kernel is not aware that the interrupt occured, and may update the RAM variable with the value in the CPU register. When this occurs, the value that was changed by the ISR is overwritten.

This QFE updates the kernel to declare the variable as volatile so that each time the variable is referenced, the value will be fetched from RAM.

STATUS

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


Additional query words: ist

Keywords: kbbug kbenv kbfix kbqfe KB324866