Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GDBM_File tests fail with gdbm 1.15 #16594

Closed
p5pRT opened this issue Jun 22, 2018 · 37 comments
Closed

GDBM_File tests fail with gdbm 1.15 #16594

p5pRT opened this issue Jun 22, 2018 · 37 comments

Comments

@p5pRT
Copy link

p5pRT commented Jun 22, 2018

Migrated from rt.perl.org#133295 (status was 'resolved')

Searchable as RT133295$

@p5pRT
Copy link
Author

p5pRT commented Jun 22, 2018

From bluewind@xinu.at

Created by bluewind@xinu.at

This is a bug report for perl from bluewind@​xinu.at,
generated with the help of perlbug 1.40 running under perl 5.26.2.

-----------------------------------------------------------------
When trying to build perl with gdbm 1.15 I get the following output during make test_harness​:

  # Failed test 'Trapped error when attempting to write to knobbled GDBM_File'
  # at t/fatal.t line 37.
  # got​: '1'
  # expected​: undef

  # Failed test 'expected error message from GDBM_File'
  # at t/fatal.t line 46.
  # ''
  # doesn't match '(?^​: at .*\bfatal\.t line \d+\.\n\z)'
  # Looks like you failed 2 tests of 8.
  ../ext/GDBM_File/t/fatal.t .........................................
  Dubious, test returned 2 (wstat 512, 0x200)
  Failed 2/8 subtests

The test passed just fine with gdbm 1.14.1. It appears that 1.15 now properly
handles incorrect/corrupted files and no longer crashes according to the
release mail. For details see here​:
https://lists.gnu.org/archive/html/info-gnu/2018-06/msg00008.html

If you need more information, feel free to contact me.

Florian

Perl Info

Flags:
    category=library
    severity=medium
    module=GDBM_File

Site configuration information for perl 5.26.2:

Configured by builduser at Wed Apr 18 22:20:25 CEST 2018.

Summary of my perl5 (revision 5 version 26 subversion 2) configuration:
   
  Platform:
    osname=linux
    osvers=4.15.15-1-arch
    archname=x86_64-linux-thread-multi
    uname='linux flo-64 4.15.15-1-arch #1 smp preempt sat mar 31 23:59:25 utc 2018 x86_64 gnulinux '
    config_args='-des -Dusethreads -Duseshrplib -Doptimize=-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -Dprefix=/usr -Dvendorprefix=/usr -Dprivlib=/usr/share/perl5/core_perl -Darchlib=/usr/lib/perl5/5.26/core_perl -Dsitelib=/usr/share/perl5/site_perl -Dsitearch=/usr/lib/perl5/5.26/site_perl -Dvendorlib=/usr/share/perl5/vendor_perl -Dvendorarch=/usr/lib/perl5/5.26/vendor_perl -Dscriptdir=/usr/bin/core_perl -Dsitescript=/usr/bin/site_perl -Dvendorscript=/usr/bin/vendor_perl -Dinc_version_list=none -Dman1ext=1perl -Dman3ext=3perl -Dcccdlflags='-fPIC' -Dlddlflags=-shared -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -Dldflags=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now'
    hint=recommended
    useposix=true
    d_sigaction=define
    useithreads=define
    usemultiplicity=define
    use64bitint=define
    use64bitall=define
    uselongdouble=undef
    usemymalloc=n
    default_inc_excludes_dot=define
    bincompat5005=undef
  Compiler:
    cc='cc'
    ccflags ='-D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2'
    optimize='-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt'
    cppflags='-D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include'
    ccversion=''
    gccversion='7.3.1 20180312'
    gccosandvers=''
    intsize=4
    longsize=8
    ptrsize=8
    doublesize=8
    byteorder=12345678
    doublekind=3
    d_longlong=define
    longlongsize=8
    d_longdbl=define
    longdblsize=16
    longdblkind=3
    ivtype='long'
    ivsize=8
    nvtype='double'
    nvsize=8
    Off_t='off_t'
    lseeksize=8
    alignbytes=8
    prototype=define
  Linker and Libraries:
    ld='cc'
    ldflags ='-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -fstack-protector-strong -L/usr/local/lib'
    libpth=/usr/local/lib /usr/lib/gcc/x86_64-pc-linux-gnu/7.3.1/include-fixed /usr/lib /lib/../lib /usr/lib/../lib /lib /lib64 /usr/lib64
    libs=-lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat
    perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc
    libc=libc-2.26.so
    so=so
    useshrplib=true
    libperl=libperl.so
    gnulibc_version='2.26'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs
    dlext=so
    d_dlsymun=undef
    ccdlflags='-Wl,-E -Wl,-rpath,/usr/lib/perl5/5.26/core_perl/CORE'
    cccdlflags='-fPIC'
    lddlflags='-shared -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -L/usr/local/lib -fstack-protector-strong'



@INC for perl 5.26.2:
    /home/flo/perl5/lib/perl5/5.26.2/x86_64-linux-thread-multi
    /home/flo/perl5/lib/perl5/5.26.2
    /home/flo/perl5/lib/perl5/x86_64-linux-thread-multi
    /home/flo/perl5/lib/perl5
    /usr/lib/perl5/5.26/site_perl
    /usr/share/perl5/site_perl
    /usr/lib/perl5/5.26/vendor_perl
    /usr/share/perl5/vendor_perl
    /usr/lib/perl5/5.26/core_perl
    /usr/share/perl5/core_perl


Environment for perl 5.26.2:
    HOME=/home/flo
    LANG=en_US.UTF-8
    LANGUAGE (unset)
    LD_LIBRARY_PATH=/opt/opencascade/lib:/opt/opencascade/lib
    LOGDIR (unset)
    PATH=/home/flo/perl5/bin:/home/flo/.composer/vendor/bin:/home/flo/bin:/home/flo/bin/extra/vim-bin:/home/flo/bin/extra/genpkg:/home/flo/bin/extra/arch-mirror-tools:/home/flo/bin:/home/flo/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/opt/opencascade/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/opt/opencascade/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/flo/.local/bin
    PERL5LIB=/home/flo/perl5/lib/perl5
    PERLDOC=-MPod::Text::Color::Delight
    PERLDOC_PAGER=less
    PERL_BADLANG (unset)
    PERL_LOCAL_LIB_ROOT=/home/flo/perl5
    PERL_MB_OPT=--install_base "/home/flo/perl5"
    PERL_MM_OPT=INSTALL_BASE=/home/flo/perl5
    SHELL=/bin/zsh

@p5pRT
Copy link
Author

p5pRT commented Jun 23, 2018

From @shlomif

Hi all!

The gdbm tests fail in both perl-5.26.2 and 5.28.0-RC4 on Mageia 7 x86-64 with
gdbm 1.15. Here is an excerpt from the log​:

# Failed test 'Trapped error when attempting to write to knobbled GDBM_File'
# at t/fatal.t line 37.
# got​: '1'
# expected​: undef

# Failed test 'expected error message from GDBM_File'
# at t/fatal.t line 46.
# ''
# doesn't match '(?^​: at .*\bfatal\.t line \d+\.\n\z)'
# Looks like you failed 2 tests of 8.
../ext/GDBM_File/t/fatal.t .........................................
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/8 subtests
../ext/GDBM_File/t/gdbm.t .......................................... ok
.
.
.
../ext/XS-APItest/t/whichsig.t ..................................... ok
../ext/XS-APItest/t/win32.t ........................................ skipped​:
Tests only apply on
MSWin32 ../ext/XS-APItest/t/xs_special_subs.t ..............................
ok ../ext/XS-APItest/t/xs_special_subs_require.t ......................
ok ../ext/XS-APItest/t/xsub_h.t ....................................... ok

Test Summary Report


../ext/GDBM_File/t/fatal.t (Wstat​: 512
Tests​: 8 Failed​: 2) Failed tests​: 7-8
  Non-zero exit status​: 2
Files=2564, Tests=1231720, 264 wallclock secs (109.77 usr 10.22 sys + 547.16
cusr 41.82 csys = 708.97 CPU) Result​: FAIL
make​: *** [makefile​:832​: test_harness] Error 2
##### Brew Failed #####

I am building perl using perlbrew. All other tests succeed.

Thanks to Jim Keenan.
--


Shlomi Fish http​://www.shlomifish.org/
http​://www.shlomifish.org/open-source/resources/tech-tips/

There are at least 137 Larry Walls in the U.S., but only one that matters.
  — http​://www.shlomifish.org/humour/bits/facts/Larry-Wall/

