Dr. Mu has asked for the wisdom of the Perl Monks concerning the following question:

I have a Perl/Tk application which uses Win32::SerialPort. It was compiled using perl2exe and distributed to my client's customers as an exe file. A few of these customers have noted that when the program is terminated and restarted, it bombs due to the serial port already being open. Apparently when they exit the program the first time, the port isn't getting closed. According to the Win32::SerialPort docs, one way to close the serial port is to undef the port object, which I would expect to happen automatically when the program terminates. Nonetheless, I have tried to do this explicitly by including the undef in an exit routine bound to the main window's Destroy event. But this routine isn't getting called when the program is terminated. I'm not sure what to try next and, unfortunately, can't duplicate the problem on my own machine. Perhaps someone has had a similar encounter and can offer some advice. Thanks.

Replies are listed 'Best First'.
Re: Serial Port Left Open after Exit
by Zaxo (Archbishop) on Nov 15, 2002 at 07:21 UTC

    Since this is only seen by some users, I think you should question them about their machine setup and usage, looking for common factors. A common version and patch level of winders or perl * might be a clue. Another possibility is that some users get out of your app by an abnormal route (Ctrl-Alt-Delete or the like) which bypasses a graceful shutdown.

    * Not perl, since you're shipping the interpreter in the .exe.

    After Compline,
    Zaxo

      I have encountered differences/bugs in how WinXPP handles closing of objects compared to Win9X

      I'm investigating three different instances in relation to perl:
      1. Mail::Sender
      2. Win32::OLE and Word
      3. Command pipes in open

      I would be interested to know if you come up with any clues along Zaxos line of thinking!