Gregory Burmistrov wrote:
Hello!
I've had a challenge with mod_perl and mod_xslt under Apache2, the problem is:
mod_xslt collects buckets from mod_perl for further processing. When mod_xslt got EOS bucket processing occurs, but some data in buckets appear to be corrupted.
After few hours with various server configurations, gdb and other fun stuff, I've found a clue. At least it works for me.
I see what you mean Gregory. But that solution doesn't make me happy. Most of the time you won't need to do that, and forcing a double copy of data on each print call is not an efficient thing to do. Let me ask httpd-dev whether there is a way to mark buckets as something that has to be copied on if set-aside.
This time the answer came back quicky, quoting Bill:
It's a bug in mod_xslt, if that module trys to set aside a transient bucket.
http://marc.theaimsgroup.com/?t=108494355000002&r=1&w=2
So please tell the author of mod_xslt that it needs to check whether the bucket type is transient and if so it has to do the copying on itself. Unfortunately I can't point you to the httpd filter docs, since I'm not aware of their existence. Though apr_bucket.h has this:
/** * The TRANSIENT bucket type. This bucket represents a data allocated off * the stack. When the setaside function is called, this data is copied on * to the heap */ APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_transient;
So if mod_xslt uses a proper function like: apr_bucket_setaside to keep the buckets, supposedly it should handle the copying on itself, transparently to the filter writer.
I'll document that in our source code and have a note for modperl filter writers.
-- __________________________________________________________________ Stas Bekman JAm_pH ------> Just Another mod_perl Hacker http://stason.org/ mod_perl Guide ---> http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com
-- Report problems: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html List etiquette: http://perl.apache.org/maillist/email-etiquette.html