You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@axis.apache.org by "Chris Rose (JIRA)" <ji...@apache.org> on 2008/07/01 20:06:45 UTC

[jira] Created: (AXIS2C-1222) Axis2/C AXIOM libxml2 parser frees the IO context before calling the AXIS2_CLOSE_INPUT_CALLBACK

Axis2/C AXIOM libxml2 parser frees the IO context before calling the AXIS2_CLOSE_INPUT_CALLBACK
-----------------------------------------------------------------------------------------------

                 Key: AXIS2C-1222
                 URL: https://issues.apache.org/jira/browse/AXIS2C-1222
             Project: Axis2-C
          Issue Type: Bug
          Components: xml/parser
    Affects Versions: 1.4.0
         Environment: Linux/Unix with libxml2 parser
            Reporter: Chris Rose


Running under valgrind, I get this invalid read error:
==21882== Invalid read of size 4
==21882==    at 0x43F6F69: axiom_close_gstream (axis2c_util.c:246)
==21882==    by 0x44F418F: axis2_libxml2_reader_wrapper_close_input_callback (libxml2_reader_wrapper.c:964)
==21882==    by 0x451BD8C: xmlFreeParserInputBuffer (xmlIO.c:2307)
==21882==    by 0x4571E6A: xmlTextReaderClose (xmlreader.c:2255)
==21882==    by 0x44F381C: axis2_libxml2_reader_wrapper_free (libxml2_reader_wrapper.c:505)
==21882==    by 0x44F2686: axiom_xml_reader_free (xml_reader.c:34)
==21882==    by 0x444F914: axiom_stax_builder_free (om_stax_builder.c:909)
==21882==    by 0x43F6D65: Axis2_axiom_deserialize_buffer (axis2c_util.c:152)
==21882==    by 0x43F6820: Axis2c_cmd_svc_client (axis2c.c:419)
==21882==    by 0x402EA62: TclEvalObjvInternal (tclBasic.c:3084)
==21882==    by 0x402F56B: Tcl_EvalEx (tclBasic.c:3674)
==21882==    by 0x4083D91: Tcl_FSEvalFile (tclIOUtil.c:1651)
==21882==  Address 0x47616F0 is 0 bytes inside a block of size 56 free'd
==21882==    at 0x400513F: free (vg_replace_malloc.c:233)
==21882==    by 0x441AEA3: axutil_allocator_free_impl (allocator.c:91)
==21882==    by 0x44F3804: axis2_libxml2_reader_wrapper_free (libxml2_reader_wrapper.c:500)
==21882==    by 0x44F2686: axiom_xml_reader_free (xml_reader.c:34)
==21882==    by 0x444F914: axiom_stax_builder_free (om_stax_builder.c:909)
==21882==    by 0x43F6D65: Axis2_axiom_deserialize_buffer (axis2c_util.c:152)
==21882==    by 0x43F6820: Axis2c_cmd_svc_client (axis2c.c:419)
==21882==    by 0x402EA62: TclEvalObjvInternal (tclBasic.c:3084)
==21882==    by 0x402F56B: Tcl_EvalEx (tclBasic.c:3674)
==21882==    by 0x4083D91: Tcl_FSEvalFile (tclIOUtil.c:1651)
==21882==    by 0x408C036: Tcl_Main (tclMain.c:292)
==21882==    by 0x80486B3: main (in /home/rosec/install/fc/bin/tclsh8.4)

>From this I can see that in the libxml2 reader wrapper code, the context of the parser -- provided when the IO parser was created -- is freed before the close callback is invoked by calling xmlFreeTextReader.  This is an error in this instance, because the context handle cannot simply be free()d, in our application it requires specific destructor work to occur.  This might be a lack of undestanding of the purpose of the close callback, but it's clear that AXIS2_FREE is invoked on the context handle before the close callback is invoked.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-c-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-c-dev-help@ws.apache.org


[jira] Updated: (AXIS2C-1222) Axis2/C AXIOM libxml2 parser frees the IO context before calling the AXIS2_CLOSE_INPUT_CALLBACK

