[Bioperl-l] Blast return codes (fwd)

Matthew Laird lairdm at sfu.ca
Tue Nov 23 13:26:50 EST 2004

About a year ago I raised a question about bioperl (standaloneblast) 
throwing an error claiming Blast was dying with a return code of -1.  
After a bit of back and forth which I hope is readable in the thread 
below, we never really found an answer....

Looking through the bioperl list archives I find another reference to this 
error in July 
(http://bioperl.org/pipermail/bioperl-l/2004-July/016330.html), makes me 
feel better that I'm not alone in this problem.

Anyhow, to this date the only solution we've found to this problem is in 
the install documentation for our package, instructing users to comment 
out the line in bioperl that checks the return code from blastall, as that 
Blast actually runs fine and returns a result, perl is just getting this 
odd return code.

We've checked on a few platforms and see it consistantly on Solaris (both 
SPARC & x86), OS X, and some linux distributions.  Actually, with linux 
even two different machines with the same distribution, one can have the 
problem, the other might not.

Is there any know reason and solution for this issue?  Any assistance 
would be greatly appriciated.


---------- Forwarded message ----------
Date: Fri, 12 Dec 2003 15:23:56 -0800 (PST)
From: Matthew Laird <lairdm at sfu.ca>
To: Keith James <kdj at sanger.ac.uk>
Cc: bioperl-l at bioperl.org
Subject: Re: [Bioperl-l] Blast return codes

I did some more investigating and it's beginning to look a lot more 
bizarre.  I changed the bioperl code to see if the blast command was 
actually run regardless of the -1 return code.  And yes, blast did run and 
the result file is there - it's only that perl is returning a -1 to 
bioperl for some reason.

I was actually just speaking with someone in another lab and he said he 
used to experience this problem too, his solution was to just write his 
own modules. :)

So this certainly seems like some deep down perl/OS voodoo.

I'd still be interested in hearing what envirnoment variables to set to 
run t/StandAloneBlast.t.


On Thu, 11 Dec 2003, Matthew Laird wrote:

> Thanks for your assistance so far, I've been trying to find the difference 
> between the machines that do work and the ones that don't.  The two most 
> similar machines which some do and some don't work are a group of Red Hat 
> 9 machines.
> The machines are running Red Hat 9 and Perl 5.8.0.  I've tried both 
> bioperl 1.2.1 and 1.2.3.  The only other difference I could find was that 
> perl was built from source on one of the machines that worked.  I tried 
> doing that on one of the non-working machines and had no success.
> I've tried running the StandAloneBlast.t, what environment variables do I 
> need set?  I receive:
> [root at ssb7121-5 t]# perl StandAloneBlast.t
> 1..10
> ok 1
> ok 2
> ok 3
> ok 4
> Blast Database ecoli.nt not found at StandAloneBlast.t line 67.
> Blast Database swissprot not found at StandAloneBlast.t line 72.
> Blast databases(s) not found, skipping remaining  tests at 
> StandAloneBlast.t line 76.
> ok 5 # skip Blast or env variables not installed correctly
> ok 6 # skip Blast or env variables not installed correctly
> ok 7 # skip Blast or env variables not installed correctly
> ok 8 # skip Blast or env variables not installed correctly
> ok 9 # skip Blast or env variables not installed correctly
> ok 10 # skip Blast or env variables not installed correctly
> Obviously I need to set some variable so it can find the blast database.
> Thanks again.
> On 11 Dec 2003, Keith James wrote:
> > >>>>> "Matthew" == Matthew Laird <lairdm at sfu.ca> writes:
> > 
> >     Matthew> Well, that's a step in the right direction, I have a
> >     Matthew> little more information now.  I added a $! before the $?
> >     Matthew> and received:
> > 
> >     Matthew> ------------- EXCEPTION ------------- MSG: blastall call
> >     Matthew> crashed: -1 No child processes /usr/local/blast/blastall
> >     Matthew> -p blastp -d
> >     Matthew> /usr/local/psort/conf/analysis/sclblast/sclblast -i
> >     Matthew> /tmp/8Dt6zF1U59 -e 1e-09 -o /tmp/ojP9n04LZh
> > 
> >     Matthew> STACK Bio::Tools::Run::StandAloneBlast::_runblast
> >     Matthew> /usr/lib/perl5/site_perl/5.8.0/Bio/Tools/Run/StandAloneBlast.pm:640
> > 
> >     Matthew> This is where we get into Perl voodoo beyond my league,
> >     Matthew> "No child processes" - does that ring bells for anyone?
> >     Matthew> Thanks again.
> > 
> > That's interesting. I think we need to know your OS platform and Perl
> > version to get any further.
> > 
> > I think that the value left by a system call in $? is the same as if a
> > wait system call were made. No child processes is a Unix error code
> > (ECHILD) which can be caused by a wait, being reported by Perl.
> > 
> > What happens if you run the test for StandAloneBlast? (t/StandAloneBlast.t)
> > 
> > Keith
> > 
> > 

Matthew Laird
SysAdmin/Web Developer, Brinkman Laboratory, MBB Dept.
Simon Fraser University

More information about the Bioperl-l mailing list