@p5pRT
Copy link
Author

p5pRT commented Jun 23, 2018

From @jkeenan

On Sat, 23 Jun 2018 08​:05​:44 GMT, shlomif@​shlomifish.org wrote​:

Hi all!

The gdbm tests fail in both perl-5.26.2 and 5.28.0-RC4 on Mageia 7
x86-64 with
gdbm 1.15. Here is an excerpt from the log​:

# Failed test 'Trapped error when attempting to write to knobbled
GDBM_File'
# at t/fatal.t line 37.
# got​: '1'
# expected​: undef

# Failed test 'expected error message from GDBM_File'
# at t/fatal.t line 46.
# ''
# doesn't match '(?^​: at .*\bfatal\.t line \d+\.\n\z)'
# Looks like you failed 2 tests of 8.
../ext/GDBM_File/t/fatal.t .........................................
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/8 subtests
../ext/GDBM_File/t/gdbm.t ..........................................
ok
.
.
.
../ext/XS-APItest/t/whichsig.t .....................................
ok
../ext/XS-APItest/t/win32.t ........................................
skipped​:
Tests only apply on
MSWin32 ../ext/XS-APItest/t/xs_special_subs.t
..............................
ok ../ext/XS-APItest/t/xs_special_subs_require.t
......................
ok ../ext/XS-APItest/t/xsub_h.t
....................................... ok

Test Summary Report
-------------------
../ext/GDBM_File/t/fatal.t
(Wstat​: 512
Tests​: 8 Failed​: 2) Failed tests​: 7-8
Non-zero exit status​: 2
Files=2564, Tests=1231720, 264 wallclock secs (109.77 usr 10.22 sys +
547.16
cusr 41.82 csys = 708.97 CPU) Result​: FAIL
make​: *** [makefile​:832​: test_harness] Error 2
##### Brew Failed #####

I am building perl using perlbrew. All other tests succeed.

Thanks to Jim Keenan.

See https://rt-archive.perl.org/perl5/Ticket/Display.html?id=133295.  Are you able to identify the version of GDBM which you have installed?

--
James E Keenan (jkeenan@​cpan.org)

@p5pRT
Copy link
Author

p5pRT commented Jun 23, 2018

The RT System itself - Status changed from 'new' to 'open'

@p5pRT
Copy link
Author

p5pRT commented Jun 23, 2018

From @shlomif

On Sat, 23 Jun 2018 10​:24​:15 -0700
"James E Keenan via RT" <perlbug-followup@​perl.org> wrote​:

On Sat, 23 Jun 2018 08​:05​:44 GMT, shlomif@​shlomifish.org wrote​:

Hi all!

The gdbm tests fail in both perl-5.26.2 and 5.28.0-RC4 on Mageia 7
x86-64 with
gdbm 1.15. Here is an excerpt from the log​:

# Failed test 'Trapped error when attempting to write to knobbled
GDBM_File'
# at t/fatal.t line 37.
# got​: '1'
# expected​: undef

# Failed test 'expected error message from GDBM_File'
# at t/fatal.t line 46.
# ''
# doesn't match '(?^​: at .*\bfatal\.t line \d+\.\n\z)'
# Looks like you failed 2 tests of 8.
../ext/GDBM_File/t/fatal.t .........................................
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/8 subtests
../ext/GDBM_File/t/gdbm.t ..........................................
ok
.
.
.
../ext/XS-APItest/t/whichsig.t .....................................
ok
../ext/XS-APItest/t/win32.t ........................................
skipped​:
Tests only apply on
MSWin32 ../ext/XS-APItest/t/xs_special_subs.t
..............................
ok ../ext/XS-APItest/t/xs_special_subs_require.t
......................
ok ../ext/XS-APItest/t/xsub_h.t
....................................... ok

Test Summary Report
-------------------
../ext/GDBM_File/t/fatal.t
(Wstat​: 512
Tests​: 8 Failed​: 2) Failed tests​: 7-8
Non-zero exit status​: 2
Files=2564, Tests=1231720, 264 wallclock secs (109.77 usr 10.22 sys +
547.16
cusr 41.82 csys = 708.97 CPU) Result​: FAIL
make​: *** [makefile​:832​: test_harness] Error 2
##### Brew Failed #####

I am building perl using perlbrew. All other tests succeed.

Thanks to Jim Keenan.

See https://rt-archive.perl.org/perl5/Ticket/Display.html?id=133295.  Are you able to
identify the version of GDBM which you have installed?

Yes, version 1.15​:

shlomif@​telaviv1​:~$ rpm -qa | grep -i gdbm
lib64gdbm6-1.15-1.mga7
lib64gdbm-devel-1.15-1.mga7
lib64gdbm4-1.14-1.mga7
shlomif@​telaviv1​:~$

I mentioned that.

--


Shlomi Fish http​://www.shlomifish.org/
http​://www.shlomifish.org/humour/ways_to_do_it.html

But if you’re writing [open source software] for the world, you have to listen
to your customers — this doesn’t change just because they’re not paying you in
money.
  — Eric S. Raymond in The Cathedral and the Bazaar

Please reply to list if it's a mailing list post - http​://shlom.in/reply .

1 similar comment
@p5pRT
Copy link
Author

p5pRT commented Jun 23, 2018

From @shlomif

On Sat, 23 Jun 2018 10​:24​:15 -0700
"James E Keenan via RT" <perlbug-followup@​perl.org> wrote​:

On Sat, 23 Jun 2018 08​:05​:44 GMT, shlomif@​shlomifish.org wrote​:

Hi all!

The gdbm tests fail in both perl-5.26.2 and 5.28.0-RC4 on Mageia 7
x86-64 with
gdbm 1.15. Here is an excerpt from the log​:

# Failed test 'Trapped error when attempting to write to knobbled
GDBM_File'
# at t/fatal.t line 37.
# got​: '1'
# expected​: undef

# Failed test 'expected error message from GDBM_File'
# at t/fatal.t line 46.
# ''
# doesn't match '(?^​: at .*\bfatal\.t line \d+\.\n\z)'
# Looks like you failed 2 tests of 8.
../ext/GDBM_File/t/fatal.t .........................................
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/8 subtests
../ext/GDBM_File/t/gdbm.t ..........................................
ok
.
.
.
../ext/XS-APItest/t/whichsig.t .....................................
ok
../ext/XS-APItest/t/win32.t ........................................
skipped​:
Tests only apply on
MSWin32 ../ext/XS-APItest/t/xs_special_subs.t
..............................
ok ../ext/XS-APItest/t/xs_special_subs_require.t
......................
ok ../ext/XS-APItest/t/xsub_h.t
....................................... ok

Test Summary Report
-------------------
../ext/GDBM_File/t/fatal.t
(Wstat​: 512
Tests​: 8 Failed​: 2) Failed tests​: 7-8
Non-zero exit status​: 2
Files=2564, Tests=1231720, 264 wallclock secs (109.77 usr 10.22 sys +
547.16
cusr 41.82 csys = 708.97 CPU) Result​: FAIL
make​: *** [makefile​:832​: test_harness] Error 2
##### Brew Failed #####

I am building perl using perlbrew. All other tests succeed.

Thanks to Jim Keenan.

See https://rt-archive.perl.org/perl5/Ticket/Display.html?id=133295.  Are you able to
identify the version of GDBM which you have installed?

Yes, version 1.15​:

shlomif@​telaviv1​:~$ rpm -qa | grep -i gdbm
lib64gdbm6-1.15-1.mga7
lib64gdbm-devel-1.15-1.mga7
lib64gdbm4-1.14-1.mga7
shlomif@​telaviv1​:~$

I mentioned that.

--


Shlomi Fish http​://www.shlomifish.org/
http​://www.shlomifish.org/humour/ways_to_do_it.html

But if you’re writing [open source software] for the world, you have to listen
to your customers — this doesn’t change just because they’re not paying you in
money.
  — Eric S. Raymond in The Cathedral and the Bazaar

Please reply to list if it's a mailing list post - http​://shlom.in/reply .

@p5pRT
Copy link
Author

p5pRT commented Jun 23, 2018

From @jkeenan

I'm merging this ticket into https://rt-archive.perl.org/perl5/Ticket/Display.html?id=133295, as I have confirmed the error and 133295 was the first to be filed.

--
James E Keenan (jkeenan@​cpan.org)

@p5pRT
Copy link
Author

