Here is my latest trace. The crash location has changed. Now it is crashing on the memcpy inside the axutil_stream_write function, which seems like the same error as last time, only trapped earlier.
To recap, these are the calls causing the crash: readSize = axutil_stream_read (stream, env, buffer, streamSize); readSize = axutil_stream_write (stream, env, buffer, streamSize); Carl [Wed Apr 16 14:06:04 2008] [debug] c:\ws\axis_svn\src\core\engine\phase.c(121) axis2_handler_t *request_uri_based_dispatcher added to the index 0 of the phase Transport [Wed Apr 16 14:06:04 2008] [debug] c:\ws\axis_svn\src\core\engine\phase.c(121) axis2_handler_t *addressing_based_dispatcher added to the index 1 of the phase Transport [Wed Apr 16 14:06:04 2008] [debug] c:\ws\axis_svn\src\core\engine\phase.c(121) axis2_handler_t *rest_dispatcher added to the index 0 of the phase Dispatch [Wed Apr 16 14:06:04 2008] [debug] c:\ws\axis_svn\src\core\engine\phase.c(121) axis2_handler_t *soap_message_body_based_dispatcher added to the index 1 of the phase Dispatch [Wed Apr 16 14:06:04 2008] [debug] c:\ws\axis_svn\src\core\engine\phase.c(121) axis2_handler_t *soap_action_based_dispatcher added to the index 2 of the phase Dispatch [Wed Apr 16 14:06:04 2008] [debug] c:\ws\axis_svn\src\core\engine\phase.c(121) axis2_handler_t *dispatch_post_conditions_evaluator added to the index 0 of the phase PostDispatch [Wed Apr 16 14:06:04 2008] [debug] c:\ws\axis_svn\src\core\engine\phase.c(121) axis2_handler_t *context_handler added to the index 1 of the phase PostDispatch [Wed Apr 16 14:06:04 2008] [debug] c:\ws\axis_svn\src\core\deployment\conf_builder.c(233) no custom dispatching order found continue with default dispatching order [Wed Apr 16 14:06:04 2008] [debug] c:\ws\axis_svn\util\src\class_loader.c(141) Object loaded successfully [Wed Apr 16 14:06:04 2008] [debug] c:\ws\axis_svn\util\src\class_loader.c(141) Object loaded successfully [Wed Apr 16 14:06:04 2008] [error] c:\ws\axis_svn\util\src\dir_handler.c(220) No files in the path H:\Projets\SOA\Axis2c\axis_svn\build\deploy/modules. [Wed Apr 16 14:06:04 2008] [error] c:\ws\axis_svn\util\src\dir_handler.c(220) No files in the path H:\Projets\SOA\Axis2c\axis_svn\build\deploy/services. [Wed Apr 16 14:06:04 2008] [debug] c:\ws\axis_svn\src\core\phaseresolver\phase_resolver.c(117) Service name is : __ANONYMOUS_SERVICE__ -----Message d'origine----- De : Samisa Abeysinghe [mailto:[EMAIL PROTECTED] Envoyé : mercredi, avril 16, 2008 12:08 À : Apache AXIS C User List Objet : Re: problem modifying axutil_stream_t in AXIOM_DATA_SOURCE node Lefrancois, Carl wrote: > Hi list, > > Please help with some unexpected behaviour. This morning I started > using the functions axutil_stream_read and axutil_stream_write to > modify the contents of an AXIOM_DATA_SOURCE node in my payload, and I > am getting program crashes. > Can you send in the traces of the crashes? Samisa... > I am using WSDL2C generated code stubs, and modifying the > axis2_stub_xx.c file to make changes to the payload. I inserted a > function at the top of the file and call this function just after the > payload is generated on the line: > > payload = adb_<type>_serialize(_<type>, env, NULL, NULL, AXIS2_TRUE, > NULL, NULL); > modify_stream_contents(payload, env); > > My function navigates the payload node to find the AXIOM_DATA_SOURCE > node. It then reads the contents into a buffer and does some > modification, then writes the modified data back into the stream. I'm > including a minimal version of the function below that only reads the > stream and writes it back again without modification. > > The behaviour is strange: if the axutil_stream_write function > specifies a small count, the program doesn't crash. In my case, I can > specify up to 1665 bytes without a crash. (the full message size is > 16860) > > Am I doing something bad here? Are these stream functions meant to be > used in another way? The crash appears to be because of a buffer > overflow that mangles the state of other variables in the system. > > (Axis2/C is version 1.3.0) > > Any help is appreciated. > > Carl > > > void modify_stream_contents(axiom_node_t *_node, const axutil_env_t > *env) > { > axiom_data_source_t *dataSource = NULL; > axutil_stream_t * stream = NULL; > axiom_node_t *currentNode = NULL; > axis2_char_t *buffer = NULL; > size_t streamSize = 0; > size_t readSize = 0; > > // navigate to node that contains stream > currentNode = _node; > while (currentNode && (axiom_node_get_node_type(currentNode, env) != > AXIOM_ELEMENT)) > { > currentNode = axiom_node_get_next_sibling(currentNode, env); > } > currentNode = axiom_node_get_first_child(currentNode, env); > if (!currentNode || (axiom_node_get_node_type(currentNode, env) != > AXIOM_DATA_SOURCE)) return; > > // get stream > dataSource = (axiom_data_source_t *) > axiom_node_get_data_element(currentNode, env); > stream = axiom_data_source_get_stream(dataSource, env); > if (!stream) return; > > streamSize = axutil_stream_get_len(stream, env); > buffer = (char *) AXIS2_MALLOC (env->allocator, sizeof (char) * > (streamSize)); > readSize = axutil_stream_read (stream, env, buffer, streamSize); > readSize = axutil_stream_write (stream, env, buffer, 1665 ); // > readSize = axutil_stream_write (stream, env, buffer, streamSize ); > AXIS2_FREE (env->allocator, buffer); > } > _____ > > "Ce message est confidentiel, a l'usage exclusif du destinataire > ci-dessus et son contenu ne represente en aucun cas un engagement de > la part de AXA, sauf en cas de stipulation expresse et par ecrit de la > part de AXA. Toute publication, utilisation ou diffusion, meme > partielle, doit etre autorisee prealablement. Si vous n'etes pas > destinataire de ce message, merci d'en avertir immediatement > l'expediteur." > > "This e-mail message is confidential, for the exclusive use of the > addressee and its contents shall not constitute a commitment by AXA, > except as otherwise specifically provided in writing by AXA. Any > unauthorized disclosure, use or dissemination, either whole or > partial, is prohibited. If you are not the intended recipient of the > message, please notify the sender immediately." > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > > -- Samisa Abeysinghe Director, Engineering; WSO2 Inc. http://www.wso2.com/ - "The Open Source SOA Company" --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
