Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!news.albasani.net!.POSTED!not-for-mail From: Jan Burse Newsgroups: comp.lang.java.programmer Subject: Re: refusal to quit Date: Tue, 02 Sep 2014 12:17:14 +0200 Organization: albasani.net Lines: 38 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Trace: news.albasani.net R1cvZGF3+pgLuZ5PANNLGSWPg296udDoU4anZPkTpp8xwcP+qnuQ4WA9Pw9a5Usq+qQhYeBpe9aR5QGz/x7UQA== NNTP-Posting-Date: Tue, 2 Sep 2014 10:17:14 +0000 (UTC) Injection-Info: news.albasani.net; logging-data="qFYV9y9gW/wgJXFy7FlbAaY6BjsYFmKGvJKL8pp5+hUtCpWJxKzNXm1sEHuibHDbePZmnay8Cn6FqXHKXQT/DVFmoSxMEZRfN7rvAW/fFTuu59PJ9KlkC1hQUv0jpHQU"; mail-complaints-to="abuse@albasani.net" User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:29.0) Gecko/20100101 Firefox/29.0 SeaMonkey/2.26.1 In-Reply-To: Cancel-Lock: sha1:zonr4iVHupt9Qp9bm8tDycwWrcw= Xref: csiph.com comp.lang.java.programmer:29890 Roedy Green schrieb: > Sometimes programs simply refuse to quit after main has terminated. > > Sometimes the app is single-thread so I am baffled what it is waiting > for. > > Practically I can make things work by adding a System.exit(0) > as the last thing in main. > > However, I would like to understand what is going on. Is there a way > to shed some light on why a program won't quit? > I had the same problem once. It turned out that there was a pop up menu still around, which made the runtime think that swing is still running. And the problem was not persistent to all platforms among Linux, Windows and Mac. If I remember well it happened only on windows. Don't remember the JRE version though. The problem was very subtle and I solved it by moving the field holding the pop up from a static variable to a class instance variable, of a frame. Now each of my frame has its own local pop up, and the problem seems to be gone. But a little bit more ram is needed when multiple frames are open, and when they use the same pop up. Bye BTW: I also noticed that pop ups don't receive tree traversal events. So I needed to call SwingUtilities updateComponentTreeUI extra on the pop ups.