[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Condor-users] Possible Limitation Condor vs Perl / IPC::open3



Tx for the thorought research, I was aware of such limitation on windows
( -| and |- ) since my first wrapper implementation used that technique,
which obviously failed due to the limitation you are refering.

That is the reason why I have looked at alternatives, like Open::open3
I have taken a look at the open3.pm file under perl lib directory, and there
is some fixes that got added to workaround the -| and |- limitations for
windows. The funny thing is that if I execute the perl script thru standard
dos command prompt, outside of condor scope, the script works fine ( the
process starts up and STDOUT/ERR gets redirected to me perl script for
processing )

As soon as the perl script get started thru the starter daemon, the perl
script runs for awhile and then exits with error code 22.
I have enabled full verbose for starter daemon, in order to see clues or
hints has to why it fails to run.

I have done futher tests also.
if I use perl standard open() to read a file, the perl script works fine
under condor
if I use perl standard open() to open a process, the perl script fails under
condor

Here are all the layers involved to start my process ( including wrapper )
    starter daemon
        dos command prompt ( from what I could see in the Started log, it
starts "cmd /Q /C" )
            perl mywrapper.pl ( my wrapper uses IPC::open3 to start the
process xsibatch.bat )
                xsibatch.bat ( this file setup all the env var required,
then fires the .exe file )
                    xsibatch.exe

I know it may look overkill to you, but it works when initiating the perl
script from standard dos command prompt, but fails under condor.

Any clue what could happen?

Filip, you mentionned you were using java to do similar things. I have not
used Java....
Is it complex to achieve? pretty sure it is not ;)
I can send you my perl wrapper, so you can see what I am achieving with it.

Tx everyone for your help.
Dave.
----- Original Message ----- 
From: "Ian Chesal" <ICHESAL@xxxxxxxxxx>
To: "Dave Lajoie" <davelaj@xxxxxxxxxxxx>; "Condor-Users Mail List"
<condor-users@xxxxxxxxxxx>
Sent: Sunday, February 27, 2005 8:14 PM
Subject: RE: [Condor-users] Possible Limitation Condor vs Perl / IPC::open3


> Is there a know limitation about fork/exec on condor, running
> under windows?

Independent of using Perl with Condor on Windows there are limits to
what you can do with fork in Perl under Windows. I'm assuming you're
using ActiveState Perl in this case. See:

http://aspn.activestate.com/ASPN/docs/ActivePerl/RELEASE.html

Specifically:

"The fork() emulation has known limitations. See perlfork for a detailed
summary. In particular, fork() emulation will not work correctly with
extensions that are either not thread-safe, or maintain internal state
that cannot be cloned in the psuedo-child process. This caveat currently
applies to extensions such as Tk and Storable."

The perlfork information is here:
http://aspn.activestate.com/ASPN/docs/ActivePerl/lib/Pod/perlfork.html

It says, under the CAVEATS AND LIMITATIONS section, that:

"The open(FOO, "|-") and open(BAR, "-|") constructs are not yet
implemented."

And if you look at the IPC::Open3 docs here:
http://aspn.activestate.com/ASPN/docs/ActivePerl/lib/IPC/Open3.html --
you can see:

"Note if you specify - as the command, in an analogous fashion to
open(FOO, "-|") the child process will just be the forked Perl process
rather than an external command. This feature isn't yet supported on
Win32 platforms."

Any chance you've just hit upon this limitation? You didn't mention if
you were able to run your perl script from the command line.

- Ian C.