[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