ASE Home Page Products Download Purchase Support About ASE
ChartDirector Support
Forum HomeForum Home   SearchSearch

Message ListMessage List     Post MessagePost Message

  Trouble with Perl 5.14.2 (Debian sid)
Posted by tylerdu on Feb-07-2012 02:00
% cat a.pl
#! /usr/bin/perl

use perlchartdir;

% ./a.pl
Bizarre copy of UNKNOWN in subroutine exit at (eval 1) line 5.
...propagated at /usr/local/lib/perl/5.14.2/perlchartdir.pm line 20.
Compilation failed in require at ./a.pl line 3.
BEGIN failed--compilation aborted at ./a.pl line 3.

but sometimes I get only this (same one-liner):

% ./a.pl
zsh: segmentation fault  ./a.pl

% perl -V
Summary of my perl5 (revision 5 version 14 subversion 2) configuration:

  Platform:
    osname=linux, osvers=2.6.32-5-686, archname=i486-linux-gnu-thread-multi-64int
    uname='linux callisto 2.6.32-5-686 #1 smp wed jan 11 12:29:30 utc 2012 i686 gnulinux '
    config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=i486-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.14 -Darchlib=/usr/lib/perl/5.14 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.14.2 -Dsitearch=/usr/local/lib/perl/5.14.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 -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.14.2 -des'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=define, usemultiplicity=define
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=define, use64bitall=undef, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-O2 -g',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
    ccversion='', gccversion='4.6.2', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=12345678
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
    ivtype='long long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=4, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
    libpth=/usr/local/lib /lib/i386-linux-gnu /lib/../lib /usr/lib/i386-linux-gnu /usr/lib/../lib /lib /usr/lib
    libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
    perllibs=-ldl -lm -lpthread -lc -lcrypt
    libc=, so=so, useshrplib=true, libperl=libperl.so.5.14.2
    gnulibc_version='2.13'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
    cccdlflags='-fPIC', lddlflags='-shared -O2 -g -L/usr/local/lib -fstack-protector'


Characteristics of this binary (from libperl):
  Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
                        PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP
                        PERL_PRESERVE_IVUV USE_64_BIT_INT USE_ITHREADS
                        USE_LARGE_FILES USE_PERLIO USE_PERL_ATOF
                        USE_REENTRANT_API
  Locally applied patches:
