Skip Menu |

This queue is for tickets about the DB_File CPAN distribution.

Report information
The Basics
Id: 124836
Status: open
Priority: 0/
Queue: DB_File

People
Owner: Nobody in particular
Requestors: TODDR [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: 1.840
Fixed in: (no value)



Subject: Problem with DB_File while building perl in 5.27.0
I just tested a 5.27.10 build on OSX 10.13.3 and got the following failure from db-hash.t $>./TEST ../cpan/DB_File/t/db-hash.t t/../cpan/DB_File/t/db-hash ... Use of uninitialized value $value in string eq at t/db-hash.t line 224. Use of uninitialized value $values[0] in string eq at t/db-hash.t line 224. Use of uninitialized value $value in lc at t/db-hash.t line 224. Use of uninitialized value $h{""} in string eq at t/db-hash.t line 243. Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252. Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252. Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252. Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252. Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252. Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252. Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252. Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252. Use of uninitialized value $foo[18] in join or string at t/db-hash.t line 261. Use of uninitialized value $foo[36] in join or string at t/db-hash.t line 261. Use of uninitialized value $foo[48] in join or string at t/db-hash.t line 261. Use of uninitialized value $foo[58] in join or string at t/db-hash.t line 261. Use of uninitialized value $foo[59] in join or string at t/db-hash.t line 261. Use of uninitialized value $foo[60] in join or string at t/db-hash.t line 261. Use of uninitialized value $foo[62] in join or string at t/db-hash.t line 261. Use of uninitialized value $foo[63] in join or string at t/db-hash.t line 261. Use of uninitialized value $foo[92] in join or string at t/db-hash.t line 261. Use of uninitialized value $foo[114] in join or string at t/db-hash.t line 261. Use of uninitialized value $foo[140] in join or string at t/db-hash.t line 261. Use of uninitialized value $foo[187] in join or string at t/db-hash.t line 261. Use of uninitialized value $foo[188] in join or string at t/db-hash.t line 261. Use of uninitialized value $foo[189] in join or string at t/db-hash.t line 261. Use of uninitialized value in string eq at t/db-hash.t line 294. Use of uninitialized value $h{"Fred"} in string eq at t/db-hash.t line 572. Use of uninitialized value $v in concatenation (.) or string at t/db-hash.t line 748. FAILED at test 23 Failed 1 test out of 1, 0.00% okay. ../cpan/DB_File/t/db-hash.t ### Since not all tests were successful, you may want to run some of ### them individually and examine any diagnostic messages they produce. ### See the INSTALL document's section on "make test". ### You may have to set your dynamic library search path, ### DYLD_LIBRARY_PATH, to point to the build directory: ### setenv DYLD_LIBRARY_PATH `pwd`; cd t; ./perl harness ### DYLD_LIBRARY_PATH=`pwd`; export DYLD_LIBRARY_PATH; cd t; ./perl harness ### export DYLD_LIBRARY_PATH=`pwd`; cd t; ./perl harness ### for csh-style shells, like tcsh; or for traditional/modern ### Bourne-style shells, like bash, ksh, and zsh, respectively. Elapsed: 11 sec u=0.01 s=0.00 cu=2.57 cs=7.34 scripts=1 tests=166
From what I can tell, the same failure happens on v5.27.0..v5.27.10 so this was not a blocker for release. I did a build unpriveliged, not as root.
I thought I'd also mention that this laptop was a fresh install of OSX 10.13.3. It may be that apple has stopped shipping something that is otherwise present on macs that have upgraded from an earlier version.
Thanks for the bug report. Not sure what is going on there. If you get a chance can you send me the details below. How to report a problem with DB_File. ------------------------------------- When reporting any problem, I need the information requested below. 1. The *complete* output from running this perl -V Do not edit the output in any way. Note, I want you to run "perl -V" and NOT "perl -v". If your perl does not understand the "-V" option it is too old. DB_File needs Perl version 5.00405 or better. 2. The version of DB_File you have. If you have successfully installed DB_File, this one-liner will tell you: perl -e 'use DB_File; print qq{DB_File ver $DB_File::VERSION\n}' If you are running windows use this perl -e "use DB_File; print qq{DB_File ver $DB_File::VERSION\n}" If you haven't installed DB_File then search DB_File.pm for a line like this: $VERSION = "1.20" ; 3. The version of Berkeley DB used to build DB_File and the version that is used at runtime. (These are usually the same) If you are using a version older than 1.85, think about upgrading. One point to note if you are considering upgrading Berkeley DB - the file formats for 1.85, 1.86, 2.0, 3.0 & 3.1 are all different. If you have successfully installed DB_File, these commands will display the versions I need perl -MDB_File -e 'print qq{Built with Berkeley DB ver $DB_File::db_ver\n}' perl -MDB_File -e 'print qq{Running with Berkeley DB ver $DB_File::db_version\n}' If you are running windows use this perl -e "use DB_File; print qq{Built with Berkeley DB ver $DB_File::db_ver\n}" perl -e "use DB_File; print qq{Running Berkeley DB ver $DB_File::db_version\n}"
$>perl -V Summary of my perl5 (revision 5 version 18 subversion 2) configuration: Platform: osname=darwin, osvers=18.0, archname=darwin-thread-multi-2level uname='darwin osx337.sd.apple.com 18.0 darwin kernel version 17.0.0: fri may 4 10:33:38 pdt 2018; root:xnu-4570.1.46.100.2~1development_x86_64 x86_64 ' config_args='-ds -e -Dprefix=/usr -Dccflags=-g -pipe -Dldflags= -Dman3ext=3pm -Duseithreads -Duseshrplib -Dinc_version_list=none -Dcc=cc' hint=recommended, useposix=true, d_sigaction=define useithreads=define, usemultiplicity=define useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef use64bitint=define, use64bitall=define, uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cc', ccflags =' -g -pipe -fno-common -DPERL_DARWIN -fno-strict-aliasing -fstack-protector', optimize='-Os', cppflags='-g -pipe -fno-common -DPERL_DARWIN -fno-strict-aliasing -fstack-protector' ccversion='', gccversion='4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.0.42)', gccosandvers='' intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16 ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=8, prototype=define Linker and Libraries: ld='cc', ldflags =' -fstack-protector' libpth=/usr/lib /usr/local/lib libs= perllibs= libc=, so=dylib, useshrplib=true, libperl=libperl.dylib gnulibc_version='' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' ' cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup -fstack-protector' Characteristics of this binary (from libperl): Compile-time options: HAS_TIMES MULTIPLICITY PERLIO_LAYERS PERL_DONT_CREATE_GVSV PERL_HASH_FUNC_ONE_AT_A_TIME_HARD PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP PERL_PRESERVE_IVUV PERL_SAWAMPERSAND USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_PERLIO USE_PERL_ATOF USE_REENTRANT_API Locally applied patches: /Library/Perl/Updates/<version> comes before system perl directories installprivlib and installarchlib points to the Updates directory Built under darwin Compiled at Aug 17 2018 17:29:08 %ENV: PERLDB_OPTS="RemotePort=:9000" @INC: /Library/Perl/5.18/darwin-thread-multi-2level /Library/Perl/5.18 /Network/Library/Perl/5.18/darwin-thread-multi-2level /Network/Library/Perl/5.18 /Library/Perl/Updates/5.18.2/darwin-thread-multi-2level /Library/Perl/Updates/5.18.2 /System/Library/Perl/5.18/darwin-thread-multi-2level /System/Library/Perl/5.18 /System/Library/Perl/Extras/5.18/darwin-thread-multi-2level /System/Library/Perl/Extras/5.18 . $>otool -L /System/Library/Perl/5.18/darwin-thread-multi-2level/auto/DB_File/DB_File.bundle /System/Library/Perl/5.18/darwin-thread-multi-2level/auto/DB_File/DB_File.bundle: /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.200.5) $> perl -MDB_File -e 'print qq{Built with Berkeley DB ver $DB_File::db_ver\n}' Built with Berkeley DB ver 1 $>perl -e 'use DB_File; print qq{DB_File ver $DB_File::VERSION\n}' DB_File ver 1.827
Thanks for the update. There have been a number of other reports of this issue on MacOS. Below is what I have in the latest version of the README file for this module that documents a possible workaround. Would much prefer to have an automatic solution that just makes the issue go away, but I don't run MacOS myself, so the text below is taken from the experiences of the other reporters. If you have any suggestions for a fix, please shout. MacOS Notes ----------- You are running MacOS 10.13 (or possibly later), and the test DB_File test harness file db-hash.t fails like this t/db-btree.t .. ok t/db-hash.t ... Use of uninitialized value $value in string eq at t/db-hash.t line 224. Use of uninitialized value $values[0] in string eq at t/db-hash.t line 224. Use of uninitialized value $value in lc at t/db-hash.t line 224. Use of uninitialized value $h{""} in string eq at t/db-hash.t line 243. Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252. Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252. Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252. Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252. Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252. Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252. Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252. Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252. Use of uninitialized value $foo[18] in join or string at t/db-hash.t line 261. Use of uninitialized value $foo[36] in join or string at t/db-hash.t line 261. Use of uninitialized value $foo[48] in join or string at t/db-hash.t line 261. Use of uninitialized value $foo[58] in join or string at t/db-hash.t line 261. Use of uninitialized value $foo[59] in join or string at t/db-hash.t line 261. Use of uninitialized value $foo[60] in join or string at t/db-hash.t line 261. Use of uninitialized value $foo[62] in join or string at t/db-hash.t line 261. Use of uninitialized value $foo[63] in join or string at t/db-hash.t line 261. Use of uninitialized value $foo[92] in join or string at t/db-hash.t line 261. Use of uninitialized value $foo[114] in join or string at t/db-hash.t line 261. Use of uninitialized value $foo[140] in join or string at t/db-hash.t line 261. Use of uninitialized value $foo[187] in join or string at t/db-hash.t line 261. Use of uninitialized value $foo[188] in join or string at t/db-hash.t line 261. Use of uninitialized value $foo[189] in join or string at t/db-hash.t line 261. t/db-hash.t ... 1/166 Use of uninitialized value $h{"Fred"} in string eq at t/db-hash.t line 572. Use of uninitialized value $v in concatenation (.) or string at t/db-hash.t line 748. t/db-hash.t ... Dubious, test returned 25 (wstat 6400, 0x1900) Failed 76/166 subtests t/db-recno.t .. ok t/pod.t ....... ok It appears that MacOS 10.13 has a copy of BerkeleyDB version 1 included in /usr/lib/system/libsystem_c.dylib. It is not clear why this isn't working with this module. The following ticket has been reported to Apple https://discussions.apple.com/thread/8125401 Solution It has been reported that this issue can be resolved by installing a separate version of the Berkeley DB library and configuring DB_File to use it. One option is to use a prebuild version of Berkeley DB. One is available at MacPorts (https://www.macports.org/). Once you have MacPorts installed, run this sudo port install db48 To get DB_File to use this library edit config.in and change the values for the LIB and include variables as follows LIB = /opt/local/lib/db48 INCLUDE = /opt/local/include/db48 Alternatively, set the two environment variables DB_FILE_LIB and DB_FILE_INCLUDE as follows export DB_FILE_LIB=/opt/local/lib/db48 export DB_FILE_INCLUDE=/opt/local/include/db48 Now rebuild DB_File from scratch.