Recently I got this error. But not sure what is happening exactly. Need to have a thorough look. Please create a Jira.
Supun. On Sat, Oct 25, 2008 at 12:27 AM, Lefrancois, Carl < [EMAIL PROTECTED]> wrote: > Hello all, > > No doubt my problem is due to user error, but I'm not sure what to try > next to fix this problem. > > I am working to implement asynchronous mode client calls in a project > which is already fairly mature and works well in blocking mode. When my > DLL is loaded, I initialise the Axis2/C environment, and I free the > environment on unload of the DLL. In between I can make many web > service calls in blocking mode. > > What is happening now is that I used code from the echo_non_blocking.c > sample to implement asynchronous mode but I get an access violation > because the env is freed inside the function which calls my on_complete > callback. After this function is completed my application still tries > to use the same env. > > Can someone point out which function to call so I can make use of the > asynchronous callbacks and still keep the same environment between > calls? > > > > > here is the code I am using: > ======================================================================== > ============================= > /* Send request */ > svc_client = axis2_stub_get_svc_client (stub, axis2_env ); > AXIS2_LOG_INFO(axis2_env->log, "\n---appel d'axis2 send receive > INITIÉ---\n"); ******* I see this in the log > axis2_svc_client_send_receive_non_blocking(svc_client, axis2_env, > payload, callback); > AXIS2_LOG_INFO(axis2_env->log, "\n---appel d'axis2 send receive > RETOURNÉ---\n");******* I see this in the log > > /** Wait till callback is complete. Simply keep the parent thread > running > until our on_complete or on_error is invoked */ > while (count < 15) > { > if (isComplete) > { > /* We are done with the callback */ > break; > } > AXIS2_LOG_INFO(axis2_env->log, "\n---AXIS DORT---\n"); > ******* I see this in the log > AXIS2_SLEEP(1); > AXIS2_LOG_INFO(axis2_env->log, "\n---AXIS SE RÉVEILLE---\n"); > ******* crash happens here after on_complete.. Axis2_env is freed! > count++; > } > > if (!(count < 15)) > { > AXIS2_LOG_INFO(axis2_env->log, "\n---appel d'axis2 send receive > COMPLÉTÉ TIMEOUT---\n"); **** never see this in log > *lpiEtatTraitement = ETAT_TRAITEMENT_TIMEOUT; > } > else > { > AXIS2_LOG_INFO(axis2_env->log, "\n---appel d'axis2 send receive > COMPLÉTÉ OK---\n"); **** never see this in log > } > ======================================================================== > ============================= > > > axis2_status_t AXIS2_CALL OnRatingStubOpComplete( struct > axis2_callback * callback, const axutil_env_t * env) > { > AXIS2_LOG_INFO(axis2_env->log, > "\n---OnRatingStubOpComplete()---\n"); ******* I see this in > the log > isComplete = 1; > return AXIS2_SUCCESS; > } > > ======================================================================== > ============================= > > ... In the trace execution goes into op_client.c here: > > if (args_list->callback) > { > axis2_callback_invoke_on_complete(args_list->callback, th_env, > args_list->op_client->async_result); **** calls my on_complete > function above > axis2_callback_set_complete(args_list->callback, th_env, > AXIS2_TRUE); > } > > /* clean up memory */ > axis2_async_result_free(args_list->op_client->async_result, th_env); > > axis2_op_ctx_free(op_ctx, th_env); > > th_pool = th_env->thread_pool; > > AXIS2_FREE(th_env->allocator, args_list); > > if (th_env) > { > axutil_free_thread_env(th_env); > th_env = NULL; > } > axutil_thread_pool_exit_thread(th_pool, thd); > ***** this frees my env! as shown in my log > return NULL; > } > > ======================================================================== > ============================= > > > > > So can someone tell me, is axis2_svc_client_send_receive_non_blocking > the wrong function to use if I want to make many service calls with one > environment? > > > Carl Lefrançois > Analyste / Programmeur > Larochelle Groupe Conseil > > Tél. : 514-282-6817, poste 4548 > Couriel : [EMAIL PROTECTED] > _____ > > "Ce message est confidentiel, à l'usage exclusif du destinataire > ci-dessus et son contenu ne représente en aucun cas un engagement de la > part de AXA, sauf en cas de stipulation expresse et par écrit de la part > de AXA. Toute publication, utilisation ou diffusion, même partielle, > doit être autorisée préalablement. Si vous n'êtes pas destinataire de ce > message, merci d'en avertir immédiatement l'expéditeur." > > "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] > > -- Software Engineer, WSO2 Inc http://wso2.org