RE: [PHP-DEV] Problem with ext/libxml RINIT/RSHUTDOWN
| From: | Dmitry Stogov | Date: | Mon, 20 Mar 2006 08:33:28 +0000 |
| Subject: | RE: [PHP-DEV] Problem with ext/libxml RINIT/RSHUTDOWN | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-22534@lists.php.net to get a copy of this message | ||
Hi,
After looking into libxml sources I don't think this should be fixed.
The code is right (libxml is thread-safe) and slowdown is really small.
Thanks. Dmitry.
> -----Original Message-----
> From: Marcus Boerger [mailto:helly@php.net]
> Sent: Saturday, March 18, 2006 1:57 AM
> To: Dmitry Stogov
> Cc: 'Wez Furlong'; 'Rob Richards'; internals@lists.php.net
> Subject: Re: [PHP-DEV] Problem with ext/libxml RINIT/RSHUTDOWN
>
>
> Hello Dmitry,
>
> which is the default....
>
> however we could for optimization add some configure option
> "--i-damn-know-what-the-fuck-i-am-doing" that would setup the
> handlers only once. Obviously such a thing can only be used
> if nothing else is using libxml2.
>
> marcus
>
> Friday, March 17, 2006, 2:58:33 PM, you wrote:
>
> > BTW: libxml can be compiled with LIBXML_THREAD_ENABLED.
>
> > Dmitry.
>
> >> -----Original Message-----
> >> From: Wez Furlong [mailto:kingwez@gmail.com]
> >> Sent: Friday, March 17, 2006 4:33 PM
> >> To: Rob Richards
> >> Cc: Dmitry Stogov; internals@lists.php.net
> >> Subject: Re: [PHP-DEV] Problem with ext/libxml RINIT/RSHUTDOWN
> >>
> >>
> >> Sounds like a nasty situation.
> >> I don't think it's possible to sanely restore the handlers at
> >> rshutdown in a threaded build without screwing up the other
> >> threads that are currently executing.
> >>
> >> My suggestion is to not restore the handlers for threaded
> >> builds, and if there is a library sharing/abuse issue, then
> >> treat it as an installation/configuration problem for the
> >> person deploying it (eg: don't do that!). There's not much
> >> you can do about that without rewriting libxml2 to not use
> >> globals for the callbacks. :-/
> >>
> >> --Wez.
> >>
> >> On 3/17/06, Rob Richards <rrichards@ctindustries.net> wrote:
> >> > Dmitry Stogov wrote:
> >> > > Hi Wez,
> >> > >
> >> > > I found a bad code in ext/libxml.
> >> > >
> >> > > On each request startup/shutdown it changing some libxml
> >> callbacks.
> >> > > At first this slowdown each request, at second
> multi-threaded PHP
> >> > > may fail, because different threads may set/clean the
> >> same callbacks
> >> > > in the same time.
> >> > >
> >> > > May be it is possible to setup these callbacks forever in
> >> > > MINIT/MSHUTDOWN, set some flag (somthing like
> >> LIBXML(in_request)) in
> >> > > RINIT/RSHUTDOWN, and check it in callbacks.
> >> > >
> >> > Which ones in particular?
> >> > Each of the callbacks being utilized are thread safe.
> >> > The reason why they need to be set per request is in
> order to play
> >> > nice with any other modules that might be loaded and use libxml2.
> >> >
> >> > for example: prior to how the current callbacks are
> >> implemented it was
> >> > possible to blow away PHP stream usage by any of the xml
> extensions
> >> > using mod_perl and its xsl module (could do this whether
> or not PHP
> >> > was running threaded). There are also many other ways to
> screw with
> >> > the libxml2 globals and effect PHP extensions based on
> >> libxml2 as well
> >> > using other modules so the only way to protect them is on each
> >> > request. In short putting them into the MINIT/MSHUTDOWN
> will open
> >> > security holes.
> >> >
> >> > Rob
> >> >
> >>
> >>
>
>
>
>
> Best regards,
> Marcus
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
>