The input and output callbacks of libxml are stored in static arrays in xmlIO.c, so any use of the callback functions is not thread-safe.
In many cases this shouldn't be a problem, if callbacks are registered only at the start of a program. But the Perl bindings register and unregister callbacks every time a document is parsed. I can reproduce random segfaults or other errors when processing many thousand documents in concurrent threads with the libxml Perl bindings. I'm willing to help fix this, but I'm not sure about the correct approach. Should the callback arrays be added to the global variables in globals.c? Nick -- aevum gmbh rumfordstr. 4 80469 münchen germany tel: +49 89 3838 0653 http://aevum.de/ _______________________________________________ xml mailing list, project page http://xmlsoft.org/ [email protected] http://mail.gnome.org/mailman/listinfo/xml
