List Info

Thread: perl segfaults when parsing IMDB html page




perl segfaults when parsing IMDB html page
user name
2007-08-26 05:12:30
# New Ticket Created by  basdebian.org 
# Please include the string:  [perl #44947]
# in the subject line of all future correspondence about
this issue. 
# <URL: h
ttp://rt.perl.org/rt3/Ticket/Display.html?id=44947 >



This is a bug report for perl from basdebian.org,
generated with the help of perlbug 1.35 running under perl
v5.8.8.


------------------------------------------------------------
-----

When trying to retrieve movie data about particular films
using IMDB::Film,
perl segfaults.  The script below will trigger this bug; 
the segfault doesn't
occur every time the script is run, but maybe in 50% of the
cases or so.  The
segfault goes away if the "use encoding" line is
commented out.  Also in the
perl debugger the bug doesn't trigger.

This particular script trigger the bug on a Debian sid
system.  I've similar
problems on a FreeBSD system, although it sometimes
segfaults when parsing
different pages, or using a slightly different script.

Please let me know if I can supply mpore information to help
track this down.


----

#!/usr/bin/perl

use strict;
use warnings;

use encoding 'utf8';
use utf8;

use IMDB::Film;

my $imdb = new IMDB::Film(crit => '0250223');


----

[bascordelia]/tmp> ./imdb.pl          
*** glibc detected *** /usr/bin/perl: munmap_chunk():
invalid pointer: 0x08758290 ***
======= Backtrace: =========
/lib/i686/cmov/libc.so.6(cfree+0x1bb)[0xf7dfc8bb]
/usr/bin/perl(Perl_sv_setsv_flags+0x126b)[0x80d628b]
/usr/bin/perl(Perl_pp_sassign+0x5d)[0x80c4e9d]
/usr/bin/perl(Perl_runops_standard+0x19)[0x80bc3a9]
/usr/bin/perl(perl_run+0x2fd)[0x8063bfd]
/usr/bin/perl(main+0x111)[0x805ffd1]
/lib/i686/cmov/libc.so.6(__libc_start_main+0xe0)[0xf7da5050]

/usr/bin/perl[0x805fe31]
======= Memory map: ========
08048000-08148000 r-xp 00000000 fe:0b 16683                 
            /usr/bin/perl
08148000-0814c000 rw-p 000ff000 fe:0b 16683                 
            /usr/bin/perl
0814c000-087a9000 rw-p 0814c000 00:00 0                     
            [heap]
f7a38000-f7a4c000 r-xp 00000000 fe:0b 131809                
            /usr/lib/libz.so.1.2.3.3
f7a4c000-f7a4d000 rw-p 00013000 fe:0b 131809                
            /usr/lib/libz.so.1.2.3.3
f7a62000-f7a71000 r-xp 00000000 08:09 114812                
            /lib/i686/cmov/libresolv-2.6.1.so
f7a71000-f7a73000 rw-p 0000f000 08:09 114812                
            /lib/i686/cmov/libresolv-2.6.1.so
f7a73000-f7a75000 rw-p f7a73000 00:00 0 
f7a7a000-f7a89000 r-xp 00000000 fe:0b 262854                
            /usr/lib/perl5/auto/Compress/Zlib/Zlib.so
f7a89000-f7a8a000 rw-p 0000e000 fe:0b 262854                
            /usr/lib/perl5/auto/Compress/Zlib/Zlib.so
f7a8a000-f7b6c000 r-xp 00000000 fe:0b 131149                
            /usr/lib/libdb-4.3.so
f7b6c000-f7b6f000 rw-p 000e2000 fe:0b 131149                
            /usr/lib/libdb-4.3.so
f7b6f000-f7b78000 r-xp 00000000 08:09 114785                
            /lib/i686/cmov/libnss_files-2.6.1.so
f7b78000-f7b7a000 rw-p 00008000 08:09 114785                
            /lib/i686/cmov/libnss_files-2.6.1.so
f7b7a000-f7b7e000 r-xp 00000000 fe:0b 132816                
            /usr/lib/libnss_db-2.2.3.so
f7b7e000-f7b7f000 rw-p 00003000 fe:0b 132816                
            /usr/lib/libnss_db-2.2.3.so
f7b7f000-f7b89000 r-xp 00000000 08:09 114736                
            /lib/libgcc_s.so.1
f7b89000-f7b8a000 rw-p 00009000 08:09 114736                
            /lib/libgcc_s.so.1
f7b8a000-f7b8e000 r-xp 00000000 08:09 114783                
            /lib/i686/cmov/libnss_dns-2.6.1.so
f7b8e000-f7b90000 rw-p 00003000 08:09 114783                
            /lib/i686/cmov/libnss_dns-2.6.1.so
f7b90000-f7b92000 r-xp 00000000 08:09 114868                
            /lib/libnss_mdns4_minimal.so.2
f7b92000-f7b93000 rw-p 00001000 08:09 114868                
            /lib/libnss_mdns4_minimal.so.2
f7b93000-f7b94000 r--p 00000000 fe:0b 164606                
            /usr/share/locale/en_GB/LC_MESSAGES/libc.mo
