I didn't see you have attached the request envelope in the early mail.. Sorry for bothering you with the early mail.
Anyway replace the "%Lf" to "%lf" and check again. "%Lf" should be the reason for the memory corruption as well. Thanks Dimuthu On Feb 1, 2008 11:42 PM, Zhang, Wayne (IT) <[EMAIL PROTECTED]> wrote: > Hi Dimuthu, > > I added the debug printf and here is the new output: > > Started Simple Axis2 HTTP Server ... > in axis2_svc_skel_CalculatorService_invoke(), content_node is: > <n:Arithmetic > xmlns:n="http://xml.ms.com/ns/msjava/cxfutils/examples/calculator"><n:Nu > m1>50.000000</n:Num1><n:Num2>20.000000</n:Num2></n:Arithmetic> > > in axis2_skel_CalculatorService_Arithmetic()! > num1=0.000000, num2=0.000000 > exiting axis2_skel_CalculatorService_Arithmetic()... > Segmentation fault (core dumped) > > It's possible that "divide-by-zero" causes the memory corruption, but if > num1 and num2 were deserialized correctly I won't run into this problem. > > Thanks, > > Wayne Zhang > Morgan Stanley | Technology > 750 Seventh Avenue, 12th Floor | New York, NY 10019 > Phone: +1 212 762-1943 > [EMAIL PROTECTED] > > > >-----Original Message----- > >From: Dimuthu Gamage [mailto:[EMAIL PROTECTED] > > >Sent: Friday, February 01, 2008 12:56 PM > >To: Apache AXIS C User List > >Subject: Re: Questions/suggestions on WSDL2C > > > >Hi, > > > >Looking at your gdb.txt, i feel that there is a memory > >corruption somewhere.. because parent_tag_closed is supposed > >to have value 1, but it have some junk value. Although I m not > >sure one reason can be you are doing 0/0 kind of operation, > >That is just a guess. > > > >If that so, can you check whether the request message have > >come correctly?. you can do that by installing tcpmon [1]. or > >adding following code in the start of > >axis2_svc_skel_CalculatorService_invoke > >function in the axis2_svc_skel_CalculatorService.c file. > > > >printf("%s\n", axiom_node_to_string(content_node, env)); > > > > > >[1] http://xml.ms.com/ns/msjava/cxfutils/examples/calculator > > > >Thanks > >Dimuthu > > > >On Feb 1, 2008 10:31 PM, Zhang, Wayne (IT) > ><[EMAIL PROTECTED]> wrote: > >> Hi Dimuthu, > >> > >> I followed your instructions and was able to build my > >client, so many > >> thanks on that. However, my client is crashing the server now > >> (SIGSEGV) and as far as I can tell the request looks valid. I have > >> attached the client request, the server log, my > >implementation of the > >> server handler > >> (axis2_skel_CalculatorService.c) and gdb back trace from the > >core file > >> to this mail. Below are my server's debug statements before > >the crash: > >> > >> > >> Started Simple Axis2 HTTP Server ... > >> in axis2_skel_CalculatorService_Arithmetic()! > >> num1=0.000000, num2=0.000000 > >> exiting axis2_skel_CalculatorService_Arithmetic()... > >> Segmentation fault (core dumped) > >> > >> > >> As you see, num1 and num2 are parsed wrong (I expected 50.000000 and > >> 20.000000), so it seems axis2 is having trouble deserializing the > >> arguments from the request message. Please advise on how I should > >> debug the server. > >> > >> Thanks, > >> > >> Wayne > >> > >> > >> >-----Original Message----- > >> >From: Dimuthu Gamage [mailto:[EMAIL PROTECTED] > >> > >> >Sent: Thursday, January 31, 2008 5:44 PM > >> >To: Apache AXIS C User List > >> >Subject: Re: Questions/suggestions on WSDL2C > >> > > >> >Hi Zhang, > >> >Please see my inline comment to the code.. > >> > > >> >On Feb 1, 2008 1:30 AM, Zhang, Wayne (IT) > >> ><[EMAIL PROTECTED]> wrote: > >> >> Hi, > >> >> > >> >> Thanks to all for your quick responses. I think a simple > >> >demo client > >> >> (with useful inlined comments explaining what a user should do) > >> >> will fit my need. WRT makefile generation, I understand > >it's hard > >> >> to auto-generate one that works perfectly in _all_ projects, but > >> >> it might be helpful to create a makefile.template kind of thing > >> >to set up > >> >> all the basic stuff (required defines, libs, include paths, > >> >libpaths, > >> >> etc) and let the users add their stuff on top of it. > >> >> > >> >> Now back to the problems I encountered with the client. (I > >> >apologize > >> >> for the following long copy-and-paste text, please tell me > >> >the proper > >> >> way if this is not recommended). WSDL2C generates the following > >> >> header code but I'm not sure what to do with each > >function (see my > >> >> inlined > >> >> questions): > >> >> > >> >> > >> >> /***************** function prototypes - for header file > >> >> *************/ > >> >> /** > >> >> * axis2_stub_create_CalculatorService > >> >> * Create and return the stub with services populated > >> >> * @param env Environment ( mandatory) > >> >> * @param client_home Axis2/C home ( mandatory ) > >> >> * @param endpoint_uri Service endpoint uri( optional ) > >- if NULL > >> >> default picked from WSDL used > >> >> * @return Newly created stub object > >> >> */ > >> >> axis2_stub_t* > >> >> axis2_stub_create_CalculatorService(const axutil_env_t *env, > >> >> axis2_char_t *client_home, > >> >> axis2_char_t *endpoint_uri); > >> >> // wz: I looked at the math example source and thought > >> >> // this function should correspond to axis2_math_stub.c's > >> >> axis2_math_stub_create_with_endpoint_uri_and_client_home()? > >> > > >> >Yea, It is exactly the same.. > >> >> > >> >> /** > >> >> * axis2_stub_populate_services_for_CalculatorService > >> >> * populate the svc in stub with the service and operations > >> >> * @param stub The stub > >> >> * @param env environment ( mandatory) > >> >> */ > >> >> void axis2_stub_populate_services_for_CalculatorService( > >> >> axis2_stub_t *stub, const axutil_env_t *env); > >> >> // wz: implement it a la axis2_math_stub.c's > >> >> axis2_populate_axis_service()? > >> > > >> >Yea that also do the same functionality. > >> >> > >> >> > >> >> /** > >> >> * axis2_stub_get_endpoint_uri_of_CalculatorService > >> >> * Return the endpoint URI picked from WSDL > >> >> * @param env environment ( mandatory) > >> >> * @return The endpoint picked from WSDL > >> >> */ > >> >> axis2_char_t * > >> >> axis2_stub_get_endpoint_uri_of_CalculatorService(const > >> >axutil_env_t > >> >> *env); > >> >> // wz: no question here > >> >> > >> >> > >> >> /** > >> >> * Auto generated function declaration > >> >> * for > >> >> > >"Arithmetic|http://xml.ms.com/ns/msjava/cxfutils/examples/calculator" > >> >> operation. > >> >> * @param stub The stub (axis2_stub_t) > >> >> * @param env environment ( mandatory) > >> >> > >> >> * @param _arithmetic > >> >> * return > >> >> adb_ArithmeticResponse_t* > >> >> */ > >> >> > >> >> adb_ArithmeticResponse_t* > >> >> axis2_stub_op_CalculatorService_Arithmetic( axis2_stub_t *stub, > >> >> const axutil_env_t *env, > >> >> adb_Arithmetic_t* _arithmetic); > >> >> // wz: how should this function extract input parameters from > >> >> _arithmetic and send them to the server? > >> > > >> >HI I suppose you have adb_Arithemetic.h/.c is generated > >with you.. If > >> >not you may have missed the -u in code generation. > >> >i.e. retry with WSD2C.sh -uri your.wsdl -u. > >> > > >> >Then the adb_Arithetic.h will have create function and several > >> >setters and getters. You can use these functions to feed data to > >> >adb_Arithematic object. The same with adb_Arithematic_Response > >> > > >> > I.e. your code will look something like > >> > > >> >adb_Arithematic_t * ar; > >> >adb_Arithematic_Response_t * ares; > >> > > >> >ar = adb_Arithematic_set_someVar(ar, env, 5); //here someVar should > >> >be replaced with actual fields > >> > > >> >ares = axis2_stub_op_CalculatorService_Arithmetic(stuv, env, ar); > >> > > >> >int i = adb_Arithematic_Response_get_anotherVar(ares, env); > >> > > >> > > >> >You can have a good idea on how to manipulate these adb object from > >> >the "samples/codegen/client/calculator/test_calculator.c" > >> >sample in the axis2/c pack. > >> > > >> > > >> >> > >> >> > >> >> /** > >> >> * Auto generated function declaration > >> >> * for > >> >> > >"Arithmetic|http://xml.ms.com/ns/msjava/cxfutils/examples/calculator" > >> >> operation. > >> >> * @param stub The stub > >> >> * @param env environment ( mandatory) > >> >> > >> >> * @param _arithmetic > >> >> * @param user_data user data to be accessed by the callbacks > >> >> * @param on_complete callback to handle on complete > >> >> * @param on_error callback to handle on error > >> >> */ > >> >> > >> >> > >> >> > >> >> void axis2_stub_start_op_CalculatorService_Arithmetic( > >> >axis2_stub_t > >> >> *stub, const axutil_env_t *env, > >> >> adb_Arithmetic_t* _arithmetic, > >> >> void *user_data, > >> >> axis2_status_t ( AXIS2_CALL *on_complete ) (const > >> >> axutil_env_t *, > >> >> adb_ArithmeticResponse_t* _arithmeticResponse, void *data) , > >> >> axis2_status_t ( AXIS2_CALL *on_error ) (const axutil_env_t > >> >> *, int exception, void *data) ); > >> >> // wz: is this the asynchronous version of > >> >> axis2_stub_op_CalculatorService_Arithmetic()? What do I do > >> >with data? > >> > > >> >Oops! we have missed to mention this is async in the doc comment. > >> >(anway it is mentioned in the corrosponding .c file). I > >will correct > >> >that in the template. > >> > > >> >Yea this is async. The data is optional user data that can to be > >> >passed to the callback.. IN the callback function > >prototype we have > >> >the data as the argument. This will be really useful to the user to > >> >just parse the context to the callback. > >> > > >> >Thanks > >> >Dimuthu > >> > > >> >> > >> >> > >> >> Thanks, > >> >> > >> >> Wayne Zhang > >> >> Morgan Stanley | Technology > >> >> [EMAIL PROTECTED] > >> >> > >> >> > >> >> > >> >> >-----Original Message----- > >> >> >From: Dimuthu Gamage [mailto:[EMAIL PROTECTED] > >> >> >Sent: Wednesday, January 30, 2008 10:29 PM > >> >> >To: Apache AXIS C User List > >> >> >Subject: Re: Questions/suggestions on WSDL2C > >> >> > > >> >> >Please see my inline comment. > >> >> > > >> >> >On Jan 31, 2008 8:07 AM, Samisa Abeysinghe > ><[EMAIL PROTECTED]> wrote: > >> >> >> Dimuthu Gamage wrote: > >> >> >> > Hi Zhang, > >> >> >> > > >> >> >> > Thanks for your suggestions. > >> >> >> > > >> >> >> > 1). In fact generating a demo client is a good idea. I > >> >> >will look in to that. > >> >> >> > For the time being, I'm using a ruby script to > >generate simple > >> >> >> > demonstrations for stub and skels (it automatically > >> >> >generates simple > >> >> >> > logic with adb), if you find useful you can check it from > >> >> >> > > >> >http://people.apache.org/~dimuthu/leisure/23_oct/generate_demos.rb. > >> >> >> > > >> >> >> > >> >> >> When there are so many operations, with complex params, > >> >how are we > >> >> >> supposed to generate a demo client? > >> >> > > >> >> >I think what we can provide is empty functions (with empty > >> >> >logic) as in server side. The adb object manipulation should be > >> >> >anyway done by the user. so we don't need to worry about complex > >> >> >types in the demo client.. That indeed should be done by > >the user. > >> >> > > >> >> >BTW the ruby script I mentioned there, recursively fills the > >> >> >object matching pattern in the generated code.. That works only > >> >for "in-out" > >> >> >MEP. Anyway what we are planning to generate with WSDL2C > >> >tool is not > >> >> >much complicated as that. > >> >> > > >> >> >Thanks > >> >> >Dimuthu > >> >> > > >> >> >> > > >> >> >> > 2). If we are generating makefiles we may need to > >think about > >> >> >> > both linux and windows users. And we have to decide > >whether to > >> >> >> > use automake build system or just a simple Makefile which > >> >> >> > sometime not OS independent. May be some build system > >> >expert can help on this. > >> >> >> > Sanjaya,, Any Ideas? > >> >> >> > > >> >> >> > >> >> >> IMHO, automake makes things too complicated here. We can > >> >> >just generate > >> >> >> a simple Makefile tat could be used directly. > >> >> >> > >> >> >> Thanks, > >> >> >> Samisa... > >> >> >> > >> >> >> > >> >> >> > >> >> >> > Thanks > >> >> >> > Dimuthu > >> >> >> > > >> >> >> > > >> >> >> > > >> >> >> > On Jan 31, 2008 12:18 AM, Zhang, Wayne (IT) > >> >> >> > <[EMAIL PROTECTED]> wrote: > >> >> >> > > >> >> >> >> > >> >> >> >> Hi, > >> >> >> >> > >> >> >> >> I just started looking at Axis2/C two days ago and it > >> >> >looks pretty > >> >> >> >> promising. However I hit a snag using WSDL2C, and I > >> >> >couldn't find > >> >> >> >> any solutions in the mail archive, so apologies if this > >> >> >has already > >> >> >> >> been answered before. > >> >> >> >> > >> >> >> >> I am using WSDL2C to generate a simple "calculator" client > >> >> >> >> and server. I followed the directions in your user manual > >> >> >> >> > >(http://ws.apache.org/axis2/c/docs/axis2c_manual.html#wsdl2c) > >> >> >> >> and was able to generate my client stubs and server > >skeletons > >> >> >successfully. > >> >> >> >> > >> >> >> >> Implementing the server skeleton is pretty straight > >> >forward -- I > >> >> >> >> just added my business logic in the /* TODO ... */ field. > >> >> > However > >> >> >> >> implementing the client isn't as easy. The user manual > >> >> >> >> simply states "To do this, go through the header files > >> >> >> >> generated and understand the API in line with the WSDL file > >> >> >> >> that you used to generate the code." It will be > >great if you > >> >> >> >> can provide > >> >> >a step-by-step example showing which functions to implement in > >> >> >what files. > >> >> >> >> > >> >> >> >> My other suggestions are: > >> >> >> >> > >> >> >> >> * Can WSDL2C generate a main() for the client that sets up > >> >> >> >> the default env/options and make required axis > >calls such as > >> >> >> >> axis2_endpoint_ref_create(), > >> >> >axis2_svc_client_send_receive(), etc. > >> >> >> >> and put > >> >> >> >> /* TODO */ hints to prompt users to add his business logic? > >> >> >> >> > >> >> >> >> * It will be great if WSDL2C can also generate makefiles > >> >> >to assist > >> >> >> >> compiling the server and client, as well as install the > >> >> >server in $AXIS_HOME/services. > >> >> >> >> This will ease a user's development effort quite a bit. > >> >> >> >> > >> >> >> >> Many thanks in advance, > >> >> >> >> > >> >> >> >> Wayne Zhang > >> >> >> >> Morgan Stanley | Technology > >> >> >> >> 750 Seventh Avenue, 12th Floor | New York, NY 10019 > >> >> >> >> Phone: +1 212 762-1943 > >> >> >> >> [EMAIL PROTECTED] > >> >> >> >> > >> >> >> >> > >> >> >> >> ________________________________ > >> >> >> >> > >> >> >> >> > >> >> >> >> NOTICE: If received in error, please destroy and > >notify sender. > >> >> >> >> Sender does not intend to waive confidentiality or > >privilege. > >> >> >> >> Use of this email is prohibited when received in error. > >> >> >> >> > >> >> >> >> > >> >> >> > > >> >> >> > > >> >> > >>------------------------------------------------------------------ > >> >> >-- > >> >> >> > - 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] > >> >> >> > >> >> >> > >> >> > > >> >> > >> > >>>-------------------------------------------------------------------- > >> >>- > >> >> >To unsubscribe, e-mail: [EMAIL PROTECTED] > >> >> >For additional commands, e-mail: [EMAIL PROTECTED] > >> >> > > >> >> > > >> >> -------------------------------------------------------- > >> >> > >> >> NOTICE: If received in error, please destroy and notify > >> >sender. Sender does not intend to waive confidentiality or > >privilege. > >> >Use of this email is prohibited when received in error. > >> >> > >> >> > >------------------------------------------------------------------- > >> >> -- 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] > >> > > >> > > >> -------------------------------------------------------- > >> > >> NOTICE: If received in error, please destroy and notify > >sender. Sender does not intend to waive confidentiality or > >privilege. Use of this email is prohibited when received in error. > >> > >> --------------------------------------------------------------------- > >> 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] > > > > > -------------------------------------------------------- > > NOTICE: If received in error, please destroy and notify sender. Sender does > not intend to waive confidentiality or privilege. Use of this email is > prohibited when received in error. > > --------------------------------------------------------------------- > 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]
