Well, if you know it *should* exit, but doesn't... grab the pid, use win32::Process and win32::process::info , when you launch the process, grab a pid and start a 'watcher' process. If timeout > run time, do a Win32::Process::KillProcess on that process... As you suggest, it may be an odbc bug... Cheers & Good luck.