<Swing Dev> Is the following code supposed to leak?

Roman Kennke roman at kennke.org
Wed Aug 24 12:41:12 UTC 2011


Speaking of boundaries, 2 points I would like to add:

- We don't bend the Java specs to prevent System.exit() from exiting, we
only install a SecurityManager. That is natural, because I don't want
users of the demos to mess with my server. For example, if you open a
file dialog in the demo, without the SecurityManager, users would be
able to modify files on my server. Or terminate the VM. All of which I
don't want.
- I noticed that L&F is not set in an AppContext like everything else in
Swing that would otherwise be a static/global field. This has the funny
effect that when one user in the demo that I linked sets a different
L&F, it gets shared to all users, current and future. Very funny.
However, I have my doubt if that is reasonable behavior, even in more
normal desktop/applet settings. Wouldn't there be a chance of unwanted
interference between apps in different appcontexts? Even potential
security problems? I guess I could design a malicious L&F that could
exploit the fact that it gets leaked to other AppContexts to do bad
things (not sure how though, but the fact that it's leaked out sounds a
bit scary).

Roman


Am Mittwoch, den 24.08.2011, 16:26 +0400 schrieb Pavel Porvatov:
> Hi Neugens, 
> > The vm doesn't terminate.
> > 
> > One VM to rule them all: the instances are separated via the
> > appcontext, but there is just one server vm running.
> I'm not sure that's correct behavior. According to javadoc of
> java.lang.System#exit: "Terminates the currently running Java Virtual
> Machine.".
> 
> Regards, Pavel
> > 
> > Cheers,
> > Mario
> > -- 
> > Sent from HTC Desire...
> > 
> > pgp key: http://subkeys.pgp.net/ PGP Key ID: 80F240CF
> > Fingerprint: BA39 9666 94EC 8B73 27FA  FC7C 4086 63E3 80F2 40CF
> > 
> > http://www.icedrobot.org
> > 
> > Proud GNU Classpath developer: http://www.classpath.org/
> > Read About us at: http://planet.classpath.org
> > OpenJDK: http://openjdk.java.net/projects/caciocavallo/
> > 
> > Please, support open standards:
> > http://endsoftpatents.org/
> > 
> > 
> > ----- Reply message -----
> > Da: "Pavel Porvatov" <pavel.porvatov at oracle.com>
> > Data: mer, ago 24, 2011 12:57
> > Oggetto: <Swing Dev> Is the following code supposed to leak?
> > A: "Clemens Eisserer" <linuxhippy at gmail.com>
> > Cc: <swing-dev at openjdk.java.net>
> > 
> > 
> > Hi Clemens,
> > > Hi Pavel,
> > >
> > >     In common case you shouldn't remove listeners of course. But
> > in
> > >     your case you must remove listeners because of editor is
> > shared
> > >     between all JTextComponents (see javadoc of the
> > >     JTextComponent#getActions method and BasicTextUI#getEditorKit
> > >     implementation). So you added listeners not to a
> > JTextComponent
> > >     instance, but to the shared editor.
> > >
> > >
> > > Thanks a lot for clarification, I wasn't sure this behaviour is 
> > > intended :/
> > > Seems I have to adopt the jfc-demo Notepad to not leak memory
> > when 
> > > running on caciocavallo-web ;)
> > I took a look at the Notepad demo and didn't find any problems. It
> > adds 
> > listeners only when the demo starts and there is no need to remove 
> > listeners, because the demo closes via System.exit(0). Could you
> > please 
> > explain how did you get memory leak in the demo?
> > 
> > Regards, Pavel
> > 
> > 
> 





More information about the swing-dev mailing list