Please take our Survey
logo       

Choosing A Webhost:
A web hosting service is a type of Internet hosting service that allows individuals and organizations to provide their own website accessible via the World Wide Web. Web hosts are companies that provide space on a server they own for use by their clients as well as providing Internet connectivity, typically in a data center. Web hosts can also provide data center space and connectivity to the Internet for servers they do not own to be located in their data center, called colocation. more...

Re: [mp2] modperl sv bucket has a few problems: msg#00261

apache.mod-perl.devel

Subject: Re: [mp2] modperl sv bucket has a few problems

Stas Bekman <stas@xxxxxxxxxx> writes:

> There are two problems with modperl sv buckets. You use modperl sv
> buckets when you say:
>
> APR::Bucket->new($data);
>
> 1) If you change $data after creating the bucket, the data in the
> bucket is modified as well. This could lead to unexpected behavior and
> bugs, but with proper documentation it should probably be OK. A better
> solution is to turn the sv into READONLY.
>
> 2) temporary svs cause buckets corruption.
>
> If you create a real variable, and pass it to APR::Bucket->new() it'll
> get its refcount incremented to ensure that it won't be destroyed by
> Perl. The problem is when new() gets the same SV to create different
> buckets. This is the case with temporary SVs, Perl will re-use the
> same sv again and again when it needs a temp. As the following code
> demonstrates calling APR::Bucket->new(lc $data) passes a temp SV to
> new() and it'll store the same sv address for different buckets. so
> the data of the last bucket will corrupt the data of all the previous
> buckets, since they share the PV slot. Observe for youself:

I haven't looked at the bucket implementation, but FWIW this is
exactly how transient buckets behave in apache's filter stack
(mod_ssl generates these in the input filter chain). You might
want to implement a setaside callback for sv buckets that would
copy the SvPVX into a pool-allocated string when called (and presumably
turn the bucket into a normal pool bucket at that point?).

If you had a setaside, then instead of (or in addition to?)
marking the sv READONLY it might be possible to add setmagic to the sv
that invokes the new setaside callback. That way the sv and the old
bucket might be decoupled when the sv is reassigned, and perhaps
at that point the READONLY flag could be dropped.

It would certainly require some planning efforts to coordinate
everything, but I believe it's possible to do something like this.

--
Joe Schaefer


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

Recently Viewed:
hardware.arm.at...    cms.citadel.dev...    video.gstreamer...    java.facelets.u...    misc.basics.qna...    web.wiki.instik...    network.uip.use...    xdg.devel/2003-...    tex.bibtex.bibd...    finance.quotesp...    ietf.zeroconf/2...    redhat.blinux.g...    suse.db2/2003-0...    php.phpesp/2004...    uml.devel/2003-...    gnome.labyrinth...    qnx.openqnx.dev...    boot-loaders.gr...    db.dataperfect....    audio.audacity....    linux.uclinux.m...    editors.j.devel...    os.openbsd.tech...    kde.users.multi...   
Home | advertise | OSDir is an inevitable website. super tiny logo

Free Magazines

Cisco News
Receive a free quarterly e-newsletter with exclusive articles on how Cisco IT uses its own products and solutions to enable the business.
subscribe

Systems Management News, the newspaper for IT systems administration and data center managers! Each issue of Systems Management News is chock-full of news and analysis to help you understand what's happening in your field.
subscribe

The Enterprise Newsweekly eWeek is the essential technology information source for builders of e-business.
subscribe

Oracle Magazine Oracle Magazine contains technology strategy articles, sample code, tips, Oracle and partner news, how to articles for developers and DBAs, and more. Oracle (NASDAQ: ORCL) is the world's largest enterprise software company.
subscribe

Total Telecom Total Telecom is "The Economist of the communications industry".
subscribe

Navigation