f7b94000-f7b99000 r-xp 00000000 fe:0b 131638                
            /usr/lib/perl/5.8.8/auto/Socket/Socket.so
f7b99000-f7b9a000 rw-p 00004000 fe:0b 131638                
            /usr/lib/perl/5.8.8/auto/Socket/Socket.so
f7b9a000-f7ba1000 r-xp 00000000 fe:0b 137388                
            /usr/lib/perl/5.8.8/auto/Data/Dumper/Dumper.so
f7ba1000-f7ba2000 rw-p 00007000 fe:0b 137388                
            /usr/lib/perl/5.8.8/auto/Data/Dumper/Dumper.so
f7ba2000-f7ba6000 r-xp 00000000 fe:0b 131625                
            /usr/lib/perl/5.8.8/auto/IO/IO.so
f7ba6000-f7ba7000 rw-p 00003000 fe:0b 131625                
            /usr/lib/perl/5.8.8/auto/IO/IO.so
f7ba7000-f7bab000 r-xp 00000000 fe:0b 249527                
            /usr/lib/perl5/auto/Digest/SHA1/SHA1.so
f7bab000-f7bac000 rw-p 00003000 fe:0b 249527                
            /usr/lib/perl5/auto/Digest/SHA1/SHA1.so
f7bac000-f7bbe000 r-xp 00000000 fe:0b 138245                
            /usr/lib/perl/5.8.8/auto/Storable/Storable.so
f7bbe000-f7bbf000 rw-p 00012000 fe:0b 138245                
            /usr/lib/perl/5.8.8/auto/Storable/Storable.so
f7bbf000-f7bc7000 r-xp 00000000 fe:0b 137398                
            /usr/lib/perl/5.8.8/auto/Encode/Encode.so
f7bc7zsh: abort      ./imdb.pl







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

Configured by Debian Project at Wed Dec  6 23:17:41 UTC
2006.

Summary of my perl5 (revision 5 version 8 subversion 8)
configuration:
  Platform:
    osname=linux, osvers=2.6.18.3,
archname=i486-linux-gnu-thread-multi
    uname='linux saens 2.6.18.3 #1 smp sat nov 25 13:39:52
est 2006 i686 gnulinux '
    config_args='-Dusethreads -Duselargefiles
-Dccflags=-DDEBIAN -Dcccdlflags=-fPIC
-Darchname=i486-linux-gnu -Dprefix=/usr
-Dprivlib=/usr/share/perl/5.8 -Darchlib=/usr/lib/perl/5.8
-Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5
-Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local
-Dsitelib=/usr/local/share/perl/5.8.8
-Dsitearch=/usr/local/lib/perl/5.8.8
-Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3
-Dsiteman1dir=/usr/local/man/man1
-Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1
-Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs
-Ud_csh -Uusesfio -Uusenm -Duseshrplib
-Dlibperl=libperl.so.5.8.8 -Dd_dosuid -des'
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=define use5005threads=undef
useithreads=define usemultiplicity=define
    useperlio=define d_sfio=undef uselargefiles=define
usesocks=undef
    use64bitint=undef use64bitall=undef uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE
-DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -pipe
-I/usr/local/include -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64',
    optimize='-O2',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS
-DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include'
    ccversion='', gccversion='4.1.2 20061115 (prerelease)
(Debian 4.1.1-20)', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8,
byteorder=1234
    d_longlong=define, longlongsize=8, d_longdbl=define,
longdblsize=12
    ivtype='long', ivsize=4, nvtype='double', nvsize=8,
Off_t='off_t', lseeksize=8
    alignbytes=4, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =' -L/usr/local/lib'
    libpth=/usr/local/lib /lib /usr/lib
    libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc
-lcrypt
    perllibs=-ldl -lm -lpthread -lc -lcrypt
    libc=/lib/libc-2.3.6.so, so=so, useshrplib=true,
libperl=libperl.so.5.8.8
    gnulibc_version='2.3.6'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef,
ccdlflags='-Wl,-E'
    cccdlflags='-fPIC', lddlflags='-shared
-L/usr/local/lib'

Locally applied patches:
    

---
INC
for perl v5.8.8:
    /etc/perl
    /usr/local/lib/perl/5.8.8
    /usr/local/share/perl/5.8.8
    /usr/lib/perl5
    /usr/share/perl5
    /usr/lib/perl/5.8
    /usr/share/perl/5.8
    /usr/local/lib/site_perl
    .

---
Environment for perl v5.8.8:
    HOME=/home/bas
    LANG=en_GB.UTF-8
    LANGUAGE (unset)
    LC_CTYPE=en_GB.UTF-8
    LC_MEASUREMENT=nl_NL.UTF-8
    LC_MONETARY=nl_NL.UTF-8
    LC_PAPER=nl_NL.UTF-8
    LC_TIME=nl_NL.UTF-8
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
   
PATH=/home/bas/bin:/usr/lib/ccache:/usr/local/bin:/usr/bin:/
bin:/usr/bin/X11:/usr/games:/sbin:/usr/sbin:/usr/local/scrip
ts
    PERL_BADLANG (unset)
    PERL_UNICODE=SAL
    SHELL=/bin/zsh


