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


> -----Ursprüngliche Nachricht-----
> Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
> Auftrag von
> James Eggleston
> Gesendet: Mittwoch, 14. September 2005 18:56
> An: [email protected]
> 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/
> [email protected]
> http://mail.gnome.org/mailman/listinfo/xml
> 

Attachment: test_vsnprintf.cpp
Description: test_vsnprintf.cpp

_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
[email protected]
http://mail.gnome.org/mailman/listinfo/xml

Reply via email to