Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6995769

occasion NPE thrown from SwingUtilities.computeIntersection()

XMLWordPrintable

    • b01
    • generic, x86
    • linux, solaris
    • Not verified

      FULL PRODUCT VERSION :
      1.6.0_22 and several previous versions, not sure if there are any older than 1.6.0_18.
      earlier versions of OpenJDK, such as 1.6.0_0

      ADDITIONAL OS VERSION INFORMATION :
      Various version of Linux.

      A DESCRIPTION OF THE PROBLEM :
      We're seeing occasional NullPointerExceptions from SwingUtilities.computeIntersection() on Linux. Initially, these were only coming from OpenJDK. This may provide a clue. If some feature of the painting system in OpenJDK for Linux was moved to JDK 1.6 recently (around 1.6.0_18 or so), that may contain the cause.

      I can't provide a test case, but hopefully this information will be useful to the developers.

      We have about 100,000 Windows users and 8,000 Linux users, and with automatic uncaught exception reporting (with user approval), we're getting one or two of these per day from our Linux users (and none from Windows). Users have reported that these happen most often on application startup and when waking up after the system has been asleep, but sometimes while running.

      We do not call any GUI methods from outside the EDT. In previous Beta releases and in the versions we use ourselves, we use AspectJ to inject a thread test before every GUI call, which will report an error if these methods are called from outside the EDT. So incorrect thread handling on our part is not an issue.

      We are not pushing event queues as in 6542185.
      We are not using Web Start.

      The first GUI calls in our code are:

               // Work-around for Java Access Bridge problem.
               // Access bridge dlls must be loaded before
               // jawt dlls are loaded. This call will force that.
               new JFrame();
            
               // Avoid double buffering conflict with copyArea()
               // for some Java versions.
               RepaintManager.setCurrentManager(new RepaintManager());


      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Possibly: download and install jGRASP on a Linux system, use a script to start it up and shut it down repeatedly. It may crash within a few thousand starts.


      ACTUAL -
      Repainting stack dumps.

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      1.6.0_22 on 2.6.35-gentoo-r7-intel, amd64:
      1.6.0_20 on 2.6.32-24-generic, amd64 (identical dump to above):
      java.lang.NullPointerException
      at javax.swing.SwingUtilities.computeIntersection(SwingUtilities.java:470)
      at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:779)
      at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:713)
      at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:693)
      at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:125)
      at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
      at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
      at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
      at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
      at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
      at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
      at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
      at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

      1.6.0_18 on 2.6.32-24-generic, i386
      java.lang.NullPointerException
      at javax.swing.SwingUtilities.computeIntersection(SwingUtilities.java:487)
      at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:734)
      at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:696)
      at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:676)
      at javax.swing.RepaintManager.access$700(RepaintManager.java:57)
      at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1550)
      at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:226)
      at java.awt.EventQueue.dispatchEvent(EventQueue.java:602)
      at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
      at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
      at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
      at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
      at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
      at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)

      OpenJDK 1.6.0_0, 2.6.28-15-generic, i386
      at javax.swing.SwingUtilities.computeIntersection(SwingUtilities.java:490)
      at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:734)
      at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:696)
      at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:676)
      at javax.swing.RepaintManager.access$700(RepaintManager.java:57)
      at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1550)
      at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:226)
      at java.awt.EventQueue.dispatchEvent(EventQueue.java:602)
      at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
      at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
      at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
      at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
      at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
      at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)


      REPRODUCIBILITY :
      This bug can be reproduced rarely.

      CUSTOMER SUBMITTED WORKAROUND :
      Ignore the exception, but I'm not sure if it might do some "damage".
      http://netbeans.org/bugzilla/show_bug.cgi?id=160014 shows that this bug is affecting NetBeans users as well. (See "Exception Reporter" link for details. Most recently on Windows using e.g. 6u23, earlier on Macs with JDK 5.)

            rupashka Pavel Porvatov (Inactive)
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: