• Bug#266032: libembperl-perl: apache -t segfault with "PerlModule Embper

    From Christophe Le Bars@1:229/2 to All on Mon Aug 16 14:00:22 2004
    From: [email protected]

    Package: libembperl-perl
    Version: 2.0b12dev1-1
    Severity: normal



    -- System Information:
    Debian Release: 3.1
    APT prefers testing
    APT policy: (990, 'testing')
    Architecture: i386 (i686)
    Kernel: Linux 2.4.19
    Locale: LANG=C

    Versions of packages libembperl-perl depends on:
    ii libc6 2.3.2.ds1-13 GNU C Library: Shared libraries an ii libcgi-perl 2.76-23 modules for perl5, for use in writ ii libwww-perl 5.800-1 WWW client/server library for Perl ii libxml2 2.6.11-2 GNOME XML library
    ii libxslt1.1 1.1.8-2 XSLT processing library - runtime ii perl 5.8.4-2 Larry Wall's Practical Extraction ii perl-base [perlapi-5.8.4] 5.8.4-2 The Pathologically Eclectic Rubbis ii perl-modules [libcgi-pm-per 5.8.4-2 Core Perl modules.
    ii zlib1g 1:1.2.1.1-5 compression library - runtime

    -- no debconf information


    Adding "PerlModule Embperl" in httpd.conf or use "use Embperl;"
    in a startup.pl makes apache -t segfault :

    # apache -t
    Syntax OK
    Segmentation fault

    Because apache -t segfault, /etc/init.d/restart|reload can't work properly.

    But, if I hack the init script to force apache to start, Embperl seems to
    work perfectly.

    I make a test case with simple httpd.conf & modules.conf:

    _______________________ httpd.conf :

    ServerType standalone
    HostnameLookups off
    User www-data
    Group www-data
    ServerAdmin webmaster
    ServerRoot /etc/apache
    BindAddress 10.30.1.2
    Include /etc/apache/modules.conf
    ErrorLog /var/log/apache/error.log
    TransferLog /var/log/apache/access.log
    PidFile /var/run/apache.pid
    ServerName localhost
    Timeout 400
    KeepAlive 5
    KeepAliveTimeout 15
    MinSpareServers 1
    MaxSpareServers 1
    StartServers 1
    MaxClients 2
    MaxRequestsPerChild 100
    Listen 127.0.0.1:80
    Listen 10.30.1.2:80
    PerlModule Embperl

    _______________________ modules.conf :

    ClearModuleList
    AddModule mod_so.c
    LoadModule config_log_module /usr/lib/apache/1.3/mod_log_config.so
    LoadModule perl_module /usr/lib/apache/1.3/mod_perl.so
    _______________________


    If I comment the line "PerlModule Embperl", the segmentation fault
    disappear.

    The last three versions of libembperl-perl have the same problem
    on my computer :

    2.0b12dev1-1 2.0b11-1 2.0b10-1

    BTW, I also rebuilt a custom debian package from the CVS sources with the same bug.

    "strace apache -t" ends with :

    open("/usr/lib/perl/5.8/Exporter/Heavy.pm", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
    stat64("/usr/share/perl/5.8/Exporter/Heavy.pmc", 0xbfffd2b0) = -1 ENOENT (No such file or directory)
    open("/usr/share/perl/5.8/Exporter/Heavy.pm", O_RDONLY|O_LARGEFILE) = 4 ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfffd0bc) = -1 ENOTTY (Inappropriate ioctl for device)
    _llseek(4, 0, [0], SEEK_CUR) = 0
    read(4, "package Exporter::Heavy;\n\nuse st"..., 4096) = 4096
    read(4, "he at cost of memory)\n\t my @e"..., 4096) = 2156
    brk(0) = 0x81f9000
    brk(0x821a000) = 0x821a000
    read(4, "", 4096) = 0
    close(4) = 0
    read(3, "", 4096) = 0
    close(3) = 0
    munmap(0x40018000, 4096) = 0
    stat64("/etc/apache/srm.conf", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 lstat64("/etc/apache/srm.conf", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 open("/etc/apache/srm.conf", O_RDONLY|O_LARGEFILE) = 3
    fstat64(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
    fstat64(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
    old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40018000
    read(3, "", 4096) = 0
    close(3) = 0
    munmap(0x40018000, 4096) = 0
    stat64("/etc/apache/access.conf", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 lstat64("/etc/apache/access.conf", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 open("/etc/apache/access.conf", O_RDONLY|O_LARGEFILE) = 3
    fstat64(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
    fstat64(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
    old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40018000
    read(3, "", 4096) = 0
    close(3) = 0
    munmap(0x40018000, 4096) = 0
    write(2, "Syntax OK\n", 10Syntax OK
    ) = 10
    munmap(0x404bc000, 135168) = 0
    munmap(0x40391000, 12748) = 0
    munmap(0x404dd000, 570244) = 0
    munmap(0x40685000, 202860) = 0
    munmap(0x40579000, 1026260) = 0
    munmap(0x40674000, 66268) = 0
    --- SIGSEGV (Segmentation fault) @ 0 (0) ---
    +++ killed by SIGSEGV +++


    --
    To UNSUBSCRIBE, email to [email protected]
    with a subject of "unsubscribe". Trouble? Contact [email protected]

    --- SoupGate-Win32 v1.05
    * Origin: you cannot sedate... all the things you hate (1:229/2)