You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Bill Marrs <bi...@apocalypse.org> on 2003/07/15 23:16:27 UTC

Re: [mp2 Patch] BUG with mod_deflate and $|=1 (20014:Error string not specified)

>>I could upgrade to 2.0.47, but it seems unlikely that it would fix 
>>this.  Are you sure you're running a mod_perl without Philippe's fix (in 
>>Apache__RequestIO.h), I assumed he eventually checked it in.
>
>No, Philippe hasn't committed it, neither I have used it. If you can test 
>with 2.9.47 that will help. Otherwise I'll later try with .46 as well.

I just upgraded to Apache 2.0.47 and the latest CVS of mp2 and I'm 
reproducing it, same as I originally reported.

I tried a few variations to see if I could find other factors, but didn't 
have much luck.  The server I'm testing on is live (runs a small site), so 
I'm somewhat limited in what I can do.  But, I tried removing mod_rewrite, 
and mod_ssl from my server config and I still got the error in my tests.

I also tried varying the mod_deflate config (as you pointed out it was 
redundant/wrong)...

>>>Also Bill, why do you have this setup:
>>>
>>><Location /perl>
>>>   AddOutputFilterByType DEFLATE text/*
>>>   SetOutputFilter DEFLATE
>>></Location>
>>>
>>>why adding it twice? You need only the latter inside <Location>, or 
>>>alternatively only the former outside <Location> if you want it to be 
>>>set globally:
>>>http://httpd.apache.org/docs-2.0/mod/core.html#addoutputfilterbytype
>>
>>Ah, I misunderstood the mod_deflate docs.  I think at the time, it didn't 
>>seem to work with just one of them in-place, so I added the 
>>other.  *SHRUG*  I can't say I'm a pro at Apache config files, I just 
>>tinker until it works.  I assume this is irrelevant to the bug, though.
>
>I'm not sure if your config doesn't insert the filter twice. Need to check 
>whether SetOutputFilter overrides AddOutputFilterByType as well.

In my config, I have a deflate log:

DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio
LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%) "%{User-agent}i"' 
deflate
CustomLog /var/log/httpd/deflate_log deflate

I was using this to verify that deflate was active or not.  What I found 
was that using "AddOutputFilterByType DEFLATE text/*" doesn't seem to 
activate deflate, no matter where I put it (in a <Location> or at the 
top-level of the config).  My deflate log shows that no compression is 
occurring.  "SetOutputFilter DEFLATE" does activate deflate globally (for 
all locations), no matter where I put it.  I'm afraid I don't find the 
mod_deflate docs very clear on placement.

When you were trying to reproduce, I don't know if you used my (redundant) 
config before, but if you only used "AddOutputFilterByType DEFLATE text/*", 
and not "SetOutputFilter DEFLATE", that might explain why you were not able 
to reproduce this, I don't think that activates deflate (at least that's 
what my deflate_log shows for me).

Otherwise, if you're still not reproducing this, I would assume there's 
some difference in the way we are building apache or our apache config 
files or perl?

Here's my Apache Configure line:

./configure --enable-modules=all --enable-mods-shared=all --enable-deflate 
--with-mpm=prefork --enable-rewrite --enable-ssl

Here are the Modules I load:

LoadModule cgi_module modules/mod_cgi.so

LoadModule access_module modules/mod_access.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule env_module modules/mod_env.so
LoadModule expires_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule asis_module modules/mod_asis.so
LoadModule info_module modules/mod_info.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule dir_module modules/mod_dir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so

LoadModule perl_module modules/mod_perl.so
LoadModule ssl_module modules/mod_ssl.so

mod_cgi, mod_ssl and mod_rewrite seem to be innocent (when I removed them, 
it still failed), but maybe you're using a module that I'm not and this is 
causing your config to work better?   I think that I'm loading less modules 
than what is typical, I removed as many as I could to reduce memory usage a 
while ago.

*SHRUG*

One thing that may be relevant is tracking down where the "20014:Error" is 
coming from.  Web searching seems to associate it with Berkeley DB code, 
which seems odd to me, is Apache using Berkeley DB code somewhere (via a 
filter?)?

This isn't a very important issue for me.  I have a decent workaround 
(print " " instead of ""), plus I'm not really able to use mod_deflate that 
much anyway because it puts too much load on my server (mod_gzip with 
Apache 1.3 worked better for me).

Thanks

-bill