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 ----------