[Debian-med-packaging] Bug#661793: bioperl: Error in berkeleydb3.pm while creating Temp file

Olivier Sallou olivier.sallou at irisa.fr
Fri Mar 2 08:28:06 UTC 2012



Le 3/3/12 12:04 AM, Florent Angly a écrit :
> Hi Olivier,
>
> Do you have an simple example that reproduces this error?
I have put a sample script extracted from berkeleydb3.pm to reproduce
the error in the bug
>
> The syntax for tying to a DB_File is, according to `perldoc DB_File`:
>> [$X =] tie %hash,  'DB_File', [$filename, $flags, $mode, $DB_HASH] ;
>> [$X =] tie %hash,  'DB_File', $filename, $flags, $mode, $DB_BTREE ;
> So, the order of the parameters is important and you cannot simply
> interchange them.
I don't, it is upstream.... ;-)
In the perldoc
(http://perldoc.perl.org/DB_File.html#Using-DB_File-with-Berkeley-DB-version-2-or-greater)
examples there is:
tie
<http://perldoc.perl.org/functions/tie.html>%h,"DB_File","tree",O_RDWR|O_CREAT,0666,$DB_BTREE

while in the berkeleydb3.pm there is

 tie %sort,'DB_File',$name,0666,O_CREAT|O_RDWR,$numeric_cmp

In the patch I propose, I set "O_RDWR|O_CREAT, 0666" instead of "0666,O_CREAT|O_RDWR".

Si it is upstream that put parameters in the wrong order.
Though it works in a previous perl on a Reat Hat system I tested.

>
> The Perl module in question is at
> https://github.com/bioperl/bioperl-live/blob/master/Bio/DB/SeqFeature/Store/berkeleydb3.pm.
> The calling script has created and opened a temporary file and it is
> trying to put a Berkeley database in this temporary file. This
> Berkeley DB creation step fails. I suspect that it may be a permission
> problem... Does the mode 0644 solve the problem? Is there enough space
> on the disk?
>
> Running the script as follows will help diagnostic what went wrong:
>> perl -d `which bp_seqfeature_load.pl` [options]
> Then press 'c' and send the entire backtrace of the crash when it
> happens.
There is no crash, the error is raised and script ends.
>
> Best,
>
> Florent
>
>
>
>
> On 01/03/12 20:23, Olivier Sallou wrote:
>> Package: bioperl
>> Version: 1.6.901-2
>> Severity: important
>> Tags: upstream
>>
>>   When using bp_seqfeature_load.pl I have an error at
>> build_summary_statistics call time of berkeleydb3.pm:
>>     Couldn't create temporary file for sorting: Inappropriate ioctl
>> for device
>>   It occurs in berkeleydb3.pm line 500
>>
>>   Looking at the code I tried to manipulate it replacing
>>      my $s = tie %sort,'DB_File',$name,0666,O_CREAT|O_RDWR,$numeric_cmp
>>   by
>>      my $s = tie %sort,'DB_File',$name,O_CREAT|O_RDWR,0666,$numeric_cmp
>>
>>   and the error disappear.
>>
>> I used below sample code to test:
>>
>> require File::Temp;
>> use File::Temp ();
>> use File::Temp qw/ :seekable /;
>> use base 'Bio::DB::SeqFeature::Store::berkeleydb';
>> use DB_File;
>> use Fcntl qw(O_RDWR O_CREAT :flock);
>>
>> my $fh   = File::Temp->new() or die("Couldn't create temporary file
>> for sorting: $!");
>> my $name = $fh->filename;
>> my %sort;
>> my $numeric_cmp         = DB_File::BTREEINFO->new;
>> $numeric_cmp->{compare} = sub { $_[0]<=>  $_[1] };
>> $numeric_cmp->{flags}   = R_DUP;
>> my $s = tie %sort,'DB_File',$name,0666,O_CREAT|O_RDWR,$numeric_cmp
>> #my $s = tie %sort,'DB_File',$name,O_CREAT|O_RDWR,0666,$numeric_cmp
>>          or die("Couldn't create temporary file for sorting: $!");
>>
>>
>>
>> However the same code works fine on a Red Hat on an other system (not
>> same perl version).
>> So I do not know if my fix is a correct fix, it just make the error
>> disappear.
>> If I look at perldoc for DB_File I see examples like:
>>   tie %A, "DB_File", "filename", O_CREAT|O_RDWR, 0666, $DB_HASH ;
>> so it seems that 0666 should be set after O_CREAT....
>>
>> -- System Information:
>> Debian Release: wheezy/sid
>>    APT prefers unstable
>>    APT policy: (500, 'unstable'), (500, 'stable')
>> Architecture: amd64 (x86_64)
>>
>> Kernel: Linux 2.6.32-5-amd64 (SMP w/1 CPU core)
>> Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
>> Shell: /bin/sh linked to /bin/dash
>>
>> Versions of packages bioperl depends on:
>> ii  libbio-perl-perl              1.6.901-2  BioPerl core perl modules
>> ii  perl                          5.14.2-7   Larry Wall's Practical
>> Extraction
>>
>> Versions of packages bioperl recommends:
>> ii  bioperl-run                  1.6.9-1     BioPerl wrappers: scripts
>> ii  libace-perl                  1.92-2+b2   Object-Oriented Access
>> to ACEDB Da
>> ii  libapache-dbi-perl           1.11-1      interface connecting
>> apache server
>> ii  libbio-perl-run-perl         1.6.9-1     BioPerl wrappers: modules
>> ii  libcache-cache-perl          1.06-2      Managed caches of
>> persistent infor
>> ii  libdbi-perl                  1.618-1     Perl Database Interface
>> (DBI)
>> ii  libgd-gd2-perl               1:2.46-3+b1 Perl module wrapper for
>> libgd - gd
>> ii  libhttp-message-perl         6.03-1      perl interface to HTTP
>> style messa
>> ii  liblist-moreutils-perl       0.33-1+b1   Perl module with
>> additional list f
>> ii  libset-scalar-perl           1.25-1      Perl interface for
>> operations on f
>> ii  liburi-perl                  1.59-1      module to manipulate and
>> access UR
>> ii  libwww-perl                  6.01-3      simple and consistent
>> interface to
>> ii  libxml-simple-perl           2.18-3      Perl module for reading
>> and writin
>> ii  libxml-twig-perl             1:3.39-1    Perl module for
>> processing huge XM
>> ii  libyaml-perl                 0.80-1      YAML Ain't Markup Language
>> ii  perl-doc                     5.14.2-7    Perl documentation
>>
>> Versions of packages bioperl suggests:
>> ii  groff-base                    1.21-6     GNU troff
>> text-formatting system (
>>
>> -- no debconf information
>>
>>
>>
>> _______________________________________________
>> Debian-med-packaging mailing list
>> Debian-med-packaging at lists.alioth.debian.org
>> http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-med-packaging
>>
>
>
> _______________________________________________
> Debian-med-packaging mailing list
> Debian-med-packaging at lists.alioth.debian.org
> http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-med-packaging
>

-- 
Olivier Sallou
IRISA / University of Rennes 1
Campus de Beaulieu, 35000 RENNES - FRANCE
Tel: 02.99.84.71.95

gpg key id: 4096R/326D8438  (keyring.debian.org)
Key fingerprint = 5FB4 6F83 D3B9 5204 6335  D26D 78DC 68DB 326D 8438


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.alioth.debian.org/pipermail/debian-med-packaging/attachments/20120302/1ad3e413/attachment-0001.html>


More information about the Debian-med-packaging mailing list