[maker-devel] WARNING: Multiple MAKER processes have been started in the same directory.

Carson Holt carsonhh at gmail.com
Fri Aug 3 08:28:44 MDT 2012


I think I've finally figured it out, as well as a fix to quash this error
for good.  It not strictly a Bioperl issue.  It's an an issue with
AnyDBM_File as well as it's documentation (as it recommends setting
@AnyDBM_File::ISA in code that uses it but never mentions potential
caveats of multiple modules using it).

Basically if you set @AnyDBM_File::ISA = qw(DB_File GDBM_File NDBM_File
SDBM_File) and then call 'use AnyDBM_File', the AnyDBM_File module will
actually preprocess and trim @AnyDBM_File::ISA using this code -->

my $mod;
for $mod (@ISA) {
	if (eval "require $mod") {
		@ISA = ($mod);  # if we leave @ISA alone, warnings abound
		return 1;
	}
}


However if you load any other module that also sets @AnyDBM_File::ISA that
code doesn’t get called on the next 'use AnyDBM_File'.  So you will loose
the preprocessing and basically mess up @AnyDBM_File::ISA if you ever have
two modules loaded at the same time that use AnyDBM_File.

So loading Bio::DB::Fasta before or after a module that also uses
AnyDBM_File has the potential to result in errors.

Example:
use Bio::DB::Fasta;
print join(',', @AnyDBM_File::ISA );

Result --> DB_File


use Bio::DB::Qual;

use Bio::DB::Fasta;

print join(',', @AnyDBM_File::ISA );


Result --> DB_File,GDBM_File,NDBM_File,SDBM_File


The second module messes up @AnyDBM_File::ISA.  It also happens if you
load them in reverse.
Perhaps changing the BEGIN block in Bio::DB::Fasta, Bio::DB::Qual, and any
other any other code using AnyDBM_File to include one of these alternate
BEGIN blocks.

BEGIN {
	@AnyDBM_File::ISA = qw(DB_File GDBM_File NDBM_File SDBM_File)
if(!$INC{'AnyDBM_File.pm'});
}


Or 

BEGIN {
	for my $mod (qw(DB_File GDBM_File NDBM_File SDBM_File)) {
		if (eval "require $mod") {
			@AnyDBM_File::ISA = ($mod);
			last;
		}
	}

}


As far as maker goes, I've actually removed all use of AnyDBM_File from
it's modules now, so it won't be an issue there any more, so Bioperl is
the only one left to fix.

Thanks,
Carson



On 12-08-03 9:51 AM, "Fields, Christopher J" <cjfields at illinois.edu> wrote:

>I just want to add in, if there are any fixes that need to be made to
>Bioperl let me know.  We're trying to move towards an AnyDBM_File
>approach, but I think this effort has stalled.
>
>chris
>
>On Aug 3, 2012, at 12:11 AM, Carson Holt <carsonhh at gmail.com>
> wrote:
>
>> I'm sorry I'm confused.  Which warning? the segmentation fault you
>> mentioned before?  For now I would say it's best to first try maker once
>> outside of MPI to verify that the segmentation fault no longer happens
>> before moving onto the MPI environment.
>> 
>> Make sure to run with the -f flag when retrying after the fix suggested
>>by
>> Felix, so maker completely restarts from scratch.  That way you can see
>> that the fasta database is being generated from start to finish (and is
>> not just being reread from the successful run under the --debug flag).
>> 
>> Make sure that the fix Felix sent is also applied to the Bioperl
>> Bio::DB::Fasta module and not just the /maker/lib/ directory or the seg
>> fault will not go away otherwise (if it is infact one of perl's DB
>>modules
>> causing the issue, which it likely is).  Your error sounds similar to an
>> error Felix and Thomas encountered some time ago
>> 
>>(http://box290.bluehost.com/pipermail/maker-devel_yandell-lab.org/2012-Ma
>>rc
>> h/000941.html).  Basically one of perl's native DB modules or the
>>database
>> the module relies on are broken, so the command line snippet is cutting
>> any calls to those other databases out of maker and Bioperl (which
>>should
>> be ok if you have at minimum a working Berkley DB and DB_File module on
>> your system).
>> 
>> Use this command line to get the correct directory for applying the
>> changes to Bioperl as well -->
>> perl -e 'use Bio::DB::Fasta; ($dir = $INC{"Bio/DB/Fasta.pm"}) =~
>> s/[^\/]+$//; print "$dir\n"'
>> 
>> Then copy the directory location-->
>> 
>> cd <to_that_directory>
>> sed -i 's/qw(DB_File GDBM_File NDBM_File SDBM_File)/qw(DB_File)/'\
>>  $(grep -l 'DB_File GDBM_File NDBM_File SDBM_File' *)
>> 
>> 
>> 
>> Finally run maker with the -f flag.  If it works let me know, and then
>>you
>> can give MPI a shot.  Make said yes to the "compile for MPI question"
>> asked during the maker install process or mpiexec will fail when running
>> maker.  If it doesn¹t work without MPI or if it works and then MPI
>>fails,
>> make sure to collect the STDERR in a text file and send it to me.  I
>>will
>> probably have you run it with the --debug flag as well following any
>> initial failure (just to get the extra status messages about your system
>> configuration).
>> 
>> Thanks,
>> Carson
>> 
>> 
>> 
>> On 12-08-03 12:30 AM, "Michael Thon" <mike.thon at gmail.com> wrote:
>> 
>>> I get this warning when running the mpi version of maker.  Should I be
>>> concerned?  the command I use is this:
>>> 
>>> mpiexec -n 8 maker
>>> 
>>> -Mike
>>> 
>>> 
>>> _______________________________________________
>>> maker-devel mailing list
>>> maker-devel at box290.bluehost.com
>>> http://box290.bluehost.com/mailman/listinfo/maker-devel_yandell-lab.org
>> 
>> 
>> 
>> _______________________________________________
>> maker-devel mailing list
>> maker-devel at box290.bluehost.com
>> http://box290.bluehost.com/mailman/listinfo/maker-devel_yandell-lab.org
>






More information about the maker-devel mailing list