FAQ
# New Ticket Created by
# Please include the string: [perl #128231]
# in the subject line of all future correspondence about this issue.
# <URL: https://rt.perl.org/Ticket/Display.html?id=128231 >


This is a bug report for perl from porton@narod.ru,
generated with the help of perlbug 1.40 running under perl 5.22.2.


-----------------------------------------------------------------
[Please describe your issue here]

The value of $obj->{X} in the attached file is undef, it is not a blessed
hash, it is not a tied hash. So the attempt to locate method STORE in
wrong.

This causes a fatal error message, which should not happen (there should
be even no warning).

$ perl ~/t/perl-bug.pl
Content-Type: text/plain

Perl version: v5.22.2
$VAR1 = undef;
Can't locate object method "STORE" via package "Tier" at /home/porton/t/perl-bug.pl line 47.


[Please do not change anything below this line]
-----------------------------------------------------------------
---
Flags:
     category=core
     severity=high
---
Site configuration information for perl 5.22.2:

Configured by Debian Project at Sat Apr 30 12:20:51 UTC 2016.

Summary of my perl5 (revision 5 version 22 subversion 2) configuration:

   Platform:
     osname=linux, osvers=3.16.0, archname=i586-linux-gnu-thread-multi-64int
     uname='linux localhost 3.16.0 #1 smp debian 3.16.0 i686 gnulinux '
     config_args='-Dusethreads -Duselargefiles -Dcc=i586-linux-gnu-gcc -Dcpp=i586-linux-gnu-cpp -Dld=i586-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=i586-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.22 -Darchlib=/usr/lib/i386-linux-gnu/perl/5.22 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/i386-linux-gnu/perl5/5.22 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.22.2 -Dsitearch=/usr/local/lib/i386-linux-gnu/perl/5.22.2 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.22.2'
     hint=recommended, useposix=true, d_sigaction=define
     useithreads=define, usemultiplicity=define
     use64bitint=define, use64bitall=undef, uselongdouble=undef
     usemymalloc=n, bincompat5005=undef
   Compiler:
     cc='i586-linux-gnu-gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
     optimize='-O2 -g',
     cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include'
     ccversion='', gccversion='5.3.1 20160424', gccosandvers=''
     intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=12345678, doublekind=3
     d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12, longdblkind=3
     ivtype='long long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
     alignbytes=4, prototype=define
   Linker and Libraries:
     ld='i586-linux-gnu-gcc', ldflags =' -fstack-protector-strong -L/usr/local/lib'
     libpth=/usr/local/lib /usr/lib/gcc/i586-linux-gnu/5/include-fixed /usr/include/i386-linux-gnu /usr/lib /lib/i386-linux-gnu /lib/../lib /usr/lib/i386-linux-gnu /usr/lib/../lib /lib
     libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
     perllibs=-ldl -lm -lpthread -lc -lcrypt
     libc=libc-2.22.so, so=so, useshrplib=true, libperl=libperl.so.5.22
     gnulibc_version='2.22'
   Dynamic Linking:
     dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
     cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib -fstack-protector-strong'

Locally applied patches:
     DEBPKG:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS default for modules installed from CPAN.
     DEBPKG:debian/db_file_ver - http://bugs.debian.org/340047 Remove overly restrictive DB_File version check.
     DEBPKG:debian/doc_info - Replace generic man(1) instructions with Debian-specific information.
     DEBPKG:debian/enc2xs_inc - http://bugs.debian.org/290336 Tweak enc2xs to follow symlinks and ignore missing @INC directories.
     DEBPKG:debian/errno_ver - http://bugs.debian.org/343351 Remove Errno version check due to upgrade problems with long-running processes.
     DEBPKG:debian/libperl_embed_doc - http://bugs.debian.org/186778 Note that libperl-dev package is required for embedded linking
     DEBPKG:fixes/respect_umask - Respect umask during installation
     DEBPKG:debian/writable_site_dirs - Set umask approproately for site install directories
     DEBPKG:debian/extutils_set_libperl_path - EU:MM: set location of libperl.a under /usr/lib
     DEBPKG:debian/no_packlist_perllocal - Don't install .packlist or perllocal.pod for perl or vendor
     DEBPKG:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to the binary targets.
     DEBPKG:debian/instmodsh_doc - Debian policy doesn't install .packlist files for core or vendor.
     DEBPKG:debian/ld_run_path - Remove standard libs from LD_RUN_PATH as per Debian policy.
     DEBPKG:debian/libnet_config_path - Set location of libnet.cfg to /etc/perl/Net as /usr may not be writable.
     DEBPKG:debian/mod_paths - Tweak @INC ordering for Debian
     DEBPKG:debian/prune_libs - http://bugs.debian.org/128355 Prune the list of libraries wanted to what we actually need.
     DEBPKG:fixes/net_smtp_docs - [rt.cpan.org #36038] http://bugs.debian.org/100195 Document the Net::SMTP 'Port' option
     DEBPKG:debian/perlivp - http://bugs.debian.org/510895 Make perlivp skip include directories in /usr/local
     DEBPKG:debian/deprecate-with-apt - http://bugs.debian.org/747628 Point users to Debian packages of deprecated core modules
     DEBPKG:debian/squelch-locale-warnings - http://bugs.debian.org/508764 Squelch locale warnings in Debian package maintainer scripts
     DEBPKG:debian/skip-upstream-git-tests - Skip tests specific to the upstream Git repository
     DEBPKG:debian/patchlevel - http://bugs.debian.org/567489 List packaged patches for 5.22.2-1 in patchlevel.h
     DEBPKG:debian/skip-kfreebsd-crash - http://bugs.debian.org/628493 [perl #96272] Skip a crashing test case in t/op/threads.t on GNU/kFreeBSD
     DEBPKG:fixes/document_makemaker_ccflags - http://bugs.debian.org/628522 [rt.cpan.org #68613] Document that CCFLAGS should include $Config{ccflags}
     DEBPKG:debian/find_html2text - http://bugs.debian.org/640479 Configure CPAN::Distribution with correct name of html2text
     DEBPKG:debian/perl5db-x-terminal-emulator.patch - http://bugs.debian.org/668490 Invoke x-terminal-emulator rather than xterm in perl5db.pl
     DEBPKG:debian/cpan-missing-site-dirs - http://bugs.debian.org/688842 Fix CPAN::FirstTime defaults with nonexisting site dirs if a parent is writable
     DEBPKG:fixes/memoize_storable_nstore - [rt.cpan.org #77790] http://bugs.debian.org/587650 Memoize::Storable: respect 'nstore' option not respected
     DEBPKG:debian/regen-skip - Skip a regeneration check in unrelated git repositories
     DEBPKG:debian/makemaker-pasthru - http://bugs.debian.org/758471 Pass LD settings through to subdirectories
     DEBPKG:fixes/pod_man_reproducible_date - http://bugs.debian.org/759405 Support POD_MAN_DATE in Pod::Man for the left-hand footer
     DEBPKG:debian/locale-robustness - http://bugs.debian.org/782068 [perl #124310] Make t/run/locale.t survive missing locales masked by LC_ALL
     DEBPKG:fixes/podman-utc - http://bugs.debian.org/780259 Make the embedded date from Pod::Man reproducible
     DEBPKG:fixes/podman-utc-docs - http://bugs.debian.org/780259 Documentation and test suite updates for UTC fix
     DEBPKG:fixes/podman-empty-date - http://bugs.debian.org/780259 Support an empty POD_MAN_DATE environment variable
     DEBPKG:fixes/podman-pipe - http://bugs.debian.org/777405 Better errors for man pages from standard input
     DEBPKG:debian/pod2man-customized - Update porting/customized.dat for pod2man modifications
     DEBPKG:debian/makemaker-manext - http://bugs.debian.org/247370 Make EU::MakeMaker honour MANnEXT settings in generated manpage headers
     DEBPKG:debian/makemaker_customized - Update t/porting/customized.dat for files patched in Debian
     DEBPKG:debian/do-not-record-build-date - [6baa8db] http://bugs.debian.org/774422 [perl #125830] Allow overriding the compile time in "perl -V" output
     DEBPKG:fixes/podman-source-date-epoch - http://bugs.debian.org/801621 Make Pod::Man honor the SOURCE_DATE_EPOCH environment variable
     DEBPKG:fixes/podman-source-date-epoch-cleanups - http://bugs.debian.org/801621 Coding style and documentation for SOURCE_EPOCH_DATE
     DEBPKG:fixes/podman-source-date-epoch-testfix - http://bugs.debian.org/807086 Guard for building with SOURCE_DATE_EPOCH or POD_MAN_DATE set
     DEBPKG:debian/devel-ppport-reproducibility - http://bugs.debian.org/801523 Sort the list of XS code files when generating RealPPPort.xs
     DEBPKG:fixes/encode-unicode-bom - http://bugs.debian.org/798727 [rt.cpan.org #107043] Address https://rt.cpan.org/Public/Bug/Display.html?id=107043
     DEBPKG:debian/encode-unicode-bom-doc - http://bugs.debian.org/798727 Document Debian backport of Encode::Unicode fix
     DEBPKG:debian/kfreebsd-softupdates - http://bugs.debian.org/796798 Work around Debian Bug#796798
     DEBPKG:fixes/autodie-scope - http://bugs.debian.org/798096 Fix a scoping issue with "no autodie" and the "system" sub
     DEBPKG:debian/debugperl-compat-fix - [perl #127212] http://bugs.debian.org/810326 Disable PERL_TRACK_MEMPOOL for debugging builds
     DEBPKG:fixes/crosscompile-no-targethost - [perl #127234] Fix the Configure escape with usecrosscompile but no targethost
     DEBPKG:fixes/podlators-no-encode - [rt.cpan.org #111156] Degrade gracefully if utf8 is requested but Encode is not available
     DEBPKG:debian/cross-time-hires - [rt.cpan.org #111391] Add an environment variable to skip running configuration probes
     DEBPKG:fixes/encode-unicode-pod - Unicode.pm: Fix POD error
     DEBPKG:fixes/memoize-pod - [rt.cpan.org #89441] Fix POD errors in Memoize
     DEBPKG:fixes/ok-pod - Added encoding for pod.
     DEBPKG:debian/hurd-softupdates - http://bugs.debian.org/822735 Fix t/op/stat.t failures on hurd

---
@INC for perl 5.22.2:
     /home/porton/lib/perl/lib
     /etc/perl
     /usr/local/lib/i386-linux-gnu/perl/5.22.2
     /usr/local/share/perl/5.22.2
     /usr/lib/i386-linux-gnu/perl5/5.22
     /usr/share/perl5
     /usr/lib/i386-linux-gnu/perl/5.22
     /usr/share/perl/5.22
     /usr/local/lib/site_perl
     /usr/local/share/perl/5.22.1
     /usr/lib/i386-linux-gnu/perl-base
     .

---
Environment for perl 5.22.2:
     HOME=/home/porton
     LANG=en_US.utf8
     LANGUAGE (unset)
     LC_MEASUREMENT=en_US.UTF-8
     LC_MONETARY=en_US.UTF-8
     LC_NUMERIC=en_US.UTF-8
     LC_PAPER=en_US.UTF-8
     LC_TIME=en_US.UTF-8
     LD_LIBRARY_PATH (unset)
     LOGDIR (unset)
     PATH=~/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin:/usr/local/sbin
     PERL5LIB=/home/porton/lib/perl/lib
     PERL_BADLANG (unset)
     SHELL=/bin/bash

Search Discussions

  • Zefram at May 24, 2016 at 5:05 pm

    via RT wrote:
    The value of $obj->{X} in the attached file is undef, it is not a blessed
    hash, it is not a tied hash. So the attempt to locate method STORE in
    wrong.
    The attempt is to store an autovivified hash in $obj->{X}, within the
    tied hash %$obj. If you don't want that to happen, you shouldn't be
    referring to $obj->{X}->{Y} where $obj->{X} isn't a hash. Not a bug.

    -zefram
  • Tony Cook via RT at May 24, 2016 at 11:41 pm

    On Tue May 24 09:44:48 2016, porton@narod.ru wrote:
    Sorry, it is my error, not Perl bug.

    $obj->{X}->{Y} modifies $obj->{X} transforming it from undef to a
    hash. So STORE is called.
    Closing.

    Tony


    ---
    via perlbug: queue: perl5 status: open
    https://rt.perl.org/Ticket/Display.html?id=128231
  • Father Chrysostomos via RT at May 24, 2016 at 11:54 pm

    On Tue May 24 09:44:48 2016, porton@narod.ru wrote:
    Sorry, it is my error, not Perl bug.

    $obj->{X}->{Y} modifies $obj->{X} transforming it from undef to a
    hash. So STORE is called.
    This may not be relevant to your use case, but I have, in the past, found Tie::Hash::ReadonlyStack (on CPAN) helpful in avoiding accidental STORE calls on tied hashes.

    --

    Father Chrysostomos


    ---
    via perlbug: queue: perl5 status: rejected
    https://rt.perl.org/Ticket/Display.html?id=128231

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupperl5-porters @
categoriesperl
postedMay 24, '16 at 4:33p
activeMay 24, '16 at 11:54p
posts4
users2
websiteperl.org

People

Translate

site design / logo © 2018 Grokbase