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:[EMAIL PROTECTED] 
>> 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 <[EMAIL PROTECTED]> 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

Reply via email to