BUG: Multiple Iterations of ACTIVATE POPUP Cause GP Fault

ID: Q108718

The information in this article applies to:

SYMPTOMS

Performing many iterations of the ACTIVATE POPUP command in a loop causes an "Insufficient Memory" error to occur. In addition, the arrows in the scroll bars of the Command window may disappear and GDI memory will be exhausted.

CAUSE

ACTIVATE POPUP uses Window's graphic device interface (GDI) resources. DEACTIVATE POPUP does not release GDI resources. Once the GDI resources are exhausted, Windows will return an "Insufficient Memory" error message or may even cause a general protection (GP) fault.

There is no set number of iterations of ACTIVATE POPUP that will trigger an "Insufficient Memory" message.

RESOLUTION

To avoid the "Insufficient Memory" message, use a RELEASE POPUP <popupname> command after the DEACTIVATE POPUP <popupname>.

STATUS

Microsoft has confirmed this to be a problem in FoxPro versions 2.5, 2.5a, 2.5b, and 2.6 for Windows. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.

MORE INFORMATION

Steps to Reproduce Problem

WARNING: Close all running applications and save your data before running this code.

   FOR pops = 1 TO 100
      WAIT WINDOW "Popup Number "+LTRIM(STR(pops)) NOWAIT
      popname = "pop" + LTRIM(STR(pops))
      DEFINE POPUP (popname) FROM 2, SCOL()/3

      FOR bars = 1 TO 50
         barname = "bar" + LTRIM(STR(bars))
         DEFINE BAR bars OF (popname) PROMPT barname
      ENDFOR

      ACTIVATE POPUP (popname) NOWAIT
      DEACTIVATE POPUP (popname)
   ENDFOR

Additional reference words: FoxWin 2.50 2.50a 2.50b buglist2.50 buglist2.50a buglist2.50b gpf errmsg err msg buglist2.60 2.6 KBCategory: kbenv kbprg kbbuglist KBSubcategory: FxenvMemory

Last Reviewed: June 27, 1995