Posted by "S.Uthaiyashankar (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/AXIS2C-1222?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

S.Uthaiyashankar updated AXIS2C-1222:
-------------------------------------

    Fix Version/s: 1.6.0

> Axis2/C AXIOM libxml2 parser frees the IO context before calling the AXIS2_CLOSE_INPUT_CALLBACK
> -----------------------------------------------------------------------------------------------
>
>                 Key: AXIS2C-1222
>                 URL: https://issues.apache.org/jira/browse/AXIS2C-1222
>             Project: Axis2-C
>          Issue Type: Bug
>          Components: xml/parser
>    Affects Versions: 1.4.0
>         Environment: Linux/Unix with libxml2 parser
>            Reporter: Chris Rose
>            Assignee: Supun Kamburugamuva
>             Fix For: 1.6.0
>
>
> Running under valgrind, I get this invalid read error:
> ==21882== Invalid read of size 4
> ==21882==    at 0x43F6F69: axiom_close_gstream (axis2c_util.c:246)
> ==21882==    by 0x44F418F: axis2_libxml2_reader_wrapper_close_input_callback (libxml2_reader_wrapper.c:964)
> ==21882==    by 0x451BD8C: xmlFreeParserInputBuffer (xmlIO.c:2307)
> ==21882==    by 0x4571E6A: xmlTextReaderClose (xmlreader.c:2255)
> ==21882==    by 0x44F381C: axis2_libxml2_reader_wrapper_free (libxml2_reader_wrapper.c:505)
> ==21882==    by 0x44F2686: axiom_xml_reader_free (xml_reader.c:34)
> ==21882==    by 0x444F914: axiom_stax_builder_free (om_stax_builder.c:909)
> ==21882==    by 0x43F6D65: Axis2_axiom_deserialize_buffer (axis2c_util.c:152)
> ==21882==    by 0x43F6820: Axis2c_cmd_svc_client (axis2c.c:419)
> ==21882==    by 0x402EA62: TclEvalObjvInternal (tclBasic.c:3084)
> ==21882==    by 0x402F56B: Tcl_EvalEx (tclBasic.c:3674)
> ==21882==    by 0x4083D91: Tcl_FSEvalFile (tclIOUtil.c:1651)
> ==21882==  Address 0x47616F0 is 0 bytes inside a block of size 56 free'd
> ==21882==    at 0x400513F: free (vg_replace_malloc.c:233)
> ==21882==    by 0x441AEA3: axutil_allocator_free_impl (allocator.c:91)
> ==21882==    by 0x44F3804: axis2_libxml2_reader_wrapper_free (libxml2_reader_wrapper.c:500)
> ==21882==    by 0x44F2686: axiom_xml_reader_free (xml_reader.c:34)
> ==21882==    by 0x444F914: axiom_stax_builder_free (om_stax_builder.c:909)
> ==21882==    by 0x43F6D65: Axis2_axiom_deserialize_buffer (axis2c_util.c:152)
> ==21882==    by 0x43F6820: Axis2c_cmd_svc_client (axis2c.c:419)
> ==21882==    by 0x402EA62: TclEvalObjvInternal (tclBasic.c:3084)
> ==21882==    by 0x402F56B: Tcl_EvalEx (tclBasic.c:3674)
> ==21882==    by 0x4083D91: Tcl_FSEvalFile (tclIOUtil.c:1651)
> ==21882==    by 0x408C036: Tcl_Main (tclMain.c:292)
> ==21882==    by 0x80486B3: main (in /home/rosec/install/fc/bin/tclsh8.4)
> From this I can see that in the libxml2 reader wrapper code, the context of the parser -- provided when the IO parser was created -- is freed before the close callback is invoked by calling xmlFreeTextReader.  This is an error in this instance, because the context handle cannot simply be free()d, in our application it requires specific destructor work to occur.  This might be a lack of undestanding of the purpose of the close callback, but it's clear that AXIS2_FREE is invoked on the context handle before the close callback is invoked.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Assigned: (AXIS2C-1222) Axis2/C AXIOM libxml2 parser frees the IO context before calling the AXIS2_CLOSE_INPUT_CALLBACK