DEBPKG:debian/arm_thread_stress_timeout - http://bugs.debian.org/501970 Raise the timeout of ext/threads/shared/t/stress.t to accommodate slower build hosts
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 to /usr/lib
DEBPKG:debian/no_packlist_perllocal - Don't install .packlist or perllocal.pod for perl or vendor
DEBPKG:debian/prefix_changes - Fiddle with *PREFIX and variables written to the makefile
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/m68k_thread_stress - http://bugs.debian.org/517938 http://bugs.debian.org/495826 Disable some threads tests on m68k for now due to missing TLS.
DEBPKG:debian/mod_paths - Tweak @INC ordering for Debian
DEBPKG:debian/module_build_man_extensions - http://bugs.debian.org/479460 Adjust Module::Build manual page extensions for the Debian Perl policy
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/disable-zlib-bundling - Disable zlib bundling in Compress::Raw::Zlib
DEBPKG:debian/cpanplus_definstalldirs - http://bugs.debian.org/533707 Configure CPANPLUS to use the site directories by default.
DEBPKG:debian/cpanplus_config_path - Save local versions of CPANPLUS::Config::System into /etc/perl.
DEBPKG:debian/deprecate-with-apt - http://bugs.debian.org/580034 Point users to Debian packages of deprecated core modules
DEBPKG:fixes/hurd-ccflags - [a190e64] http://bugs.debian.org/587901 [perl #92244] Make hints/gnu.sh append to $ccflags rather than overriding them
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:fixes/extutils-cbuilder-cflags - [011e8fb] http://bugs.debian.org/624460 [perl #89478] Append CFLAGS and LDFLAGS to their Config.pm counterparts in EU::CBuilder
DEBPKG:fixes/module-build-home-directory - http://bugs.debian.org/624850 [rt.cpan.org #67893] Fix failing tilde test when run under a UID without a passwd entry
DEBPKG:debian/patchlevel - http://bugs.debian.org/567489 List packaged patches for 5.14.2-7 in patchlevel.h
DEBPKG:fixes/h2ph-multiarch - [e7ec705] http://bugs.debian.org/625808 [perl #90122] Make h2ph correctly search gcc include directories
DEBPKG:fixes/index-tainting - [3b36395] http://bugs.debian.org/291450 [perl #64804] RT 64804: tainting with index() of a constant
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:fixes/sys-syslog-socket-timeout-kfreebsd.patch - http://bugs.debian.org/627821 [rt.cpan.org #69997] Use a socket timeout on GNU/kFreeBSD to catch ICMP port unreachable messages
DEBPKG:fixes/hurd-hints - http://bugs.debian.org/636609 Improve general GNU hints, needed for GNU/Hurd.
DEBPKG:fixes/pod_fixes - [7698aed] http://bugs.debian.org/637816 Fix typos in several pod/perl*.pod files
DEBPKG:debian/find_html2text - http://bugs.debian.org/640479 Configure CPAN::Distribution with correct name of html2text
DEBPKG:fixes/digest_eval_hole - http://bugs.debian.org/644108 Close the eval "require $module" security hole in Digest->new($algorithm)
DEBPKG:fixes/hurd-ndbm - [f0d0a20] [perl #102680] http://bugs.debian.org/645989 Add GNU/Hurd hints for NDBM_File
DEBPKG:fixes/sysconf.t-posix - [8040185] [perl #102888] http://bugs.debian.org/646016 Fix hang in ext/POSIX/t/sysconf.t on GNU/Hurd
DEBPKG:fixes/hurd-largefile - [1fda587] [perl #103014] http://bugs.debian.org/645790 enable LFS on GNU/Hurd
DEBPKG:debian/hurd_test_todo_syslog - http://bugs.debian.org/650093 Disable failing GNU/Hurd tests in cpan/Sys-Syslog/t/syslog.t
DEBPKG:fixes/hurd_skip_itimer_virtual - [rt.cpan.org #72754] http://bugs.debian.org/650094 Skip interval timer tests in Time::HiRes on GNU/Hurd
DEBPKG:debian/hurd_test_skip_sigdispatch - http://bugs.debian.org/650188 Disable failing GNU/Hurd tests op/sigdispatch.t
DEBPKG:debian/hurd_test_skip_stack - http://bugs.debian.org/650175 Disable failing GNU/Hurd tests dist/threads/t/stack.t
DEBPKG:debian/hurd_test_skip_pipe - http://bugs.debian.org/650187 Disable failing GNU/Hurd tests io/pipe.t
DEBPKG:debian/hurd_test_skip_io_pipe - http://bugs.debian.org/650096 Disable failing GNU/Hurd tests dist/IO/t/io_pipe.t
DEBPKG:fixes/manpage_name_CPAN - http://bugs.debian.org/650448 [rt.cpan.org #73396] cpan/CPAN: add NAME headings in modules with POD
DEBPKG:fixes/manpage_name_CPANPLUS - http://bugs.debian.org/650450 [rt.cpan.org #73398] cpan/CPANPLUS: add NAME headings in modules with POD
DEBPKG:fixes/manpage_name_Test-Harness - http://bugs.debian.org/650451 [rt.cpan.org #73399] cpan/Test-Harness: add NAME headings in modules with POD
DEBPKG:fixes/manpage_name_Term-UI - http://bugs.debian.org/650452 [rt.cpan.org #73400] cpan/Term-UI: add NAME headings in modules with POD
DEBPKG:fixes/podlators_ae_ligature_fallback - http://bugs.debian.org/652851 Fix the ASCII fallback string for AE
DEBPKG:fixes/fsf_postal_address - [de89470] Update references to the FSF's postal address
DEBPKG:fixes/cpan_module_pod_fixes - [perl #106870] [rt.cpan.org #73447] [rt.cpan.org #73446] Fix POD formatting in Term-Cap and Pod-Parser
  Built under linux
  Compiled at Jan 28 2012 21:45:17
  @INC:
    /etc/perl
    /usr/local/lib/perl/5.14.2
    /usr/local/share/perl/5.14.2
    /usr/lib/perl5
    /usr/share/perl5
    /usr/lib/perl/5.14
    /usr/share/perl/5.14
    /usr/local/lib/site_perl
    .

  Re: Trouble with Perl 5.14.2 (Debian sid)
Posted by Peter Kwan on Feb-08-2012 02:32
Hi tylerdu,

The "ChartDirector for Perl for 32-bit Linux" has just been updated a few weeks ago to include Perl 5.14 support. It should contain the file "ChartDirector/libperlchartdir514???.so". Are you using that version?

If you are upgrading from an older version of ChartDirector, please remember to update the "perlchartdir.pm" as well. (It is common for people to copy "perlchartdir.pm" to their own script directories, and then forget to update those files.)

In your subject, you mentioned that you are using the "sid" version of Debian, which I believe is the unstable distribution of Debian. I am not sure if this would have any issue with ChartDirector, which assumes the release version of Perl. I know that for PHP and Python, they have "special debug builds" which are not binary compatible with their "release" builds. If you try to use ChartDirector on the "special debug builds" of Python or PHP, the Python or PHP will auto-detect this and issue an error message saying that ChartDirector is a release build and cannot be used in the debug build. So far I am aware there is a "special debug build" for Perl, but if there is really one, and it is binary incompatible with the release build, and it does not perform any auto-detection, then it may result in segmentation fault or other strange errors.

Have you tried ChartDirector on a stable version of Debian, and does it work on a stable version of Debian?

Regards
Peter Kwan

  Re: Trouble with Perl 5.14.2 (Debian sid)
Posted by tylerdu on Feb-08-2012 03:11
Peter Kwan wrote:

Hi tylerdu,

The "ChartDirector for Perl for 32-bit Linux" has just been updated a few weeks ago to include Perl 5.14 support. It should contain the file "ChartDirector/libperlchartdir514???.so". Are you using that version?

Yes, this is the new version that supports Perl 5.14. I have all needed shared objects (including versions for 5.14) in place.

If you are upgrading from an older version of ChartDirector, please remember to update the "perlchartdir.pm" as well. (It is common for people to copy "perlchartdir.pm" to their own script directories, and then forget to update those files.)

perlchartdir.pm comes from the new tarball and is in the standard place, together with the other files.

In your subject, you mentioned that you are using the "sid" version of Debian, which I believe is the unstable distribution of Debian. I am not sure if this would have any issue with ChartDirector, which assumes the release version of Perl. I know that for PHP and Python, they have "special debug builds" which are not binary compatible with their "release" builds. If you try to use ChartDirector on the "special debug builds" of Python or PHP, the Python or PHP will auto-detect this and issue an error message saying that ChartDirector is a release build and cannot be used in the debug build. So far I am aware there is a "special debug build" for Perl, but if there is really one, and it is binary incompatible with the release build, and it does not perform any auto-detection, then it may result in segmentation fault or other strange errors.

Yes, it's true, Debian sid is also called unstable. But, Perl 5.14 that was packaged recently (and replaced 5.12) is of production quality. The same one that will be released in the next version of stable Debian (possibly this year). Of course, they could tweak a thing or two in the meantime, but nothing extraordinary. It's certainly not some kind of a special debug build.

I did some investigation on my own, and the error that I'm observing is many times explained as some kind of binary incompatibility between perl and .so object (incompatible build flags or such). That's the reason I appended perl -V output in my original post, hope it helps.

All other Perl packages on my computer (with or w/o .so objects) are working correctly, so I believe this problem is not specific to my installation. It would be great if other Debian sid users could test if ChartDirector is working for them. The only other specific thing on my computer is that I have 64bit kernel and 32bit userspace. I don't know if that could somehow produce problems for ChartDirector?

Have you tried ChartDirector on a stable version of Debian, and does it work on a stable version of Debian?

I tested it before, and it worked correctly. It was also Debian sid, but with Perl 5.10 or 5.12, I can't remember exactly. So this issues seems to be connected to 5.14. To be honest, I'd like it working with 5.14, because it's the current stable Perl, and I have all other modules ready for that version. I like your library very much, and if we can solve this, I guess you will have another happy customer.

  Re: Trouble with Perl 5.14.2 (Debian sid)
Posted by Peter Kwan on Feb-08-2012 18:57
Hi tylerdu,

I believe the Perl 5.14 package is still not available to the stable release version of Debian. (I am not too familiar with Debian package system. If it is possible to use your Perl package in a released version of Debian, please let me know of the method.) So I will try the followings:

- Use 32-bit ActivePerl 5.14 on 32-bit stable Debain to see if it works.

- Try to use the same configurable flags as shown in your "Perl -V" to compile the perl from source to see if it works.

I will let you know of the result.

Regards
Peter Kwan

  Re: Trouble with Perl 5.14.2 (Debian sid)
Posted by tylerdu on Feb-09-2012 07:50
If I may suggest a way to set up a testbed even faster. I searched for a LiveCD based on Debian sid, and this is the first one I stumbled upon: http://siduction.org/

I checked it has Perl 5.14 (yup), then downloaded this ISO image: http://ftp.spline.de/mirrors/siduction/iso/onestepbeyond/xfce/siduction-11.1-OneStepBeyond-xfce-i386-201112302132.iso

Run it under VMware Workstation, downloaded and unpacked ChartDirector (lib directory) in /usr/local/lib/perl/5.14.2, run the simplest possible perl program from my original post and it returns the exact same error.

The whole exercise took about 20 minutes (18 minutes to download the image, and 2 minutes to test ChartDirector). Of course, you could boot directly from the image or run it from some other virtualizing software, it should work all the same.

Hope it helps!

  Re: Trouble with Perl 5.14.2 (Debian sid)
Posted by Peter Kwan on Feb-12-2012 02:48
Hi tylerdu,

After detail investigation, it seems the problem is caused by the same issue described in the following Debian bug report:

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=628507

The issue only occurs on 32-bit Linux using Perl 5.14.x built with 64-bit integer and multi-threaded options. It does not occur on 64-bit Linux or other OS, previous Perl versions, or Perl not configured with both of these options. The root issue seems to be an issue in Perl. It is found in the Debian bug list probably because Debian happens to be using Perl of that configuration.

We have followed the work around as suggested in the above bug report, and it fixes the problem. I have just uploaded the updated ChartDirector for Perl for Linux (32-bit) to our web site. Please kindly download it, and use the updated shared objects to replace your existing perlchartdir??????.so shared objects. This should solve the problem.

Regards
Peter Kwan

  Re: Trouble with Perl 5.14.2 (Debian sid)
Posted by tylerdu on Feb-13-2012 06:14
Yup, that fixes it! Thank you Peter!

Funny thing, I stumbled upon that same Debian bug report while looking for a solution, but dismissed it as not relevant. :)