p5pRT commented Jun 23, 2018

From @jkeenan

On Sat, 23 Jun 2018 18​:12​:33 GMT, jkeenan wrote​:

I'm merging this ticket into
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=133295, as I have confirmed
the error and 133295 was the first to be filed.

I was able to confirm this bug on a Linux machine where, it appears, I did not previously have GDBM installed.

I first installed libgdbm3 as follows​:

#####
$> sudo apt-get install libgdbm3 libgdbm-dev
#####

That appears to have installed only a rather old version of the library​:

#####
$> man gdbm
NAME
  GDBM - The GNU database manager. Includes dbm and ndbm compatability. (Version 1.8.3.)
#####

I then downloaded version 1.15.0 of gdbm from https://ftpmirror.gnu.org/gdbm/gdbm-1.15.tar.gz.  I configured it to install in a non-standard location and did so.

#####
$> ./configure --prefix=/home/jkeenan/learn/perl/p5p/gdbm-1.15 && make && make install
$> ack VERSION include/gdbm.h
# define GDBM_VERSION_MAJOR 1
# define GDBM_VERSION_MINOR 15
# define GDBM_VERSION_PATCH 0
#####

I then configured and built blead (commit 1efe078) as follows​:

#####
$> sh ./Configure -des -Dusedevel \
  -Dlocincpth='/home/jkeenan/learn/perl/p5p/gdbm-1.15/include /usr/local/include' \
  -Dloclibpth='/home/jkeenan/learn/perl/p5p/gdbm-1.15/lib /usr/local/lib'
$> make test_prep
#####

I then ran the test file in question.

#####
cd t;./perl harness -v ../ext/GDBM_File/t/fatal.t;cd -

ok 1 - use GDBM_File;
ok 2 - Can find next available file descriptor
ok 3 - Check that we cannot open fileno 3. $! is Bad file descriptor
ok 4 - An object of class 'GDBM_File' isa 'GDBM_File'
ok 5 - dup fileno 3
ok 6 - close fileno 3, out from underneath the GDBM_File
not ok 7 - Trapped error when attempting to write to knobbled GDBM_File
# Failed test 'Trapped error when attempting to write to knobbled GDBM_File'
# at t/fatal.t line 37.
# got​: '1'
# expected​: undef
not ok 8 - expected error message from GDBM_File
# Failed test 'expected error message from GDBM_File'
# at t/fatal.t line 46.
# ''
# doesn't match '(?^​: at .*\bfatal\.t line \d+\.\n\z)'
# Looks like you failed 2 tests of 8.
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/8 subtests

Test Summary Report


../ext/GDBM_File/t/fatal.t (Wstat​: 512 Tests​: 8 Failed​: 2)
  Failed tests​: 7-8
  Non-zero exit status​: 2
Files=1, Tests=8, 0 wallclock secs ( 0.02 usr 0.00 sys + 0.04 cusr 0.00 csys = 0.06 CPU)
Result​: FAIL
#####

--
James E Keenan (jkeenan@​cpan.org)

@p5pRT
Copy link
Author

p5pRT commented Jun 23, 2018

The RT System itself - Status changed from 'new' to 'open'

@p5pRT
Copy link
Author

p5pRT commented Jun 23, 2018

From @jkeenan

On Sat, 23 Jun 2018 18​:24​:13 GMT, jkeenan wrote​:

On Sat, 23 Jun 2018 18​:12​:33 GMT, jkeenan wrote​:

I'm merging this ticket into
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=133295, as I have
confirmed
the error and 133295 was the first to be filed.

I was able to confirm this bug on a Linux machine where, it appears, I
did not previously have GDBM installed.

I first installed libgdbm3 as follows​:

#####
$> sudo apt-get install libgdbm3 libgdbm-dev
#####

That appears to have installed only a rather old version of the
library​:

#####
$> man gdbm
NAME
GDBM - The GNU database manager. Includes dbm and ndbm
compatability. (Version 1.8.3.)
#####

I then downloaded version 1.15.0 of gdbm from
https://ftpmirror.gnu.org/gdbm/gdbm-1.15.tar.gz.  I configured it to
install in a non-standard location and did so.

#####
$> ./configure --prefix=/home/jkeenan/learn/perl/p5p/gdbm-1.15 &&
make && make install
$> ack VERSION include/gdbm.h
# define GDBM_VERSION_MAJOR 1
# define GDBM_VERSION_MINOR 15
# define GDBM_VERSION_PATCH 0
#####

I then configured and built blead (commit
1efe078) as follows​:

#####
$> sh ./Configure -des -Dusedevel \
-Dlocincpth='/home/jkeenan/learn/perl/p5p/gdbm-1.15/include
/usr/local/include' \
-Dloclibpth='/home/jkeenan/learn/perl/p5p/gdbm-1.15/lib
/usr/local/lib'
$> make test_prep
#####

I then ran the test file in question.

#####
cd t;./perl harness -v ../ext/GDBM_File/t/fatal.t;cd -

ok 1 - use GDBM_File;
ok 2 - Can find next available file descriptor
ok 3 - Check that we cannot open fileno 3. $! is Bad file descriptor
ok 4 - An object of class 'GDBM_File' isa 'GDBM_File'
ok 5 - dup fileno 3
ok 6 - close fileno 3, out from underneath the GDBM_File
not ok 7 - Trapped error when attempting to write to knobbled
GDBM_File
# Failed test 'Trapped error when attempting to write to knobbled
GDBM_File'
# at t/fatal.t line 37.
# got​: '1'
# expected​: undef
not ok 8 - expected error message from GDBM_File
# Failed test 'expected error message from GDBM_File'
# at t/fatal.t line 46.
# ''
# doesn't match '(?^​: at .*\bfatal\.t line \d+\.\n\z)'
# Looks like you failed 2 tests of 8.
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/8 subtests

Test Summary Report
-------------------
../ext/GDBM_File/t/fatal.t (Wstat​: 512 Tests​: 8 Failed​: 2)
Failed tests​: 7-8
Non-zero exit status​: 2
Files=1, Tests=8, 0 wallclock secs ( 0.02 usr 0.00 sys + 0.04 cusr
0.00 csys = 0.06 CPU)
Result​: FAIL
#####

cc-ing the author of the failing tests. Nicholas, can you have a look?

I suspect that going forward our GDBM module will have to expose the MAJOR/MINOR/PATCH version of the underlying gdbm library.

Thank you very much.

--
James E Keenan (jkeenan@​cpan.org)

@p5pRT
Copy link
Author

p5pRT commented Jun 26, 2018

From @ppisar

On 2018-06-22, "bluewind@​xinu.at (via RT)" <perlbug-followup@​perl.org> wrote​:

When trying to build perl with gdbm 1.15 I get the following output during make test_harness​:

\#   Failed test 'Trapped error when attempting to write to knobbled GDBM\_File'
\#   at t/fatal\.t line 37\.
\#       got&#8203;: '1'
\#     expected&#8203;: undef

\#   Failed test 'expected error message from GDBM\_File'
\#   at t/fatal\.t line 46\.
\#            ''
\#     doesn't match '\(?^&#8203;: at \.\*\\bfatal\\\.t line \\d\+\\\.\\n\\z\)'
\# Looks like you failed 2 tests of 8\.
\.\./ext/GDBM\_File/t/fatal\.t \.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.
Dubious\, test returned 2 \(wstat 512\, 0x200\)
Failed 2/8 subtests

The test passed just fine with gdbm 1.14.1. It appears that 1.15 now properly
handles incorrect/corrupted files and no longer crashes according to the
release mail. For details see here​:
https://lists.gnu.org/archive/html/info-gnu/2018-06/msg00008.html

1.15 no longer crashes but it also seems not reporting errors properly.

The Perl test lets gdbm library to open a database file, then Perl
closes a file descriptor gdbm uses for that database file and then Perl
asks gdbm to store a key-value pair into the database.

Old gdbm crashes.

New gdbm returns success, although strace reveals a write into the file
fails with ABADF​:

