Hello James, could you try to compile and run the attached code on your machine? Just to make sure there aren't problems with glibc. I think I read something a time ago about problems with a SIGSEGV in vsnprintf on SMP linux. Servus -- Alfred -- Alfred Mickautsch Schuler Business Solutions AG Karl-Berner-Str. 4 D-72285 Pfalzgrafenweiler tel: +49 (0)74 45 830-184 fax: +49 (0)74 45 830-349 e-mail: alfred mickautsch schuler-ag com
-----Ursprüngliche Nachricht----- Von: xml-bounces gnome org [mailto:xml-bounces gnome org]Im Auftrag von James Eggleston Gesendet: Mittwoch, 14. September 2005 18:56 An: xml gnome org Betreff: [xml] xmlTextWriterWriteFormatElement problem Hello, I've found a problem in our use of libxml2's streaming API. The call "xmlTextWriterWriteFormatElement" crashes when writing strings longer than 8191 bytes. It only happens on our dual - EM64T SuSE Enterprise 9.0 server... it seems fine on our single CPU 32 bit SLES machine (I tried using taskset to make the program stick to one CPU, but the program still crashed...). The default libxml2 is installed (2.6.7). The following program reproduces the problem on my machine: ==================xmlProblem.cpp=========== #include <libxml/encoding.h> #include <libxml/xmlwriter.h> int main() { xmlTextWriterPtr writer; const char* xmlEncoding = "ISO-8859-1"; writer = xmlNewTextWriterFilename("./test.xml", 0); int rc = xmlTextWriterStartDocument(writer, NULL, xmlEncoding, NULL); const int longStringLength(8192); // 8192 causes a seg fault... // const int longStringLength(8191); // 8191doesn't cause a problem! char* pLongString = new char[longStringLength]; for (int i=0;i<longStringLength; i++) { pLongString[i] = 'a'; } pLongString[longStringLength-1] = 0; // this will seg fault!! rc = xmlTextWriterWriteFormatElement(writer, BAD_CAST "test", "%s", pLongString); return 0; } =====end of xmlProblem.cpp=================== Compiling with "g++ xmlProblem.cpp -lxml2", and running causes a core dump... the back trace is: #0 0x0000002a95d2bd70 in strlen () from /lib64/tls/libc.so.6 #1 0x0000002a95cffcdc in vfprintf () from /lib64/tls/libc.so.6 #2 0x0000002a95d1f337 in vsnprintf () from /lib64/tls/libc.so.6 #3 0x0000002a95735fc1 in xmlTextWriterVSprintf () from /usr/lib64/libxml2.so.2 #4 0x0000002a95738e1e in xmlTextWriterWriteVFormatElement () from /usr/lib64/libxml2.so.2 #5 0x0000002a95738ee3 in xmlTextWriterWriteFormatElement () from /usr/lib64/libxml2.so.2 #6 0x000000000040096c in main () Does anyone have any ideas why this is and if anything can be done? Thanks, James. =========================================== James Eggleston VEGA GmbH Hilperstrasse, 20A 64295 Darmstadt Germany Tel: 0049 6151 82570 Tel (direct): 0049 6151 8257712 Fax: 0049 6151 8257799 =========================================== Notice of Confidentiality: This transmission is intended for the named addressee only. It contains information which may be confidential and which may also be privileged. Unless you are the named addressee (or authorised to receive it for the addressee) you may not copy or use it, or disclose it to anyone else. If you have received this transmission in error please notify the sender immediately. =========================================== _______________________________________________ xml mailing list, project page http://xmlsoft.org/ xml gnome org http://mail.gnome.org/mailman/listinfo/xml
Attachment:
test_vsnprintf.cpp
Description: test_vsnprintf.cpp