<Swing Dev> Fwd: Bug in ShellFolder.
Pavel Porvatov
Pavel.Porvatov at Sun.COM
Fri Nov 20 07:55:36 UTC 2009
Hi Paulo,
> So it is a won't fix then?
Who say that? There is a bug. It has not the highest priority and it's
the reason why it still not fixed.
Regards, Pavel.
> Seems really short-sighted, since probably forever people will want to
> serialize things when shutting down the application.
> Anyway the only operation i found that uses the COM thread is the
> shellfolder2 class. I'm sure at least this very common case can be
> worked around i its serialization routine.
>
> On Thu, Nov 19, 2009 at 11:23 AM, Pavel Porvatov
> <Pavel.Porvatov at sun.com <mailto:Pavel.Porvatov at sun.com>> wrote:
>
> Hi Paulo,
>
> The problem is described in the bug 6612928:
> Since 6u2 b01 we use the concurrent package to marshall COM calls
> to the dedicated thread. The investigation shows that this
> exception is thrown with a scenario like this:
>
> 1) user exits the application
> 2) the JVM starts invoking shutdown hooks
> 3) the COM thread's shutdown hook initiates shutdown of
> ThreadPoolExecutor (used for marshalling COM calls to the
> dedicated thread)
> 4) a new COM call is submitted from within another thread
>
>
> Couldn't something equivalent be done in writeReplace be used
> for the
> same thing inside one of those classes?
>
> Therefore you shouldn't call any methods that use COM thread after
> a shutdownhook. As a temporary workaround you can try to cache
> values for serialization BEFORE a shutdownhook is initialized.
>
> Regards, Pavel
>
> Forward. I already resolved it by serializing the string
> instead of
> the file, but i thought you should know, if you don't already, why
> people are seeing this exception on shutdown.
>
>
> ---------- Forwarded message ----------
> From: Alan Bateman <Alan.Bateman at sun.com
> <mailto:Alan.Bateman at sun.com>>
> Date: Fri, Nov 13, 2009 at 9:53 AM
> Subject: Re: Bug in ShellFolder.
> To: Paulo Levi <i30817 at gmail.com <mailto:i30817 at gmail.com>>
> Cc: nio-discuss at openjdk.java.net
> <mailto:nio-discuss at openjdk.java.net>
>
>
> Paulo Levi wrote:
>
>
> In this thread, i found a bug similar to a strange
> exception i was
> (not) seeing when overriding writeObject
>
> http://forums.java.net/jive/thread.jspa?threadID=31316&tstart=0
> <http://forums.java.net/jive/thread.jspa?threadID=31316&tstart=0>
>
> I found that it occurs because of saving files returned by the
> filechooser (extensions of sun.awt.shell.ShellFolder) when
> trying to
> serialize on a shutdownhook,
> because serializing triggers some file operation that
> needs to send a
> task to a Executor that is already closed.
> I avoid it by:
> out.writeObject(new File(((File) first).getAbsolutePath()));
> Couldn't something equivalent be done in writeReplace be
> used for the
> same thing inside one of those classes?
>
>
>
>
> Sorry, I can't help you here - I would suggest bringing it up
> on one
> of the Swing forums or mailing lists.
>
> -Alan.
>
>
>
>
More information about the swing-dev
mailing list