close(3) = 0
getpid() = 32311
write(6, "ok 6 - close fileno 3, out from "..., 57ok 6 - close fileno 3, out from underneath the GDBM_File
) = 57
brk(NULL) = 0x5647cb45a000
brk(0x5647cb47b000) = 0x5647cb47b000
brk(NULL) = 0x5647cb47b000
brk(0x5647cb49c000) = 0x5647cb49c000
brk(NULL) = 0x5647cb49c000
brk(0x5647cb4bd000) = 0x5647cb4bd000
msync(0x7f59bbf9e000, 16384, MS_SYNC|MS_INVALIDATE) = 0
munmap(0x7f59bbf9e000, 16384) = 0
flock(3, LOCK_UN) = -1 EBADF (Bad file descriptor)
close(3) = -1 EBADF (Bad file descriptor)
brk(NULL) = 0x5647cb4bd000
brk(NULL) = 0x5647cb4bd000
brk(0x5647cb45a000) = 0x5647cb45a000
brk(NULL) = 0x5647cb45a000
getpid() = 32311
write(6, "not ok 7 - Trapped error when at"..., 72not ok 7 - Trapped error when attempting to write to knobbled GDBM_File
) = 72

The Perl test does "$h{Perl} = 'Rules'" under eval, the tied hash store
translates it to Perl's gdbm_STORE() that directly calls gdbm's
gdbm_store and then Perl croaks only on (RETVAL < 0 && errno == EPERM)
condition.

Debugger shows gdbm_store() returns success (0).

Thus I believe this is a bug in gdbm C library. Although I cannot find
where Perl's GDBM_File handles non-zero return value from gdbm_STORE().
This is probably also a place for improvment on Perl side.

-- Petr

@p5pRT
Copy link
Author

p5pRT commented Jun 26, 2018

From @ppisar

On 2018-06-26, Petr Pisar <ppisar@​redhat.com> wrote​:

On 2018-06-22, "bluewind@​xinu.at (via RT)" <perlbug-followup@​perl.org> wrote​:

When trying to build perl with gdbm 1.15 I get the following output
during make test_harness​:

\#   Failed test 'Trapped error when attempting to write to knobbled GDBM\_File'
\#   at t/fatal\.t line 37\.
\#       got&#8203;: '1'
\#     expected&#8203;: undef

\#   Failed test 'expected error message from GDBM\_File'
\#   at t/fatal\.t line 46\.
\#            ''
\#     doesn't match '\(?^&#8203;: at \.\*\\bfatal\\\.t line \\d\+\\\.\\n\\z\)'
\# Looks like you failed 2 tests of 8\.
\.\./ext/GDBM\_File/t/fatal\.t \.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.
Dubious\, test returned 2 \(wstat 512\, 0x200\)
Failed 2/8 subtests

The test passed just fine with gdbm 1.14.1. It appears that 1.15 now properly
handles incorrect/corrupted files and no longer crashes according to the
release mail. For details see here​:
https://lists.gnu.org/archive/html/info-gnu/2018-06/msg00008.html

1.15 no longer crashes but it also seems not reporting errors properly.

The Perl test lets gdbm library to open a database file, then Perl
closes a file descriptor gdbm uses for that database file and then Perl
asks gdbm to store a key-value pair into the database.

Old gdbm crashes.

New gdbm returns success, although strace reveals a write into the file
fails with ABADF​:

close(3) = 0
getpid() = 32311
write(6, "ok 6 - close fileno 3, out from "..., 57ok 6 - close fileno 3, out from underneath the GDBM_File
) = 57
brk(NULL) = 0x5647cb45a000
brk(0x5647cb47b000) = 0x5647cb47b000
brk(NULL) = 0x5647cb47b000
brk(0x5647cb49c000) = 0x5647cb49c000
brk(NULL) = 0x5647cb49c000
brk(0x5647cb4bd000) = 0x5647cb4bd000
msync(0x7f59bbf9e000, 16384, MS_SYNC|MS_INVALIDATE) = 0
munmap(0x7f59bbf9e000, 16384) = 0
flock(3, LOCK_UN) = -1 EBADF (Bad file descriptor)
close(3) = -1 EBADF (Bad file descriptor)
brk(NULL) = 0x5647cb4bd000
brk(NULL) = 0x5647cb4bd000
brk(0x5647cb45a000) = 0x5647cb45a000
brk(NULL) = 0x5647cb45a000
getpid() = 32311
write(6, "not ok 7 - Trapped error when at"..., 72not ok 7 - Trapped error when attempting to write to knobbled GDBM_File
) = 72

The Perl test does "$h{Perl} = 'Rules'" under eval, the tied hash store
translates it to Perl's gdbm_STORE() that directly calls gdbm's
gdbm_store and then Perl croaks only on (RETVAL < 0 && errno == EPERM)
condition.

Debugger shows gdbm_store() returns success (0).

Thus I believe this is a bug in gdbm C library.

My 1.15 uses memory mapped I/O. gdbm_store() succeeds because the
mapping still exists even after closing the underlying file. So not bug
from gdbm C library.

The whole eval-ed code is​:

  $h{Perl} = 'Rules';
  untie %h;
  1;

Store succeeds. The untie calls gdbm_DESTROY() that calls gdbm_close()
gdbm_close() has void return type. This is a deficiency in C gdbm
library because gdbm_close() does does the unlock and close() and both
fails with EBADF and gdbm does does not check for their failure and does
not raise the error because of gdbm_close() prototype.

So at the end it looks like a bug in gdbm interface that it cannot
report an error on database close. And then of course Perl cannot report
any error.

I'm not sure why msync() did not fail or while the process did not
segfaulted. Maybe it worked as designed.

-- Petr

@p5pRT
Copy link
Author

p5pRT commented Jun 26, 2018

From @ppisar

On 2018-06-26, Petr Pisar <ppisar@​redhat.com> wrote​:

So at the end it looks like a bug in gdbm interface that it cannot
report an error on database close. And then of course Perl cannot report
any error.

I searched why the Perl test exist at all. It was added with this commit​:

commit ceab701
Author​: Nicholas Clark <nick@​ccl4.org>
Date​: Thu Dec 13 16​:38​:17 2012 +0100

  GDBM_File is meant to croak() if the gdbm library has a fatal error.
 
  gdbm_open() takes a fifth argument, for an optional callback function used
  to report a fatal error. Since it was added in 5.000, the tied hash wrapper
  implemented in GDBM_File.xs has (intended) to default this to croak().
  However, the callback expects a function taking a single const char *
  argument, whereas croak(const char *pat, ...) has variable arguments.
  The code as-was had two bugs
 
  1) The calling ABI on some platforms differs between a (known) variable-
  argument function, and one which takes (known) fixed arguments. As the
  call site knows the pointer is to a function with fixed arguments, the
  calling convention it uses doesn't match what Perl_croak_nocontext()
  expects, which can lead to crashes.
  2) A message containing % characters will be interpreted as a printf format.
 
  Both these are fixed by using a small station function as a wrapper, which
  takes a single string argument, and passes to croak() a "%s" format string,
  followed by the string for the error message.
 
  Add a test for this functionality.

So the reason for the test is to check gdbm fatal errors are properly
passed to Perl code.

Provided the only place gdbm uses these fatal errors is when storing
data and these are hidden by the mmaped I/O since gdbm-1.15, I would
vote for removing the test as we don't have any reliable way to provoke
the fatal error.

-- Petr

@p5pRT
Copy link
Author

p5pRT commented Jun 29, 2018

From @ppisar

On 2018-06-26, Petr Pisar <ppisar@​redhat.com> wrote​:

Thus I believe this is a bug in gdbm C library.

GNU dbm bug report <https://puszcza.gnu.org.ua/bugs/index.php?399>.

-- Petr

@p5pRT
Copy link
Author

p5pRT commented Jul 1, 2018

From @graygnuorg

On Fri, 29 Jun 2018 03​:16​:27 -0700, ppisar wrote​:

On 2018-06-26, Petr Pisar <ppisar@​redhat.com> wrote​:

Thus I believe this is a bug in gdbm C library.

GNU dbm bug report <https://puszcza.gnu.org.ua/bugs/index.php?399>.

-- Petr

Fixed by http​://git.gnu.org.ua/cgit/gdbm.git/commit/?id=030e685eb9df82f63d73a1bf206da84b7aa52374. The change will appear in next release of GDBM.

@p5pRT
Copy link
Author

p5pRT commented Jul 1, 2018

From [Unknown Contact. See original ticket]

On Fri, 29 Jun 2018 03​:16​:27 -0700, ppisar wrote​:

On 2018-06-26, Petr Pisar <ppisar@​redhat.com> wrote​:

Thus I believe this is a bug in gdbm C library.

GNU dbm bug report <https://puszcza.gnu.org.ua/bugs/index.php?399>.

-- Petr

