Re: [xml] Crash while SAX parsing HTML




On 2009-07-10, at 10:53, Giovanni Donelli wrote:

Hi Daniel,
thanks for the response. I did some additional debugging and I verified that the crash doesn't occur on the main thread, but is 100% reproducible on secondary thread. This explains why you cannot reproduce it with xmllint.

One thing to be aware of is that background threads often default to a much smaller stack size than the main thread. When combined with libxml2's use of recursion during parsing, this can lead to the stack being blown when parsing a deeply-nested document. libxml2 has some built-in limits to try and avoid recursing too deeply, but these limits have no knowledge of the size of the stack on the thread doing the parsing and also don't take in to account any stack space used outside of libxml2.

If I tweak your code below to create the thread like so:

        pthread_attr_t attr;
        pthread_attr_init(&attr);
        pthread_attr_setstacksize(&attr, 1024 * 1024);

        pthread_t thread;
        if (pthread_create(&thread, &attr, _thread, NULL)) {

Then there is sufficient space to parse the document without running off the end of the stack.

Hope this helps,

- Mark

Attachment: smime.p7s
Description: S/MIME cryptographic signature



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]