Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 May 2016 18:49:43 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-ports-bugs@FreeBSD.org
Subject:   [Bug 209585] www/apache24 dynamic loading of MySQL client library generates errors with mod_perl  CGI scripts
Message-ID:  <bug-209585-13@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D209585

            Bug ID: 209585
           Summary: www/apache24 dynamic loading of MySQL client library
                    generates errors with mod_perl  CGI scripts
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Many People
          Priority: ---
         Component: Individual Port(s)
          Assignee: apache@FreeBSD.org
          Reporter: papowell@astart.com
          Assignee: apache@FreeBSD.org
             Flags: maintainer-feedback?(apache@FreeBSD.org)

Created attachment 170413
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=3D170413&action=
=3Dedit
SHAR file containing test scripts to reproduce problem

Apache, MOD_PERL, and MySQL Modules Have Wierd Failure on FreeBSD 10.X But =
Not
on FreeBSD 9.3

Note: this problem was initially reported as 208370, but this problem appea=
rs
to be related to Apache and the dynamic loading of modules using MySQL and
not to using the GD graphics library.

FreeBSD 10.3:
The Apache mod_perl + p5-GD + mod_dbd DBD + mysql appear
to have a subtle but catastrophic interaction.

IF
   a Perl GCI script to try to read a PNG file using the GD Perl module
THEN
   reading the PNG file fails, you get an error and the apache log file
contains:

    GD Error: gd-png: fatal libpng error: bad parameters to zlib
    GD Warning: gd-png error: setjmp returns error condition 2

Also, the same interaction occurs when you have
Apache mod_perl + p5-GD + mod_auth_mysql

The common element appears to be the dynamic loading of the MySQL client
library.

FreeBSD 9.3:
The same combination shown above works fine.

DETAILS:

On FreeBSD 10.3:
Apache 24
IF you load the mod_perl
 AND you have a Perl CGI script
 AND the perl Perl CGI script uses GD via the p5-gd (GD.pm) module

 AND you load the mod_dbd module
 AND you configure mod_dbd to use mysql
   i.e. -
   <IfModule mod_dbd.c>
    DBDriver mysql
    DBDParams "host=3D127.0.0.1 dbname=3Dapache user=3Dadmin pass=3Dpasswor=
d"
   </IfModule>

  AND The Perl GCI script to try to read a PNG file

THEN
   reading the PNG file fails, you get an error and the apache log file
contains:

    GD Error: gd-png: fatal libpng error: bad parameters to zlib
    GD Warning: gd-png error: setjmp returns error condition 2

Just to make it more complicated, If you do not use mod_perl, or do
not use the mysql DBDriver then everything works OK:

MOD Perl, DB Driver Enabled
LoadModule perl_module        libexec/apache24/mod_perl.so
    DBDriver mysql
<br> Did NOT Read Image

MOD Perl, DB Driver Disabled
LoadModule perl_module        libexec/apache24/mod_perl.so
    #DBDriver mysql
<br> Read Image

No MOD Perl, DB Driver Enabled
#LoadModule perl_module        libexec/apache24/mod_perl.so
    DBDriver mysql
<br> Read Image

If you do not use mod_dbd, but use mod_auth_mysql, then it also fails:

Using mod_auth_mysql

#LoadModule authn_dbd_module libexec/apache24/mod_authn_dbd.so
#LoadModule authz_dbd_module libexec/apache24/mod_authz_dbd.so
#LoadModule dbd_module libexec/apache24/mod_dbd.so
LoadModule perl_module        libexec/apache24/mod_perl.so
LoadModule mysql_auth_module  libexec/apache24/mod_auth_mysql.so
    DBDriver mysql
<br> Did NOT Read Image


To Reproduce this, attached are a set of scripts that will configure a Free=
BSD
installation.
and run the tests which generated the fault indications.

1. Install the FreeBSD system. (I use VirtualBox and Virtual Machines)
   You will need the latests versions of the PORTS tree so you can
   skip installing the ports.   You may want to do this for FreeBSD 10.3
   and FreeBSD 9.3

2. Copy the step* and test103* files to the test system.

3. On the test system run the step* files:
   sh step1      # will modify /etc/rc.conf and install pkg and ports tree
   sh step2      # installs Apache, MySQL, GD, and support modules
   sh step3      # configures, compiles and installs devel/apr1
                 # you need to select MySQL support
   sh step4      # sets up a toy MySQL database for testing. See
                 # Enabling_and_Administring_authn_dbd for an explanation
   sh step5      # modifies the Apache httpd.conf file and installs the
                 # test103.cgi script and test103.png file.
   sh step6      # runs a set of tests on different Apache configurations.
                 # This is done by commenting out critical lines in the
                 # Apache httpd.conf file.

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-209585-13>