Fixed by http​://git.gnu.org.ua/cgit/gdbm.git/commit/?id=030e685eb9df82f63d73a1bf206da84b7aa52374. The change will appear in next release of GDBM.

@p5pRT
Copy link
Author

p5pRT commented Jul 3, 2018

From @graygnuorg

Here's the proposed change to the module​: http​://git.gnu.org.ua/cgit/gdbm/GDBM_File.git

It improves error handling and adds interfaces to the new functions that appeared in the recent releases of GDBM. It has been tested with GDBM 1.16.90 (current git HEAD) and 1.8.3 (the oldest one that could be in use, as far as I can tell).

@p5pRT
Copy link
Author

p5pRT commented Jul 3, 2018

From [Unknown Contact. See original ticket]

Here's the proposed change to the module​: http​://git.gnu.org.ua/cgit/gdbm/GDBM_File.git

It improves error handling and adds interfaces to the new functions that appeared in the recent releases of GDBM. It has been tested with GDBM 1.16.90 (current git HEAD) and 1.8.3 (the oldest one that could be in use, as far as I can tell).

@p5pRT
Copy link
Author

p5pRT commented Jul 30, 2018

From @graygnuorg

Fixed in GDBM version 1.17

@p5pRT
Copy link
Author

p5pRT commented Aug 8, 2018

From bluewind@xinu.at

Am Mon, 30 Jul 2018 14​:48​:02 -0700, gray@​gnu.org schrieb​:

Fixed in GDBM version 1.17

I still seem to get the same test failures even with gdbm 1.17. Do the tests (perl 5.28.0 release tarball here) pass for you with gdbm 1.17?

@p5pRT
Copy link
Author

p5pRT commented Aug 8, 2018

From cartas@frederico.me

On Wed, 08 Aug 2018 04​:54​:36 -0700, bluewind@​xinu.at wrote​:

Am Mon, 30 Jul 2018 14​:48​:02 -0700, gray@​gnu.org schrieb​:

Fixed in GDBM version 1.17

I still seem to get the same test failures even with gdbm 1.17. Do the
tests (perl 5.28.0 release tarball here) pass for you with gdbm 1.17?

I am just reporting that from 5.24, 5.26 and 5.28 I can reproduce the same error even with gdbm 1.7.1

@p5pRT
Copy link
Author

p5pRT commented Aug 10, 2018

From @shlomif

Hi,

On Wed, 08 Aug 2018 07​:03​:03 -0700
"Frederico Recsky via RT" <perlbug-followup@​perl.org> wrote​:

On Wed, 08 Aug 2018 04​:54​:36 -0700, bluewind@​xinu.at wrote​:

Am Mon, 30 Jul 2018 14​:48​:02 -0700, gray@​gnu.org schrieb​:

Fixed in GDBM version 1.17

I still seem to get the same test failures even with gdbm 1.17. Do the
tests (perl 5.28.0 release tarball here) pass for you with gdbm 1.17?

I am just reporting that from 5.24, 5.26 and 5.28 I can reproduce the same
error even with gdbm 1.7.1

I am getting the test failure here as well with perlbrew and
lib64gdbm-devel-1.17-1.mga7 on Mageia 7 x86-64.

--


Shlomi Fish http​://www.shlomifish.org/
http​://www.shlomifish.org/humour/bits/New-versions-of-the-GPL/

For every A, Chuck Norris is both A and not-A.
Chuck Norris is freaking everything.
  — http​://www.shlomifish.org/humour/bits/facts/Chuck-Norris/

Please reply to list if it's a mailing list post - http​://shlom.in/reply .

@p5pRT
Copy link
Author

p5pRT commented Nov 20, 2018

From @jkeenan

On Fri, 10 Aug 2018 10​:46​:13 GMT, shlomif@​shlomifish.org wrote​:

Hi,

On Wed, 08 Aug 2018 07​:03​:03 -0700
"Frederico Recsky via RT" <perlbug-followup@​perl.org> wrote​:

On Wed, 08 Aug 2018 04​:54​:36 -0700, bluewind@​xinu.at wrote​:

Am Mon, 30 Jul 2018 14​:48​:02 -0700, gray@​gnu.org schrieb​:

Fixed in GDBM version 1.17

I still seem to get the same test failures even with gdbm 1.17. Do the
tests (perl 5.28.0 release tarball here) pass for you with gdbm 1.17?

I am just reporting that from 5.24, 5.26 and 5.28 I can reproduce the same
error even with gdbm 1.7.1

I am getting the test failure here as well with perlbrew and
lib64gdbm-devel-1.17-1.mga7 on Mageia 7 x86-64.

I get the same failures in ext/GDBM_File/t/fatal.t on FreeBSD-13 with gdbm 1.18.1 on perl 5 blead.

#####
$ uname -mrs
FreeBSD 13.0-CURRENT amd64

$ pkg info | grep -i gdbm
gdbm-1.18.1 GNU database manager

$ ./perl -Ilib -v | head -2 | tail -1
This is perl 5, version 29, subversion 5 (v5.29.5 (v5.29.4-101-gdf1e20e63c)) built for amd64-freebsd-thread-multi

$ ./perl -Ilib -V​:libs -V​:config_args
libs='-lpthread -lgdbm -ldl -lm -lcrypt -lutil';
config_args='-des -Dusedevel -Duseithreads -Doptimize=-O2 -pipe -fstack-protector -fno-strict-aliasing';