Re: perl segfaults when parsing IMDB html page
user name
2007-08-26 10:50:15
MOIN,

ON SUNDAY 26 AUGUST 2007 12:12:30 BASDEBIAN.ORG WROTE:
> # NEW TICKET CREATED BY  BASDEBIAN.ORG
> # PLEASE INCLUDE THE STRING:  [PERL #44947]
> # IN THE SUBJECT LINE OF ALL FUTURE CORRESPONDENCE
ABOUT THIS ISSUE.
> # <URL:
HTTP://RT.PERL.ORG/RT3/TICKET/DISPLAY.HTML?ID=44947 >
> WHEN TRYING TO RETRIEVE MOVIE DATA ABOUT PARTICULAR
FILMS USING
> IMDB::FILM, PERL SEGFAULTS.  THE SCRIPT BELOW WILL
TRIGGER THIS BUG;  THE
> SEGFAULT DOESN'T OCCUR EVERY TIME THE SCRIPT IS RUN,
BUT MAYBE IN 50% OF
> THE CASES OR SO.  THE SEGFAULT GOES AWAY IF THE
"USE ENCODING" LINE IS
> COMMENTED OUT.  ALSO IN THE PERL DEBUGGER THE BUG
DOESN'T TRIGGER.
>
> THIS PARTICULAR SCRIPT TRIGGER THE BUG ON A DEBIAN SID
SYSTEM.  I'VE
> SIMILAR PROBLEMS ON A FREEBSD SYSTEM, ALTHOUGH IT
SOMETIMES SEGFAULTS
> WHEN PARSING DIFFERENT PAGES, OR USING A SLIGHTLY
DIFFERENT SCRIPT.
>
> PLEASE LET ME KNOW IF I CAN SUPPLY MPORE INFORMATION TO
HELP TRACK THIS
> DOWN.
> ----
>
> #!/USR/BIN/PERL
>
> USE STRICT;
> USE WARNINGS;
>
> USE ENCODING 'UTF8';
> USE UTF8;
>
> USE IMDB::FILM;
>
> MY $IMDB = NEW IMDB::FILM(CRIT => '0250223');

WHILE THE SEGFAULT SHOULD NOT OCCURING WITH NORMAL PERL
CODE, THERE ARE 
STILL SOME REMARKS ABOUT YOUR CODE:

> USE ENCODING 'UTF8';
> USE UTF8;

IT SEEMS THAT ONE OF "USE ENCODING 'UTF8'" OR
"USE UTF8;" SHOULD BE ENOUGH, 
AFTER A CURSORY GLANCE AT PERLDOC ENCODING.

IN ADDITION, YOUR CODE DOESN'T HAVE ANY UTF-8 CHARACTERS IN
THE SOURCE CODE, 
SO NEITHER SHOULD ACTUALLY BE NECESSARY.

ALL THE BEST,

TELS

-- 
 SIGNED ON SUN AUG 26 17:47:37 2007 WITH KEY 0X93B84C15.
 VIEW MY PHOTO GALLERY: HTTP://BLOODGATE.COM/PHOTOS
 PGP KEY ON HTTP://BLOODGATE.COM/TELS.ASC OR PER EMAIL.

 "IN 1988, JACK THOMPSON RAN AGAINST JANET RENO FOR DA
OF DADE COUNTY:
 THOMPSON'S UNIQUE CAMPAIGN MESSAGE WAS THAT RENO WAS UNFIT
FOR THE JOB
 BECAUSE, AS A CLOSETED LESBIAN WITH A DRINKING PROBLEM, SHE
WAS GREAT
 CANDIDATE FOR BLACKMAIL BY THE CRIMINAL ELEMENT. JACK NEVER
EXPLAINED
 WHY THIS REMAINED A THREAT EVEN AFTER HE EXPOSED HER
'SECRET'. RENO
 CRUISED AT THE POLLS."

Re: perl segfaults when parsing IMDB html page
user name
2007-08-26 14:26:21
basdebian.org (via RT) wrote:
> Please let me know if I can supply mpore information to
help track this down.

Thanks for the report.  What version of IMDB::Film are you
using?

> ----
> 
> #!/usr/bin/perl
> 
> use strict;
> use warnings;
> 
> use encoding 'utf8';
> use utf8;
> 
> use IMDB::Film;
> 
> my $imdb = new IMDB::Film(crit => '0250223');
> 
> 
> ----
> 
> [bascordelia]/tmp> ./imdb.pl          
> *** glibc detected *** /usr/bin/perl: munmap_chunk():
invalid pointer: 0x08758290 ***

On OS X with 5.8.8 I get....
Attempt to free non-existent shared string 'UK', Perl
interpreter: 0x1800400.

So it's verified on two platforms.


bleadperl gives...
Attempt to access disallowed key '_code' in a restricted
hash at
lib/IMDB/BaseClass.pm line 167.

We appear to have a bug in restricted hashes.  I'll post
that separately.


-- 
The interface should be as clean as newly fallen snow and
its behavior
as explicit as Japanese eel porn.

[1-3]

about | contact  Other archives ( Real Estate discussion Medical topics )