diff -r 327b35573471 src/java.desktop/windows/native/libawt/windows/awt_Component.cpp
--- a/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp	Wed Nov 27 16:39:52 2019 +0530
+++ b/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp	Fri Nov 29 19:34:59 2019 +0000
@@ -27,6 +27,7 @@
 
 #include <windowsx.h>
 #include <zmouse.h>
+#include <stdio.h>
 
 #include "jlong.h"
 #include "awt_AWTEvent.h"
@@ -1373,6 +1374,11 @@
       case WM_AWT_GETDC:
       {
             HDC hDC;
+            printf(">>>WM_AWT_GETDC:\n");
+            printf("  PassiveDCList:\n");
+            passiveDCList.PrintDCs();
+            printf("  to remove:\n");
+            passiveDCList.PrintDCs(GetHWnd());
             // First, release the DCs scheduled for deletion
             ReleaseDCList(GetHWnd(), passiveDCList);
 
@@ -1396,12 +1402,23 @@
             returnStruct->hDC = hDC;
             retValue = (LRESULT)returnStruct;
             mr = mrConsume;
+            printf("  < hDC = 0x%08p, hWnd = 0x%08p\n",
+                        hDC, GetHWnd());
+            printf("<<<WM_AWT_GETDC\n");
+            fflush(stdout);
             break;
       }
       case WM_AWT_RELEASEDC:
       {
             HDC hDC = (HDC)wParam;
+            printf(">>>WM_AWT_RELEASEDC:\n");
             MoveDCToPassiveList(hDC, GetHWnd());
+            printf("  PassiveDCList:\n");
+            passiveDCList.PrintDCs();
+            printf("  to remove:\n");
+            passiveDCList.PrintDCs(GetHWnd());
+            printf("<<<WM_AWT_RELEASEDC\n");
+            fflush(stdout);
             ReleaseDCList(GetHWnd(), passiveDCList);
             mr = mrConsume;
             break;
@@ -1411,6 +1428,13 @@
             // Called during Component destruction.  Gets current list of
             // DC's associated with Component and releases each DC.
             ReleaseDCList(GetHWnd(), activeDCList);
+            printf(">>>WM_AWT_RELEASE_ALL_DCS:\n");
+            printf("  PassiveDCList:\n");
+            passiveDCList.PrintDCs();
+            printf("  to remove:\n");
+            passiveDCList.PrintDCs(GetHWnd());
+            printf("<<<WM_AWT_RELEASE_ALL_DCS\n");
+            fflush(stdout);
             ReleaseDCList(GetHWnd(), passiveDCList);
             mr = mrConsume;
             break;
@@ -7436,6 +7460,39 @@
     return newListPtr;
 }
 
+void DCList::PrintDCs()
+{
+    printf("    >>> DCList::PrintDCs()\n");
+
+    listLock.Enter();
+    DCItem *listPtr = head;
+    while (listPtr) {
+        printf("        hDC = 0x%08p, hWnd = 0x%08p\n",
+               listPtr->hDC, listPtr->hWnd);
+        listPtr = listPtr->next;
+    }
+    listLock.Leave();
+
+    printf("    <<< DCList::PrintDCs()\n");
+}
+
+void DCList::PrintDCs(HWND hWnd)
+{
+    printf("    >>> DCList::PrintDCs(hWnd = 0x%08p)\n", hWnd);
+
+    listLock.Enter();
+    DCItem *listPtr = head;
+    while (listPtr) {
+        if (listPtr->hWnd == hWnd) {
+            printf("        hDC = 0x%08p, hWnd = 0x%08p\n",
+                   listPtr->hDC, listPtr->hWnd);
+        }
+        listPtr = listPtr->next;
+    }
+    listLock.Leave();
+
+    printf("    <<< DCList::PrintDCs(hWnd)\n");
+}
 
 /**
  * Realize palettes of all existing HDC objects
@@ -7454,6 +7511,8 @@
 void MoveDCToPassiveList(HDC hDC, HWND hWnd) {
     DCItem *removedDC;
     if ((removedDC = activeDCList.RemoveDC(hDC, hWnd)) != NULL) {
+        printf("  MoveDCToPassiveList(hDC = 0x%08p, hWnd = 0x%08p\n", hDC, hWnd);
+        fflush(stdout);
         passiveDCList.AddDCItem(removedDC);
     }
 }
diff -r 327b35573471 src/java.desktop/windows/native/libawt/windows/awt_Component.h
--- a/src/java.desktop/windows/native/libawt/windows/awt_Component.h	Wed Nov 27 16:39:52 2019 +0530
+++ b/src/java.desktop/windows/native/libawt/windows/awt_Component.h	Fri Nov 29 19:34:59 2019 +0000
@@ -923,6 +923,8 @@
     void            AddDCItem(DCItem *newItem);
     DCItem          *RemoveDC(HDC hDC, HWND hWnd);
     DCItem          *RemoveAllDCs(HWND hWnd);
+    void            PrintDCs(HWND hWnd);
+    void            PrintDCs();
     void            RealizePalettes(int screen);
 };
 
