Bug#1115374: perl: Dumpvalue bugs with shared arrays and hashes with circular loops

David Christensen dpchrist at holgerdanske.com
Tue Sep 16 03:27:35 BST 2025


Package: perl
Version: 5.32.1-4+deb11u4
Severity: normal
X-Debbugs-Cc: dpchrist at holgerdanske.com

Dear Maintainer,

I use Perl and use the module Dumpvalue for development.
Unforunately, it fails on deep recursion when I attempt to dump
shared arrays or hashes with circular loops:

2025-09-15 19:20:06 dpchrist at laalaa ~/sandbox/perl
$ cat /etc/debian_version ; uname -a ; perl -v
11.11
Linux laalaa 5.10.0-35-amd64 #1 SMP Debian 5.10.237-1 (2025-05-19) x86_64 GNU/Linux

This is perl 5, version 32, subversion 1 (v5.32.1) built for x86_64-linux-gnu-thread-multi
(with 56 registered patches, see perl -V for more detail)

Copyright 1987-2021, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.


2025-09-15 19:20:22 dpchrist at laalaa ~/sandbox/perl
$ cat Dumpvalue-bug-shared-array-with-circular-loop.sh 
#!/bin/sh
# $Id: Dumpvalue-bug-shared-array-with-circular-loop.sh,v 1.2 2025/09/16 02:19:40 dpchrist Exp $
#
# Demonstrate bug in Perl Dumpvalue with shared array with circular
# loop.
#
# By David Paul Christensen dpchrist at holgerdanske.com
# Public Domain.

perl -Mstrict -Mwarnings -Mthreads -Mthreads::shared -MDumpvalue -e 'my @a :shared; $a[0]=\@a; $|=1; my $d=Dumpvalue->new; $d->dumpValue(\@a)' > foo &

pid=$!
sleep 1
kill $pid

sync
wc foo

2025-09-15 19:20:29 dpchrist at laalaa ~/sandbox/perl
$ cat Dumpvalue-bug-shared-hash-with-circular-loop.sh 
#!/bin/sh
# $Id: Dumpvalue-bug-shared-hash-with-circular-loop.sh,v 1.1 2025/09/16 02:19:40 dpchrist Exp $
#
# Demonstrate bug in Perl Dumpvalue with shared hash with circular
# loop.
#
# By David Paul Christensen dpchrist at holgerdanske.com
# Public Domain.

perl -Mstrict -Mwarnings -Mthreads -Mthreads::shared -MDumpvalue -e 'my %h :shared; $h{loop}=\%h; $|=1; my $d=Dumpvalue->new; $d->dumpValue(\%h)' > foo &

pid=$!
sleep 1
kill $pid

sync
wc foo

2025-09-15 19:20:34 dpchrist at laalaa ~/sandbox/perl
$ /bin/sh -x Dumpvalue-bug-shared-array-with-circular-loop.sh 
+ pid=10808
+ sleep 1
+ perl -Mstrict -Mwarnings -Mthreads -Mthreads::shared -MDumpvalue -e my @a :shared; $a[0]=\@a; $|=1; my $d=Dumpvalue->new; $d->dumpValue(\@a)
Deep recursion on subroutine "Dumpvalue::unwrap" at /usr/share/perl/5.32/Dumpvalue.pm line 173.
Deep recursion on subroutine "Dumpvalue::DumpElem" at /usr/share/perl/5.32/Dumpvalue.pm line 270.
+ kill 10808
+ sync
+ wc foo
    16008     32016 384760284 foo

2025-09-15 19:20:50 dpchrist at laalaa ~/sandbox/perl
$ /bin/sh -x Dumpvalue-bug-shared-hash-with-circular-loop.sh  
+ pid=10817
+ sleep 1
+ perl -Mstrict -Mwarnings -Mthreads -Mthreads::shared -MDumpvalue -e my %h :shared; $h{loop}=\%h; $|=1; my $d=Dumpvalue->new; $d->dumpValue(\%h)
Deep recursion on subroutine "Dumpvalue::unwrap" at /usr/share/perl/5.32/Dumpvalue.pm line 173.
Deep recursion on subroutine "Dumpvalue::DumpElem" at /usr/share/perl/5.32/Dumpvalue.pm line 243.
+ kill 10817
+ sync
+ wc foo
    17045     51135 436322304 foo

2025-09-15 19:21:05 dpchrist at laalaa ~/sandbox/perl
$


These bugs may affect newer Debian, Perl, and/or Dumpvalue releases.


Please feel free to modify and/or add the test scripts to your testing
infrastructure.


Please advise.


Thank you,

David



-- System Information:
Debian Release: 11.11
  APT prefers oldoldstable-updates
  APT policy: (500, 'oldoldstable-updates'), (500, 'oldoldstable-security'), (500, 'oldoldstable')
Architecture: amd64 (x86_64)

Kernel: Linux 5.10.0-35-amd64 (SMP w/4 CPU threads)
Kernel taint flags: TAINT_FIRMWARE_WORKAROUND, TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=C, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages perl depends on:
ii  dpkg               1.20.13
ii  libperl5.32        5.32.1-4+deb11u4
ii  perl-base          5.32.1-4+deb11u4
ii  perl-modules-5.32  5.32.1-4+deb11u4

Versions of packages perl recommends:
ii  netbase  6.3

Versions of packages perl suggests:
pn  libtap-harness-archive-perl                             <none>
pn  libterm-readline-gnu-perl | libterm-readline-perl-perl  <none>
ii  make                                                    4.3-4.1
ii  perl-doc                                                5.32.1-4+deb11u4

-- no debconf information



More information about the Perl-maintainers mailing list