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 <[email protected] <mailto:[email protected]>> 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 <[email protected]
        <mailto:[email protected]>>
        Date: Fri, Nov 13, 2009 at 9:53 AM
        Subject: Re: Bug in ShellFolder.
        To: Paulo Levi <[email protected] <mailto:[email protected]>>
        Cc: [email protected]
        <mailto:[email protected]>


        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.



Reply via email to