Return-Path: Delivered-To: apmail-httpd-modules-dev-archive@locus.apache.org Received: (qmail 64780 invoked from network); 31 Jul 2007 07:00:39 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 31 Jul 2007 07:00:39 -0000 Received: (qmail 98261 invoked by uid 500); 31 Jul 2007 07:00:01 -0000 Delivered-To: apmail-httpd-modules-dev-archive@httpd.apache.org Received: (qmail 97054 invoked by uid 500); 31 Jul 2007 06:59:55 -0000 Mailing-List: contact modules-dev-help@httpd.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: modules-dev@httpd.apache.org Delivered-To: mailing list modules-dev@httpd.apache.org Received: (qmail 94825 invoked by uid 99); 31 Jul 2007 06:59:43 -0000 Received: from Unknown (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 30 Jul 2007 23:59:43 -0700 X-ASF-Spam-Status: No, hits=1.2 required=10.0 tests=SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (athena.apache.org: local policy) Received: from [193.70.193.55] (HELO mail2a.webresidence.it) (193.70.193.55) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 31 Jul 2007 06:59:16 +0000 Received: from [192.168.233.64] (151.5.148.94) by mail2a.webresidence.it (7.2.059.5) (authenticated as m.spinetti) id 465D8D230004480E for modules-dev@httpd.apache.org; Tue, 31 Jul 2007 08:58:30 +0200 Message-ID: <46AEDD29.5080502@pisa.iol.it> Date: Tue, 31 Jul 2007 08:56:41 +0200 From: Marco Spinetti User-Agent: Mozilla Thunderbird 1.5.0.12 (Windows/20070509) MIME-Version: 1.0 To: modules-dev@httpd.apache.org Subject: Re: Strange segmentation fault References: <1185826201.6027.13.camel@localhost.localdomain> In-Reply-To: <1185826201.6027.13.camel@localhost.localdomain> Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org Ralf Mattes ha scritto: > On Mon, 2007-07-30 at 18:49 +0200, m.spinetti@pisa.iol.it wrote: > >> I found that a similar problem was this: >> >> http://mail-archives.apache.org/mod_mbox/httpd-modules-dev/200703.mbox/%3c1173077706.5485.6.camel@test.asus%3e >> > > Similar? In what way? Abusing libxml2 interna? Are you doing this? > Iff xmlFreeDoc triggers a segmentation violation than the most likely > case is that you pass it a document pointer that's not (a valid > libxml document any more). So what part of the module did invalidate > that doc pointer? Is it more likely to be Apache or your module code? > BTW - one shure way to f^h^hk up you document is messing (i.e. > releasing) nodes still refered to from the document. Does your module > copy/move/delete nodes? > The violation is inside my module,near the end. When I'm at the end of my module I reply to the client and I free the xml documents I used: ..... ap_add_output_filter(SV_XSLT_FILTER_NAME, NULL, r, r->connection); mod_transform_set_XSLT(r, xslfilename); xmlDocDumpMemoryEnc(doc, &bufptr, &size, "UTF-8"); putXML(r, (char*)bufptr); if (size > 0) xmlFree(bufptr); if (docinter != NULL) xmlFreeDoc(docinter); if (docs != NULL) xmlFreeDoc(docs); xmlFreeDoc(doc); xmlCleanupParser(); return OK; where: void putXML(request_rec *r, char* xml) { ap_set_content_type(r, "text/xml"); ap_rwrite(xml, strlen(xml), r); ap_rflush(r); } My final xml document is doc which is built in the module getting information from docinter and docs. Yes my module copies some nodes from docs to doc with xmlCopyNode. I think that my code is correct. Am I doing some mistakes? Best regards Marco > >> So it seems that it's possibile. >> I don't understand how to solve it. >> Could you give me some hints? >> > > Unless your module replaced libxml2's allocator the library uses > malloc/free - you can use all the glorious GNU tools to debug. I guess > you already set MALLOC_CHECK_ to 1, did you? > > HTH Ralf Mattes > > >> Best regards >> >> Marco >> >> >>> Sorry I don't understand the reply. >>> You are telling me that it should be possibile or not? >>> I always use r->pool to allocate memory in my module, but not for >>> libxml2. It has it's memory allocation and looking at source it uses >>> malloc and free. >>> Best regards >>> >>> Marco >>> >>> >>> >>>> On Mon, Jul 30, 2007 at 06:04:27PM +0200, m.spinetti@pisa.iol.it wrote: >>>> >>>>> I isolated my problem. >>>>> It seems that sometimes during xmlFreeDoc(doc) I get a Segmentation >>>>> >>> fault. >>> >>>>> xmlFreeDoc is a function of libxml2 which I use inside my module. >>>>> I suppose that libxml2 uses malloc/free to alloc and free memory: >>>>> >> is it >> >>>>> possibile that there is some overlap of memory with apr poll >>>>> >> (r->poll)? >> >>>> Not an option. Unless you use somewhat pools to allocate memory for >>>> libxml. If you do so, stop it. Either use apr pools or malloc/free. >>>> Kind regards. >>>> >>>> > > -- Software Engineer - Spinetti Marco Direzione Sviluppo Servizi, Sistemi e Piattaforme Tel. +39 050 618.4264 Fax. +39 050 618.4244 Mob. +39 329 4424216 E-Mail: m.spinetti@pisa.iol.it ItaliaOnLine S.p.A. Direzione e coordinamento di Weather Investments S.p.A. Via G. Malagoli, 12 56124 PISA The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from any computer. Any term contained in this email is intended solely as a basis for further discussion and is not intended to be and does not constitute a legally binding obligation. No legally binding obligations will be created, implied or inferred until a definitive agreement in final form is executed in writing and delivered by both parties. Without limiting the generality of the foregoing, the parties intend that there shall be no ligations based on such things as parol evidence, extended negotiations, oral understandings or courses of conduct (including without limitation reliance and changes of position).