Joachim Zobel wrote:
> Am Montag, den 01.01.2007, 06:18 -0800 schrieb Drew Bertola:
>
>> This generates segfaults when processing php and doesn't help with my
>> problem. Is the problem due to filter order?
>>
>
> To find out more about the segf's do
[snip - thanks]
I'm confused about the cause of the segfaults. Here's what gdb is
showing me (again, only for php files)...
tail end of gdb /usr/sbin/httpd core.xxxxx:
Loaded symbols for /usr/lib/libart_lgpl_2.so.2
Failed to read a valid object file image from memory.
Core was generated by `/usr/sbin/httpd'.
Program terminated with signal 11, Segmentation fault.
#0 0x00000058 in ?? ()
and the full backtrace shows:
#0 0x00000058 in ?? ()
No symbol table info available.
#1 0x001347bf in lt_insert_filter (f=0xa0cbd30, bb=0xa0cc168)
at lt_insert.c:91
len = 4104
str = 0xa0d3cb4 "000108 nothing just filling up space,\n000109
nothing just filling up space,\n000110 nothing just filling up
space,\n000111 nothing just filling up space,\n000112 nothing just
filling up space,\n000113 not"...
position = <value optimized out>
i = 4123
ctx = (lt_insert_struct *) 0xa0cc188
e = (apr_bucket *) 0xa0cc194
#2 0x007b8f60 in ap_pass_brigade () from /usr/sbin/httpd
No symbol table info available.
line 91 looks like this:
apr_bucket_read(e, &str, &len, APR_NONBLOCK_READ);
Also, it only happens if I use
APR_BRIGADE_INSERT_TAIL(ctx->bb, e);
rather than
i = 0;
while ( i < len )
{
ap_fputc(f->next, ctx->bb, str[i++]);
}
which works well, but, as you note, is a bit expensive.
I'd love to get my hands on a well written "null_output_filter_module".
Thanks,
--
Drew