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