$ cd t;./perl harness ../ext/GDBM_File/t/*.t; cd -
===( 2;0 1/8 1/? )==============================================
# Failed test 'Trapped error when attempting to write to knobbled GDBM_File'
# at t/fatal.t line 37.
# got​: '1'
# expected​: undef

# Failed test 'expected error message from GDBM_File'
# at t/fatal.t line 46.
# ''
# doesn't match '(?^​: at .*\bfatal\.t line \d+\.\n\z)'
# Looks like you failed 2 tests of 8.
../ext/GDBM_File/t/fatal.t .. Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/8 subtests
../ext/GDBM_File/t/gdbm.t ... ok

Test Summary Report


../ext/GDBM_File/t/fatal.t (Wstat​: 512 Tests​: 8 Failed​: 2)
  Failed tests​: 7-8
  Non-zero exit status​: 2
Files=2, Tests=142, 1 wallclock secs ( 0.03 usr 0.01 sys + 0.24 cusr 0.08 csys = 0.36 CPU)
Result​: FAIL
#####

I notice also that these failures are endemic in certain of our smoke-testing reports. See http​://perl5.test-smoke.org/submatrix?test=../ext/GDBM_File/t/fatal.t.

The reports at that URL from FreeBSD-13 are, I believe, from a VM very similar to my own. The other reports are from Arch Linux smoke testing rigs.

--
James E Keenan (jkeenan@​cpan.org)

@p5pRT
Copy link
Author

p5pRT commented Nov 26, 2018

From @shlomif

On Tue, 20 Nov 2018 12​:10​:58 -0800, jkeenan wrote​:

On Fri, 10 Aug 2018 10​:46​:13 GMT, shlomif@​shlomifish.org wrote​:

Hi,

On Wed, 08 Aug 2018 07​:03​:03 -0700
"Frederico Recsky via RT" <perlbug-followup@​perl.org> wrote​:

On Wed, 08 Aug 2018 04​:54​:36 -0700, bluewind@​xinu.at wrote​:

Am Mon, 30 Jul 2018 14​:48​:02 -0700, gray@​gnu.org schrieb​:

Fixed in GDBM version 1.17

I still seem to get the same test failures even with gdbm 1.17.
Do the
tests (perl 5.28.0 release tarball here) pass for you with gdbm
1.17?

I am just reporting that from 5.24, 5.26 and 5.28 I can reproduce
the same
error even with gdbm 1.7.1

I am getting the test failure here as well with perlbrew and
lib64gdbm-devel-1.17-1.mga7 on Mageia 7 x86-64.

I get the same failures in ext/GDBM_File/t/fatal.t on FreeBSD-13 with
gdbm 1.18.1 on perl 5 blead.

#####
$ uname -mrs
FreeBSD 13.0-CURRENT amd64

$ pkg info | grep -i gdbm
gdbm-1.18.1 GNU database manager

$ ./perl -Ilib -v | head -2 | tail -1
This is perl 5, version 29, subversion 5 (v5.29.5 (v5.29.4-101-
gdf1e20e63c)) built for amd64-freebsd-thread-multi

$ ./perl -Ilib -V​:libs -V​:config_args
libs='-lpthread -lgdbm -ldl -lm -lcrypt -lutil';
config_args='-des -Dusedevel -Duseithreads -Doptimize=-O2 -pipe
-fstack-protector -fno-strict-aliasing';

$ cd t;./perl harness ../ext/GDBM_File/t/*.t; cd -
===( 2;0 1/8 1/?
)==============================================
# Failed test 'Trapped error when attempting to write to knobbled
GDBM_File'
# at t/fatal.t line 37.
# got​: '1'
# expected​: undef

# Failed test 'expected error message from GDBM_File'
# at t/fatal.t line 46.
# ''
# doesn't match '(?^​: at .*\bfatal\.t line \d+\.\n\z)'
# Looks like you failed 2 tests of 8.
../ext/GDBM_File/t/fatal.t .. Dubious, test returned 2 (wstat 512,
0x200)
Failed 2/8 subtests
../ext/GDBM_File/t/gdbm.t ... ok

Test Summary Report
-------------------
../ext/GDBM_File/t/fatal.t (Wstat​: 512 Tests​: 8 Failed​: 2)
Failed tests​: 7-8
Non-zero exit status​: 2
Files=2, Tests=142, 1 wallclock secs ( 0.03 usr 0.01 sys + 0.24
cusr 0.08 csys = 0.36 CPU)
Result​: FAIL
#####

I notice also that these failures are endemic in certain of our smoke-
testing reports. See http​://perl5.test-
smoke.org/submatrix?test=../ext/GDBM_File/t/fatal.t.

The reports at that URL from FreeBSD-13 are, I believe, from a VM very
similar to my own. The other reports are from Arch Linux smoke
testing rigs.

"perlbrew install perl-5.29.5" fails on mageia v7 x64 with lib64gdbm6-1.18.1-1.mga7
lib64gdbm_compat4-1.18.1-1.mga7
lib64gdbm-devel-1.18.1-1.mga7 with these errors. Dear GDBM devs, can you please fix that?

@p5pRT
Copy link
Author

p5pRT commented Nov 29, 2018

From @eserte

This is a bug report for perl from slaven@​rezic.de,
generated with the help of perlbug 1.40 running under perl 5.26.3.


The test suite of perl 5.26.3 fails on a freebsd 12 system with gdbm-1.18.1
installed​:

../ext/GDBM_File/t/fatal.t ......................................... 1/8
# Failed test 'Trapped error when attempting to write to knobbled GDBM_File'
# at t/fatal.t line 37.
# got​: '1'
# expected​: undef

# Failed test 'expected error message from GDBM_File'
# at t/fatal.t line 46.
# ''
# doesn't match '(?^​: at .*\bfatal\.t line \d+\.\n\z)'
# Looks like you failed 2 tests of 8.
../ext/GDBM_File/t/fatal.t ......................................... Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/8 subtests

The same problem happens also with perl 5.28.1 on a freebsd 13 system,
same gdbm package installed.



Flags​:
  category=library
  severity=low
  module=GDBM_File


Site configuration information for perl 5.26.3​:

Configured by eserte at Thu Nov 29 20​:10​:39 UTC 2018.

Summary of my perl5 (revision 5 version 26 subversion 3) configuration​:
 
  Platform​:
  osname=freebsd
  osvers=12.0-prerelease
  archname=amd64-freebsd
  uname='freebsd cloud1.bbbike.org 12.0-prerelease freebsd 12.0-prerelease ad6e056e343(stable12) generic amd64 '
  config_args='-ds -e -Dprefix=/usr/perl5.26.3p -Dcf_email=srezic@​cpan.org -Doptimize=-O2 -pipe'
  hint=recommended
  useposix=true
  d_sigaction=define
  useithreads=undef
  usemultiplicity=undef
  use64bitint=define
  use64bitall=define
  uselongdouble=undef
  usemymalloc=n
  default_inc_excludes_dot=define
  bincompat5005=undef
  Compiler​:
  cc='cc'
  ccflags ='-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_FORTIFY_SOURCE=2'
  optimize='-O2 -pipe'
  cppflags='-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include'
  ccversion=''
  gccversion='4.2.1 Compatible FreeBSD Clang 6.0.1 (tags/RELEASE_601/final 335540)'
  gccosandvers=''
  intsize=4
  longsize=8
  ptrsize=8
  doublesize=8
  byteorder=12345678
  doublekind=3
  d_longlong=define
  longlongsize=8
  d_longdbl=define
  longdblsize=16
  longdblkind=3
  ivtype='long'
  ivsize=8
  nvtype='double'
  nvsize=8
  Off_t='off_t'
  lseeksize=8
  alignbytes=8
  prototype=define
  Linker and Libraries​:
  ld='cc'
  ldflags ='-pthread -Wl,-E -fstack-protector-strong -L/usr/local/lib'
  libpth=/usr/lib /usr/local/lib /usr/lib/clang/6.0.1/lib /usr/lib
  libs=-lpthread -lgdbm -ldl -lm -lcrypt -lutil -lc
  perllibs=-lpthread -ldl -lm -lcrypt -lutil -lc
  libc=
  so=so
  useshrplib=false
  libperl=libperl.a
  gnulibc_version=''
  Dynamic Linking​:
  dlsrc=dl_dlopen.xs
  dlext=so
  d_dlsymun=undef
  ccdlflags=' '
  cccdlflags='-DPIC -fPIC'
  lddlflags='-shared -L/usr/local/lib -fstack-protector-strong'


@​INC for perl 5.26.3​:
  lib
  /usr/perl5.26.3p/lib/site_perl/5.26.3/amd64-freebsd
  /usr/perl5.26.3p/lib/site_perl/5.26.3
  /usr/perl5.26.3p/lib/5.26.3/amd64-freebsd
  /usr/perl5.26.3p/lib/5.26.3


Environment for perl 5.26.3​:
  HOME=/home/eserte
  LANG (unset)
  LANGUAGE (unset)
  LD_LIBRARY_PATH (unset)
  LOGDIR (unset)
  PATH=/usr/local/bin​:/usr/bin​:/bin​:/usr/local/sbin​:/usr/sbin​:/sbin​:/home/eserte/bin/freebsd12.0​:/home/eserte/bin/sh​:/home/eserte/bin​:/home/eserte/bin/pistachio-perl/bin​:/usr/games​:/home/eserte/devel
  PERLDOC=-MPod​::Perldoc​::ToTextOverstrike
  PERL_BADLANG (unset)
  SHELL=/usr/local/bin/zsh

@p5pRT
Copy link
Author

p5pRT commented Nov 29, 2018

From @eserte

Dana Thu, 29 Nov 2018 12​:57​:43 -0800, slaven@​rezic.de reče​:

This is a bug report for perl from slaven@​rezic.de,
generated with the help of perlbug 1.40 running under perl 5.26.3.

-----------------------------------------------------------------
The test suite of perl 5.26.3 fails on a freebsd 12 system with gdbm-
1.18.1
installed​:

../ext/GDBM_File/t/fatal.t .........................................
1/8
# Failed test 'Trapped error when attempting to write to knobbled
GDBM_File'
# at t/fatal.t line 37.
# got​: '1'
# expected​: undef

# Failed test 'expected error message from GDBM_File'
# at t/fatal.t line 46.
# ''
# doesn't match '(?^​: at .*\bfatal\.t line \d+\.\n\z)'
# Looks like you failed 2 tests of 8.
../ext/GDBM_File/t/fatal.t .........................................
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/8 subtests

The same problem happens also with perl 5.28.1 on a freebsd 13 system,
same gdbm package installed.

-----------------------------------------------------------------
---
Flags​:
category=library
severity=low
module=GDBM_File
---
Site configuration information for perl 5.26.3​:

Configured by eserte at Thu Nov 29 20​:10​:39 UTC 2018.

Summary of my perl5 (revision 5 version 26 subversion 3)
configuration​:

Platform​:
osname=freebsd
osvers=12.0-prerelease
archname=amd64-freebsd
uname='freebsd cloud1.bbbike.org 12.0-prerelease freebsd 12.0-
prerelease ad6e056e343(stable12) generic amd64 '
config_args='-ds -e -Dprefix=/usr/perl5.26.3p
-Dcf_email=srezic@​cpan.org -Doptimize=-O2 -pipe'
hint=recommended
useposix=true
d_sigaction=define
useithreads=undef
usemultiplicity=undef
use64bitint=define
use64bitall=define
uselongdouble=undef
usemymalloc=n
default_inc_excludes_dot=define
bincompat5005=undef
Compiler​:
cc='cc'
ccflags ='-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing
-pipe -fstack-protector-strong -I/usr/local/include
-D_FORTIFY_SOURCE=2'
optimize='-O2 -pipe'
cppflags='-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing
-pipe -fstack-protector-strong -I/usr/local/include'
ccversion=''
gccversion='4.2.1 Compatible FreeBSD Clang 6.0.1
(tags/RELEASE_601/final 335540)'
gccosandvers=''
intsize=4
longsize=8
ptrsize=8
doublesize=8
byteorder=12345678
doublekind=3
d_longlong=define
longlongsize=8
d_longdbl=define
longdblsize=16
longdblkind=3
ivtype='long'
ivsize=8
nvtype='double'
nvsize=8
Off_t='off_t'
lseeksize=8
alignbytes=8
prototype=define
Linker and Libraries​:
ld='cc'
ldflags ='-pthread -Wl,-E -fstack-protector-strong
-L/usr/local/lib'
libpth=/usr/lib /usr/local/lib /usr/lib/clang/6.0.1/lib /usr/lib
libs=-lpthread -lgdbm -ldl -lm -lcrypt -lutil -lc
perllibs=-lpthread -ldl -lm -lcrypt -lutil -lc
libc=
so=so
useshrplib=false
libperl=libperl.a
gnulibc_version=''
Dynamic Linking​:
dlsrc=dl_dlopen.xs
dlext=so
d_dlsymun=undef
ccdlflags=' '
cccdlflags='-DPIC -fPIC'
lddlflags='-shared -L/usr/local/lib -fstack-protector-strong'

---
@​INC for perl 5.26.3​:
lib
/usr/perl5.26.3p/lib/site_perl/5.26.3/amd64-freebsd
/usr/perl5.26.3p/lib/site_perl/5.26.3
/usr/perl5.26.3p/lib/5.26.3/amd64-freebsd
/usr/perl5.26.3p/lib/5.26.3

---
Environment for perl 5.26.3​:
HOME=/home/eserte
LANG (unset)
LANGUAGE (unset)
LD_LIBRARY_PATH (unset)
LOGDIR (unset)
PATH=/usr/local/bin​:/usr/bin​:/bin​:/usr/local/sbin​:/usr/sbin​:/sbin​:/home/eserte/bin/freebsd12.0​:/home/eserte/bin/sh​:/home/eserte/bin​:/home/eserte/bin/pistachio-
perl/bin​:/usr/games​:/home/eserte/devel
PERLDOC=-MPod​::Perldoc​::ToTextOverstrike
PERL_BADLANG (unset)
SHELL=/usr/local/bin/zsh

Same failure on a debian/buster system with perl 5.28.1.
Here libgdbm6-1.18.1-1 is installed.

@p5pRT
Copy link
Author

p5pRT commented Nov 30, 2018

From @jkeenan

3rd time this has been reported; merging into first ticket.

Any GDBM experts out there?

--
James E Keenan (jkeenan@​cpan.org)

@p5pRT
Copy link
Author

p5pRT commented Dec 14, 2018

From @jkeenan

On Fri, 30 Nov 2018 02​:46​:45 GMT, jkeenan wrote​:

3rd time this has been reported; merging into first ticket.

Any GDBM experts out there?

Let's watch smoke-test reports to see if this commit from Dave Mitchell today addresses the problem​:

https://perl5.git.perl.org/perl.git/commitdiff/0d9e812d

--
James E Keenan (jkeenan@​cpan.org)

@p5pRT
Copy link
Author

p5pRT commented Dec 15, 2018

From @bingos

On Fri, Dec 14, 2018 at 03​:58​:07PM -0800, James E Keenan via RT wrote​:

On Fri, 30 Nov 2018 02​:46​:45 GMT, jkeenan wrote​:

3rd time this has been reported; merging into first ticket.

Any GDBM experts out there?

Let's watch smoke-test reports to see if this commit from Dave Mitchell today addresses the problem​:

https://perl5.git.perl.org/perl.git/commitdiff/0d9e812d

---
via perlbug​: queue​: perl5 status​: open
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=133295

I have just tested blead on the FreeBSD machine I got errors for that test
on the 20th November.

FreeBSD ********* 11.2-RELEASE-p2 FreeBSD 11.2-RELEASE-p2 #0​: Tue Aug 14 21​:45​:40 UTC 2018 amd64
FreeBSD clang version 6.0.0 (tags/RELEASE_600/final 326565) (based on LLVM 6.0.0)
$ pkg info | grep gdbm
gdbm-1.18.1 GNU database manager

All tests successful.
Files=2630, Tests=1169659, 214 wallclock secs (131.48 usr 20.82 sys + 708.98 cusr 91.52 csys = 952.80 CPU)
Result​: PASS

$ ./perl -v

This is perl 5, version 29, subversion 6 (v5.29.6 (v5.29.5-110-g0d9e812de5)) built for amd64-freebsd

Thumbs up.

--
Chris Williams
aka BinGOs
PGP ID 0x4658671F
http​://www.gumbynet.org.uk

@p5pRT
Copy link
Author

p5pRT commented Dec 15, 2018

From @shlomif

On Sat, 15 Dec 2018 03​:16​:07 -0800
"Kidney Bingos via RT" <perlbug-followup@​perl.org> wrote​:

On Fri, Dec 14, 2018 at 03​:58​:07PM -0800, James E Keenan via RT wrote​:

On Fri, 30 Nov 2018 02​:46​:45 GMT, jkeenan wrote​:

3rd time this has been reported; merging into first ticket.

Any GDBM experts out there?

Let's watch smoke-test reports to see if this commit from Dave Mitchell
today addresses the problem​:

https://perl5.git.perl.org/perl.git/commitdiff/0d9e812d

---
via perlbug​: queue​: perl5 status​: open
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=133295 

I have just tested blead on the FreeBSD machine I got errors for that test
on the 20th November.

FreeBSD ********* 11.2-RELEASE-p2 FreeBSD 11.2-RELEASE-p2 #0​: Tue Aug 14
21​:45​:40 UTC 2018 amd64 FreeBSD clang version 6.0.0 (tags/RELEASE_600/final
326565) (based on LLVM 6.0.0) $ pkg info | grep gdbm
gdbm-1.18.1 GNU database manager

All tests successful.
Files=2630, Tests=1169659, 214 wallclock secs (131.48 usr 20.82 sys + 708.98
cusr 91.52 csys = 952.80 CPU) Result​: PASS

$ ./perl -v

This is perl 5, version 29, subversion 6 (v5.29.6 (v5.29.5-110-g0d9e812de5))
built for amd64-freebsd

Latest blead passes the tests on mageia linux v7 x86-64 too.

Thumbs up.

--


Shlomi Fish http​://www.shlomifish.org/
Humanity - Parody of Modern Life - http​://shlom.in/humanity

Major Kira​: Well, duh! The prophets spoke of several of The Invisible’s
children and their whereabouts.
Jadzia​: Major, you and I will need to talk someday about that “duh”.
  — http​://www.shlomifish.org/humour/Star-Trek/We-the-Living-Dead/

Please reply to list if it's a mailing list post - http​://shlom.in/reply .

@p5pRT
Copy link
Author

p5pRT commented Dec 16, 2018

From @jkeenan

On Sat, 15 Dec 2018 14​:51​:10 GMT, shlomif@​shlomifish.org wrote​:

On Sat, 15 Dec 2018 03​:16​:07 -0800
"Kidney Bingos via RT" <perlbug-followup@​perl.org> wrote​:

On Fri, Dec 14, 2018 at 03​:58​:07PM -0800, James E Keenan via RT
wrote​:

On Fri, 30 Nov 2018 02​:46​:45 GMT, jkeenan wrote​:

3rd time this has been reported; merging into first ticket.

Any GDBM experts out there?

Let's watch smoke-test reports to see if this commit from Dave
Mitchell
today addresses the problem​:

https://perl5.git.perl.org/perl.git/commitdiff/0d9e812d

---
via perlbug​: queue​: perl5 status​: open
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=133295

I have just tested blead on the FreeBSD machine I got errors for that
test
on the 20th November.

FreeBSD ********* 11.2-RELEASE-p2 FreeBSD 11.2-RELEASE-p2 #0​: Tue Aug
14
21​:45​:40 UTC 2018 amd64 FreeBSD clang version 6.0.0
(tags/RELEASE_600/final
326565) (based on LLVM 6.0.0) $ pkg info | grep gdbm
gdbm-1.18.1 GNU database manager

All tests successful.
Files=2630, Tests=1169659, 214 wallclock secs (131.48 usr 20.82 sys +
708.98
cusr 91.52 csys = 952.80 CPU) Result​: PASS

$ ./perl -v

This is perl 5, version 29, subversion 6 (v5.29.6 (v5.29.5-110-
g0d9e812de5))
built for amd64-freebsd

Latest blead passes the tests on mageia linux v7 x86-64 too.

Thumbs up.

I was able to get a PASS on Linux with the more recent version of gdbm and on FreeBSD-13. Smoke-testing on FreeBSD-13 is also showing PASS, e.g., http​://perl5.test-smoke.org/report/76136.

Resolving ticket.

--
James E Keenan (jkeenan@​cpan.org)

@p5pRT
Copy link
Author

p5pRT commented Dec 16, 2018

@jkeenan - Status changed from 'open' to 'pending release'

@p5pRT
Copy link
Author

p5pRT commented Apr 6, 2019

From @eserte

Dana Sun, 16 Dec 2018 06​:15​:23 -0800, jkeenan reče​:

On Sat, 15 Dec 2018 14​:51​:10 GMT, shlomif@​shlomifish.org wrote​:

On Sat, 15 Dec 2018 03​:16​:07 -0800
"Kidney Bingos via RT" <perlbug-followup@​perl.org> wrote​:

On Fri, Dec 14, 2018 at 03​:58​:07PM -0800, James E Keenan via RT
wrote​:

On Fri, 30 Nov 2018 02​:46​:45 GMT, jkeenan wrote​:

3rd time this has been reported; merging into first ticket.

Any GDBM experts out there?

Let's watch smoke-test reports to see if this commit from Dave
Mitchell
today addresses the problem​:

https://perl5.git.perl.org/perl.git/commitdiff/0d9e812d

---
via perlbug​: queue​: perl5 status​: open
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=133295

I have just tested blead on the FreeBSD machine I got errors for
that
test
on the 20th November.

FreeBSD ********* 11.2-RELEASE-p2 FreeBSD 11.2-RELEASE-p2 #0​: Tue
Aug
14
21​:45​:40 UTC 2018 amd64 FreeBSD clang version 6.0.0
(tags/RELEASE_600/final
326565) (based on LLVM 6.0.0) $ pkg info | grep gdbm
gdbm-1.18.1 GNU database manager

All tests successful.
Files=2630, Tests=1169659, 214 wallclock secs (131.48 usr 20.82 sys
+
708.98
cusr 91.52 csys = 952.80 CPU) Result​: PASS

$ ./perl -v

This is perl 5, version 29, subversion 6 (v5.29.6 (v5.29.5-110-
g0d9e812de5))
built for amd64-freebsd

Latest blead passes the tests on mageia linux v7 x86-64 too.

Thumbs up.

I was able to get a PASS on Linux with the more recent version of gdbm
and on FreeBSD-13. Smoke-testing on FreeBSD-13 is also showing PASS,
e.g., http​://perl5.test-smoke.org/report/76136.

Resolving ticket.

However, ext/GDBM_File/t/fatal.t in perl 5.28.2-RC1 still fails on my FreeBSD 12 and 13 systems.

Regards,
  Slaven

@p5pRT
Copy link
Author

p5pRT commented Apr 6, 2019

From @shlomif

On Fri, 05 Apr 2019 23​:40​:31 -0700
"slaven@​rezic.de via RT" <perlbug-followup@​perl.org> wrote​:

Dana Sun, 16 Dec 2018 06​:15​:23 -0800, jkeenan reče​:

On Sat, 15 Dec 2018 14​:51​:10 GMT, shlomif@​shlomifish.org wrote​:

On Sat, 15 Dec 2018 03​:16​:07 -0800
"Kidney Bingos via RT" <perlbug-followup@​perl.org> wrote​:

On Fri, Dec 14, 2018 at 03​:58​:07PM -0800, James E Keenan via RT
wrote​:

On Fri, 30 Nov 2018 02​:46​:45 GMT, jkeenan wrote​:

3rd time this has been reported; merging into first ticket.

Any GDBM experts out there?

Let's watch smoke-test reports to see if this commit from Dave
Mitchell
today addresses the problem​:

https://perl5.git.perl.org/perl.git/commitdiff/0d9e812d

---
via perlbug​: queue​: perl5 status​: open
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=133295 

I have just tested blead on the FreeBSD machine I got errors for
that
test
on the 20th November.

FreeBSD ********* 11.2-RELEASE-p2 FreeBSD 11.2-RELEASE-p2 #0​: Tue
Aug
14
21​:45​:40 UTC 2018 amd64 FreeBSD clang version 6.0.0
(tags/RELEASE_600/final
326565) (based on LLVM 6.0.0) $ pkg info | grep gdbm
gdbm-1.18.1 GNU database manager

All tests successful.
Files=2630, Tests=1169659, 214 wallclock secs (131.48 usr 20.82 sys
+
708.98
cusr 91.52 csys = 952.80 CPU) Result​: PASS

$ ./perl -v

This is perl 5, version 29, subversion 6 (v5.29.6 (v5.29.5-110-
g0d9e812de5))
built for amd64-freebsd

Latest blead passes the tests on mageia linux v7 x86-64 too.

Thumbs up.

I was able to get a PASS on Linux with the more recent version of gdbm
and on FreeBSD-13. Smoke-testing on FreeBSD-13 is also showing PASS,
e.g., http​://perl5.test-smoke.org/report/76136.

Resolving ticket.

However, ext/GDBM_File/t/fatal.t in perl 5.28.2-RC1 still fails on my FreeBSD
12 and 13 systems.

I am getting failure on -RC1 on mageia linux v7 too.

Regards,
Slaven

---
via perlbug​: queue​: perl5 status​: pending release
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=133295

--


Shlomi Fish http​://www.shlomifish.org/
Best Introductory Programming Language - http​://shlom.in/intro-lang

“The best time to plant a tree was 20 years ago. The second best time is now.”
  – A Reported Proverb

Please reply to list if it's a mailing list post - http​://shlom.in/reply .

@p5pRT
Copy link
Author

p5pRT commented Apr 6, 2019

From @iabyn

On Fri, Apr 05, 2019 at 11​:40​:31PM -0700, slaven@​rezic.de via RT wrote​:

Dana Sun, 16 Dec 2018 06​:15​:23 -0800, jkeenan reče​:

I was able to get a PASS on Linux with the more recent version of gdbm
and on FreeBSD-13. Smoke-testing on FreeBSD-13 is also showing PASS,
e.g., http​://perl5.test-smoke.org/report/76136.

Resolving ticket.

However, ext/GDBM_File/t/fatal.t in perl 5.28.2-RC1 still fails on my
FreeBSD 12 and 13 systems.

Cherry-picking this commit fixes it​:

commit 0d9e812
Author​: David Mitchell <davem@​iabyn.com>
AuthorDate​: Fri Dec 14 16​:54​:42 2018 +0000
Commit​: David Mitchell <davem@​iabyn.com>
CommitDate​: Fri Dec 14 16​:54​:42 2018 +0000

  ext/GDBM_File/t/fatal.t​: handle non-fatality
 
  This script is supposed to exercise the error handling callback
  mechanism in gdbm, by triggering an error by surreptitiously closing
  the file handle which gdbm has opened.
 
  However, this doesn't trigger an error in newer releases of the gdbm
  library, which uses mmap() rather than write() etc. In fact I can't see
  any way of triggering an error​: so just skip the relevant tests if we
  can't trigger a failure.

--
"You may not work around any technical limitations in the software"
  -- Windows Vista license

@p5pRT
Copy link
Author

p5pRT commented May 22, 2019

From @khwilliamson

Thank you for filing this report. You have helped make Perl better.

With the release today of Perl 5.30.0, this and 160 other issues have been
resolved.

Perl 5.30.0 may be downloaded via​:
https://metacpan.org/release/XSAWYERX/perl-5.30.0

If you find that the problem persists, feel free to reopen this ticket.

@p5pRT
Copy link
Author

p5pRT commented May 22, 2019

@khwilliamson - Status changed from 'pending release' to 'resolved'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant