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

dragged dialog freezes system on dispose

XMLWordPrintable

    • b06
    • x86
    • windows_xp

        FULL PRODUCT VERSION :
        java version "1.7.0_02"
        Java(TM) SE Runtime Environment (build 1.7.0_02-b13)
        Java HotSpot(TM) Client VM (build 22.0-b10, mixed mode, sharing)

        and

        java version "1.6.0_29"
        Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
        Java HotSpot(TM) Client VM (build 20.4-b02, mixed mode, sharing)

        ADDITIONAL OS VERSION INFORMATION :
        Microsoft Windows XP [Version 5.1.2600]
        and
        Microsoft Windows [Version 6.1.7601]


        A DESCRIPTION OF THE PROBLEM :
        When a JDialog (or JFrame) is being dragged (or just held) with the mouse while dispose() is called, the whole systems seems to freeze.
        On a multicore system only one of the cores shows 100% cpu usage, but the windows desktop and all other applications are unresponsive.

        The only way out of this state seems to be to ALT-Tab to a different application.


        STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
        Execute the code and drag the small dialog (and keep the mouse button pressed) until the dialog disappears.


        ACTUAL -
        All applications are unresponsive but continue working. E.g. the task manager will show the current CPU usage, but not react to mouse clicks.

        REPRODUCIBILITY :
        This bug can be reproduced always.

        ---------- BEGIN SOURCE ----------
        import javax.swing.JFrame;


        public class DialogExecuter extends JFrame {

            public static void main(String[] args) {
                new DialogExecuter();
            }

            public DialogExecuter() {
                this.setSize(800, 800);
                this.setVisible(true);

                Test test = new Test();
                test.start();
            }

            private class Test extends Thread {

                @Override
                public void run() {
                    DialogClass dialog = new DialogClass();

                    try {
                        sleep(5000);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    
                    // system will lock up when the dialog is dragged while being disposed
                    dialog.dispose();
                }
            }

            private class DialogClass extends JFrame {

                public DialogClass() {
                    init();
                }

                private void init() {
                    setBounds(50, 50, 100, 100);
                    setVisible(true);
                }
            }
        }

        ---------- END SOURCE ----------

              bagiras Oleg Pekhovskiy (Inactive)
              webbuggrp Webbug Group
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: