develooper Front page | perl.perl5.porters | Postings from January 2012

[perl #108994] certain objects crash SvPVutf8()

Thread Previous
From:
Ricardo SIGNES
Date:
January 24, 2012 19:05
Subject:
[perl #108994] certain objects crash SvPVutf8()
Message ID:
rt-3.6.HEAD-14510-1327460718-563.108994-75-0@perl.org
# New Ticket Created by  Ricardo SIGNES 
# Please include the string:  [perl #108994]
# in the subject line of all future correspondence about this issue. 
# <URL: https://rt.perl.org:443/rt3/Ticket/Display.html?id=108994 >


This is a bug report for perl from rjbs@cpan.org,
generated with the help of perlbug 1.39 running under perl 5.14.2.


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

I am reporting thus bug on behalf of Andrew Dunstan <andrew@dunslane.net>

He is a programmer with PostgreSQL.

Essentially, the problem is the one seen in this email thread:
<http://archives.postgresql.org/pgsql-hackers/2012-01/msg00149.php>
and this one:
<http://archives.postgresql.org/pgsql-hackers/2012-01/msg00287.php>
and this:
<http://archives.postgresql.org/pgsql-hackers/2012-01/msg00295.php>

In a nutshell, if we pass certain objects to SvPVutf8() we get a
crash. If we copy them first using newSVsv() we don't get a crash.
Things we know of that have this problem include $^V and typeglobs.
Not sure if there are others. Of course, a crash in a database server
(this is a perl interpreter that runs inside the database server) is a
pretty bad thing. Currently we're working around it by unconditionally
copying the argument with newSVsv(), but we'd like to reduce the
overhead of that by knowing exactly when we need to do it. And from
our POV getting a crash at all is a bug in Perl.


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

Configured by rjbs at Tue Nov 15 23:14:56 EST 2011.

Summary of my perl5 (revision 5 version 14 subversion 2) configuration:
   
  Platform:
    osname=darwin, osvers=11.2.0, archname=darwin-2level
    uname='darwin walrus.local 11.2.0 darwin kernel version 11.2.0: tue aug 9 20:54:00 pdt 2011; root:xnu-1699.24.8~1release_x86_64 x86_64 '
    config_args='-de -Dprefix=/Users/rjbs/perl5/perlbrew/perls/14.2 -Dusedtrace'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=undef, usemultiplicity=undef
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=define, use64bitall=define, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-fno-common -DPERL_DARWIN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/opt/local/include',
    optimize='-O3',
    cppflags='-fno-common -DPERL_DARWIN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/opt/local/include'
    ccversion='', gccversion='4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)', 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='env MACOSX_DEPLOYMENT_TARGET=10.3 cc', ldflags =' -fstack-protector -L/usr/local/lib -L/opt/local/lib'
    libpth=/usr/local/lib /opt/local/lib /usr/lib
    libs=-lgdbm -ldbm -ldl -lm -lutil -lc
    perllibs=-ldl -lm -lutil -lc
    libc=, so=dylib, useshrplib=false, libperl=libperl.a
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
    cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup -L/usr/local/lib -L/opt/local/lib -fstack-protector'

Locally applied patches:
    

---
@INC for perl 5.14.2:
    /Users/rjbs/.perlbrew/libs/14.2@std/lib/perl5/darwin-2level
    /Users/rjbs/.perlbrew/libs/14.2@std/lib/perl5/darwin-2level
    /Users/rjbs/.perlbrew/libs/14.2@std/lib/perl5
    /Users/rjbs/perl5/perlbrew/perls/14.2/lib/site_perl/5.14.2/darwin-2level
    /Users/rjbs/perl5/perlbrew/perls/14.2/lib/site_perl/5.14.2
    /Users/rjbs/perl5/perlbrew/perls/14.2/lib/5.14.2/darwin-2level
    /Users/rjbs/perl5/perlbrew/perls/14.2/lib/5.14.2
    .

---
Environment for perl 5.14.2:
    DYLD_LIBRARY_PATH (unset)
    HOME=/Users/rjbs
    LANG=en_US.UTF-8
    LANGUAGE (unset)
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PATH=/Users/rjbs/.perlbrew/libs/14.2@std/bin:/Users/rjbs/perl5/perlbrew/bin:/Users/rjbs/perl5/perlbrew/perls/14.2/bin:/Users/rjbs/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin
    PERL5LIB=/Users/rjbs/.perlbrew/libs/14.2@std/lib/perl5/darwin-2level:/Users/rjbs/.perlbrew/libs/14.2@std/lib/perl5:
    PERLBREW_BASHRC_VERSION=0.33
    PERLBREW_HOME=/Users/rjbs/.perlbrew
    PERLBREW_LIB=std
    PERLBREW_PATH=/Users/rjbs/.perlbrew/libs/14.2@std/bin:/Users/rjbs/perl5/perlbrew/bin:/Users/rjbs/perl5/perlbrew/perls/14.2/bin
    PERLBREW_PERL=14.2
    PERLBREW_ROOT=/Users/rjbs/perl5/perlbrew
    PERLBREW_VERSION=0.30
    PERL_AUTOINSTALL=--skipdeps
    PERL_BADLANG (unset)
    PERL_LOCAL_LIB_ROOT=/Users/rjbs/.perlbrew/libs/14.2@std
    PERL_MB_OPT=--install_base /Users/rjbs/.perlbrew/libs/14.2@std
    PERL_MM_OPT=INSTALL_BASE=/Users/rjbs/.perlbrew/libs/14.2@std
    SHELL=/opt/local/bin/zsh


Thread Previous


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About