Posted by "Supun Kamburugamuva (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/AXIS2C-1222?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Supun Kamburugamuva reassigned AXIS2C-1222:
-------------------------------------------

    Assignee: Supun Kamburugamuva

> Axis2/C AXIOM libxml2 parser frees the IO context before calling the AXIS2_CLOSE_INPUT_CALLBACK
> -----------------------------------------------------------------------------------------------
>
>                 Key: AXIS2C-1222
>                 URL: https://issues.apache.org/jira/browse/AXIS2C-1222
>             Project: Axis2-C
>          Issue Type: Bug
>          Components: xml/parser
>    Affects Versions: 1.4.0
>         Environment: Linux/Unix with libxml2 parser
>            Reporter: Chris Rose
>            Assignee: Supun Kamburugamuva
>
> Running under valgrind, I get this invalid read error:
> ==21882== Invalid read of size 4
> ==21882==    at 0x43F6F69: axiom_close_gstream (axis2c_util.c:246)
> ==21882==    by 0x44F418F: axis2_libxml2_reader_wrapper_close_input_callback (libxml2_reader_wrapper.c:964)
> ==21882==    by 0x451BD8C: xmlFreeParserInputBuffer (xmlIO.c:2307)
> ==21882==    by 0x4571E6A: xmlTextReaderClose (xmlreader.c:2255)
> ==21882==    by 0x44F381C: axis2_libxml2_reader_wrapper_free (libxml2_reader_wrapper.c:505)
> ==21882==    by 0x44F2686: axiom_xml_reader_free (xml_reader.c:34)
> ==21882==    by 0x444F914: axiom_stax_builder_free (om_stax_builder.c:909)
> ==21882==    by 0x43F6D65: Axis2_axiom_deserialize_buffer (axis2c_util.c:152)
> ==21882==    by 0x43F6820: Axis2c_cmd_svc_client (axis2c.c:419)
> ==21882==    by 0x402EA62: TclEvalObjvInternal (tclBasic.c:3084)
> ==21882==    by 0x402F56B: Tcl_EvalEx (tclBasic.c:3674)
> ==21882==    by 0x4083D91: Tcl_FSEvalFile (tclIOUtil.c:1651)
> ==21882==  Address 0x47616F0 is 0 bytes inside a block of size 56 free'd
> ==21882==    at 0x400513F: free (vg_replace_malloc.c:233)
> ==21882==    by 0x441AEA3: axutil_allocator_free_impl (allocator.c:91)
> ==21882==    by 0x44F3804: axis2_libxml2_reader_wrapper_free (libxml2_reader_wrapper.c:500)
> ==21882==    by 0x44F2686: axiom_xml_reader_free (xml_reader.c:34)
> ==21882==    by 0x444F914: axiom_stax_builder_free (om_stax_builder.c:909)
> ==21882==    by 0x43F6D65: Axis2_axiom_deserialize_buffer (axis2c_util.c:152)
> ==21882==    by 0x43F6820: Axis2c_cmd_svc_client (axis2c.c:419)
> ==21882==    by 0x402EA62: TclEvalObjvInternal (tclBasic.c:3084)
> ==21882==    by 0x402F56B: Tcl_EvalEx (tclBasic.c:3674)
> ==21882==    by 0x4083D91: Tcl_FSEvalFile (tclIOUtil.c:1651)
> ==21882==    by 0x408C036: Tcl_Main (tclMain.c:292)
> ==21882==    by 0x80486B3: main (in /home/rosec/install/fc/bin/tclsh8.4)
> From this I can see that in the libxml2 reader wrapper code, the context of the parser -- provided when the IO parser was created -- is freed before the close callback is invoked by calling xmlFreeTextReader.  This is an error in this instance, because the context handle cannot simply be free()d, in our application it requires specific destructor work to occur.  This might be a lack of undestanding of the purpose of the close callback, but it's clear that AXIS2_FREE is invoked on the context handle before the close callback is invoked.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-c-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-c-dev-help@ws.apache.org