On Wed, Feb 22, 2006 at 03:06:51PM -0500, Christopher R. Palmer wrote:
> Daniel Veillard wrote:
> >On Mon, Feb 20, 2006 at 01:13:57PM -0500, Christopher R. Palmer wrote:
> >>Digging into this a little more, it looks like xsltInit is called every 
> >>time that a new stylesheet is parsed.  xsltInit uses 
> >>xsltRegisterAllExtras which always updates all of the hash entries and 
> >>the hash function is (not surprisingly) not thread safe for updates.
> >>
> >>CVS tells me that xsltInit was changed to fix bug #165201 (calling 
> >>xsltInit multiple times) where previously it had a local static 
> >>initialized flag.
> >>
> >>The best fix I can suggest is to export xsltInit and have a static 
> >>initialized flag.  To not break the fix of bug #165201, add an internal 
> >>function to signal that the library is no longer initialized.
> >>
> >>I've attached such a patch for possible inclusion in the code base.
> >
> >  Okay, this seems to make sense, and exporting the init function might
> >be the only way to garantee the absence of race in multithreaded uses.
> >I guess you tested it, I have no good way to test multithreaded uses,
> 
> I tested it as well as you can test a race condition...  Before the change, 
> my multi-threaded service was crashing at least once a day and it hasn't 
> crashed in several days now.

  Good, good, as I said it looks logical to me :-)

Daniel

-- 
Daniel Veillard      | Red Hat http://redhat.com/
[EMAIL PROTECTED]  | libxml GNOME XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
[email protected]
http://mail.gnome.org/mailman/listinfo/xml

Reply via email to