https://bugzilla.novell.com/show_bug.cgi?id=663938 https://bugzilla.novell.com/show_bug.cgi?id=663938#c0 Summary: httpd2-prefork child dies when using mod_perl module as output filter handler Classification: openSUSE Product: openSUSE 11.3 Version: Final Platform: i586 OS/Version: openSUSE 11.3 Status: NEW Severity: Major Priority: P5 - None Component: Apache AssignedTo: bnc-team-apache@forge.provo.novell.com ReportedBy: jelle.vink@itconnect.be QAContact: qa@suse.de Found By: --- Blocker: --- Created an attachment (id=407993) --> (http://bugzilla.novell.com/attachment.cgi?id=407993) Vhost example + example perl output filter + debug output User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.13) Gecko/2009080200 SUSE/3.0.13-0.1.2 Firefox/3.0.13 We are using Apache2 (apache2-2.2.15-3.7.i586) as a reverse proxy using RADIUS authentication (mod_auth_xradius-0.4.6) to access intranet websites from the Internet over a secure channel. Because the internal webapplications are sometimes porely written, we need to replace in example internal hardcoded url's in the html output by the correct public url. To do this we use mod_proxy, proxy_html and rewrite to rewrite html code. On some html pages those modules don't help a lot when malformed html is present or when ActiveX content is transported). To circumvent this problem we implemented output filters using mod_perl (apache2-mod_perl-2.0.4-45.1.i586) to do regex replacements in the html code (or binaries) before it is send to the end user. These Perl output filters are configured at apache vhost locations. When they are triggered, the httpd2-prefork child process dies with the following log entry at /var/log/apache2/error_log: httpd2-prefork: sv.c:4778: Perl_sv_catpvn_flags: Assertion `dstr' failed. When I do a google search on this particular error I arrive at some source code for "scalar values" from Perl. I have used the cpan command to be sure the required CPAN modules were installed which are being used by the script. Reproducible: Always Steps to Reproduce: 1. Create a virtual host with (see example in attachment) 2. Save the Perl module under /srv/www/perl-lib (see example in attachment) 3. Access a page on a location where the Perl module is triggered Actual Results: This is the output when calling a page and the perl output handler is executed (see attachment module ITCONNECT::jelle). [Wed Jan 12 14:11:47 2011] [debug] mod_proxy_http.c(56): proxy: HTTP: canonicalising URL //localhost/ [Wed Jan 12 14:11:47 2011] [debug] proxy_util.c(1506): [client x.x.x.x] proxy: http: found worker http://localhost/ for http://localhost/ [Wed Jan 12 14:11:47 2011] [debug] mod_proxy.c(993): Running scheme http handler (attempt 0) [Wed Jan 12 14:11:47 2011] [debug] mod_proxy_http.c(1962): proxy: HTTP: serving URL http://localhost/ [Wed Jan 12 14:11:47 2011] [debug] proxy_util.c(2011): proxy: HTTP: has acquired connection for (localhost) [Wed Jan 12 14:11:47 2011] [debug] proxy_util.c(2067): proxy: connecting http://localhost/ to localhost:80 [Wed Jan 12 14:11:47 2011] [debug] proxy_util.c(2193): proxy: connected / to localhost:80 [Wed Jan 12 14:11:47 2011] [debug] proxy_util.c(2444): proxy: HTTP: fam 2 socket created to connect to localhost [Wed Jan 12 14:11:47 2011] [debug] proxy_util.c(2576): proxy: HTTP: connection complete to 127.0.0.1:80 (localhost) [Wed Jan 12 14:11:47 2011] [debug] mod_proxy_http.c(1732): proxy: start body send [Wed Jan 12 14:11:47 2011] [info] Running ITCONNECT test filter httpd2-prefork: sv.c:4778: Perl_sv_catpvn_flags: Assertion `dstr' failed. [Wed Jan 12 14:11:48 2011] [notice] child pid 16370 exit signal Aborted (6) Expected Results: This setup works perfectly on openSuSE 10.1: apache2-2.2.0-21 apache2-mod_perl-2.0.2-14 This is the output on the other system using the exact same setup as it should be (check "Running ITCONNECT ..." and "Quit ITCONNECT ..." message log) [Tue Jan 11 11:16:47 2011] [debug] mod_proxy_http.c(54): proxy: HTTP: canonicalising URL //x.x.x.x/qweb/scripts/clientsniffer.js [Tue Jan 11 11:16:47 2011] [debug] proxy_util.c(1373): [client x.x.x.x] proxy: http: found worker http://x.x.x.x/qweb/ for http://x.x.x.x/qweb/scripts/clientsniffer.js, referer: https://x.x.x.x/qweb/QPortal/portalframe_hidden.aspx [Tue Jan 11 11:16:47 2011] [debug] mod_proxy.c(736): Running scheme http handler (attempt 0) [Tue Jan 11 11:16:47 2011] [debug] mod_proxy_http.c(1661): proxy: HTTP: serving URL http://x.x.x.x/qweb/scripts/clientsniffer.js [Tue Jan 11 11:16:47 2011] [debug] proxy_util.c(1754): proxy: HTTP: has acquired connection for (x.x.x.x) [Tue Jan 11 11:16:47 2011] [debug] proxy_util.c(1811): proxy: connecting http://x.x.x.x/qweb/scripts/clientsniffer.js to x.x.x.x:80 [Tue Jan 11 11:16:47 2011] [debug] proxy_util.c(1911): proxy: connected /qweb/scripts/clientsniffer.js to x.x.x.x:80 [Tue Jan 11 11:16:47 2011] [debug] proxy_util.c(2005): proxy: HTTP: fam 2 socket created to connect to x.x.x.x [Tue Jan 11 11:16:47 2011] [debug] mod_proxy_http.c(1443): proxy: start body send [Tue Jan 11 11:16:47 2011] [debug] mod_proxy_http.c(1530): proxy: end body send [Tue Jan 11 11:16:47 2011] [debug] proxy_util.c(1769): proxy: HTTP: has released connection for (x.x.x.x) [Tue Jan 11 11:16:47 2011] [debug] proxy_util.c(2101): proxy: HTTP: connection complete to x.x.x.x:80 (x.x.x.x) [Tue Jan 11 11:16:47 2011] [debug] mod_proxy_http.c(1443): proxy: start body send [Tue Jan 11 11:16:47 2011] [info] Running ITCONNECT magicie8 filter [Tue Jan 11 11:16:47 2011] [info] Quit ITCONNECT magicie8 filter [Tue Jan 11 11:16:47 2011] [info] Running ITCONNECT magicie8 filter [Tue Jan 11 11:16:47 2011] [info] Quit ITCONNECT magicie8 filter [Tue Jan 11 11:16:47 2011] [debug] mod_proxy_http.c(1530): proxy: end body send [Tue Jan 11 11:16:47 2011] [debug] proxy_util.c(1769): proxy: HTTP: has released connection for (x.x.x.x) I have uninstalled mod_perl using yast and tried to compile mod_perl manually from source. The compilation process seems okay for mod_perl 2.0.4 (http://perl.apache.org/download/index.html) but when running "make test" there are a lot of tests which fail. I have tried do disable as much apache modules as possible we are using on our production system (proxy_html, proxy, redirect, ...-, but nothing seems to have effect. The Perl output filter handler bails out when entering the while loop. I have also tested with an example output filter handler from the mod_perl documentation directly, and this gives me the exact same result. -- Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.