#785 Problem transfering std::vector<long>

closed-rejected
None
5
2012-02-07
2011-11-22
MIbold
No

Seems as there is a problem transfering std::vector<long> with size 6, 8 and 9.
Server method won\'t even be called.

Result:
Ask for 6 values
SOAP 1.1 fault: SOAP-ENV:Client [no subcode]
"HTTP/1.1 200 OK"
Detail: connect failed in tcp_connect()
Ask for 7 values
Received 7 values
Ask for 8 values
SOAP 1.1 fault: SOAP-ENV:Client [no subcode]
"TCP/UDP IP error 0"
Detail: get host by name failed in tcp_connect()
Ask for 9 values
SOAP 1.1 fault: SOAP-ENV:Client [no subcode]
"TCP/UDP IP error 0"
Detail: get host by name failed in tcp_connect()
Ask for 10 values
Received 10 values

See example attached. Its qmake based - but should also be reproducable without qt framework.

Discussion

  • MIbold
    MIbold
    2011-11-22

    Example Server and Client

     
    Attachments
  • MIbold
    MIbold
    2011-11-22

    BTW: I´m using 2.8.5 - and I#m wondering why this works all the other times - but never with vectors of size 8 or 9 ...

     
  • MIbold
    MIbold
    2011-11-23

    I assume that there is a correlation to the used datatyp.

    I'm on a 32bit system.
    Using float instead of ints shows no difference. Using double causes problems with vector sizes > 67.
    For bool it becomes very interesting:

    Ask for 93 values
    SOAP 1.1 fault: SOAP-ENV:Client [no subcode]
    "HTTP/1.1 200 OK"
    Detail: connect failed in tcp_connect()
    Ask for 94 values
    test-header.cpp getBoolValues 32
    Somebody wants 94 values...
    Received 94 values
    Ask for 95 values
    test-header.cpp getBoolValues 32
    Somebody wants 95 values...
    Received 95 values
    Ask for 96 values
    SOAP 1.1 fault: SOAP-ENV:Client [no subcode]
    "HTTP/1.1 200 OK"
    Detail: connect failed in tcp_connect()
    Ask for 97 values
    test-header.cpp getBoolValues 32
    Somebody wants 97 values...
    Received 97 values
    Ask for 98 values
    test-header.cpp getBoolValues 32
    Somebody wants 98 values...
    Received 98 values
    Ask for 99 values
    SOAP 1.1 fault: SOAP-ENV:Client [no subcode]
    "HTTP/1.1 200 OK"
    Detail: connect failed in tcp_connect()
    Ask for 100 values
    test-header.cpp getBoolValues 32
    Somebody wants 100 values...
    Received 100 values

     
    • assigned_to: nobody --> engelen
    • status: open --> pending
     
  • The logs will tell you what the problem is with the TCP communication. We have unit tests for all data types and these unit tests show serialization to be OK. Turn debugging on and rerun.

     
  • MIbold
    MIbold
    2011-12-14

    I would really love to debug .... but AFAICS it should work to generate *.log files when compiling with -DDEBUG

    So I compiled with
    make[1]: Entering directory `/tmp/tst'
    g++ -c -pipe -g -Wall -W -D_REENTRANT -DDEBUG -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/default -I. -I/usr/include/QtCore -I/usr/include -Idebug -o debug/test-header.o test-header.cpp
    g++ -c -pipe -g -Wall -W -D_REENTRANT -DDEBUG -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/default -I. -I/usr/include/QtCore -I/usr/include -Idebug -o debug/soapC.o soapC.cpp
    soapC.cpp:1625:28: warning: unused parameter 'soap'
    soapC.cpp:1630:28: warning: unused parameter 'soap'
    soapC.cpp:1630:28: warning: unused parameter 'a'
    soapC.cpp:1634:27: warning: unused parameter 'type'
    g++ -c -pipe -g -Wall -W -D_REENTRANT -DDEBUG -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/default -I. -I/usr/include/QtCore -I/usr/include -Idebug -o debug/soapService.o soapService.cpp
    g++ -o server.exe debug/test-header.o debug/soapC.o debug/soapService.o -L/usr/lib -lgsoap++ -lQtCore -L/usr/lib -lpthread
    make[1]: Leaving directory `/tmp/tst'

    But there is _no_ *.log generated. I even enabled the debug define in /usr/local/include/stdsoap2.h

    I am on a Linux 2.6.38.8-PASU3-v2 #1 SMP PREEMPT Wed Oct 5 11:06:27 CEST 2011 i686 i686 i386 GNU/Linux
    wich is an own build kernel - kernel frequency is 200Hz, one CPU blocked.

     
  • MIbold
    MIbold
    2011-12-14

    • status: pending --> open
     
  • MIbold
    MIbold
    2011-12-14

    Ok ... the Problem (Debugging as well as problems with special std::vector sizes remains even under a standard openSuse 11.4)

    All on a local machine (server and client)

    Client output
    --------------------
    mibold@linux-l5w6:~/tst/client> ./clientDBG
    Ask for 1 values
    Received 1 values
    Ask for 2 values
    Received 2 values
    Ask for 3 values
    Received 3 values
    Ask for 4 values
    Received 4 values
    Ask for 5 values
    Received 5 values
    Ask for 6 values
    SOAP 1.1 fault: SOAP-ENV:Client [no subcode]
    "HTTP/1.1 200 OK"
    Detail: connect failed in tcp_connect()
    Ask for 7 values
    Received 7 values
    Ask for 8 values
    SOAP 1.1 fault: SOAP-ENV:Client [no subcode]
    "TCP/UDP IP error 0"
    Detail: get host by name failed in tcp_connect()
    Ask for 9 values
    SOAP 1.1 fault: SOAP-ENV:Client [no subcode]
    "TCP/UDP IP error 0"
    Detail: get host by name failed in tcp_connect()
    Ask for 10 values
    Received 10 values

    Server output
    ----------------------
    mibold@linux-l5w6:~/tst> ./serverDBG.exe
    Server startup and will try to run on port 1337
    test-header.cpp getBoolValues 32
    Somebody wants 1 values...
    test-header.cpp getBoolValues 32
    Somebody wants 2 values...
    test-header.cpp getBoolValues 32
    Somebody wants 3 values...
    test-header.cpp getBoolValues 32
    Somebody wants 4 values...
    test-header.cpp getBoolValues 32
    Somebody wants 5 values...
    test-header.cpp getBoolValues 32
    Somebody wants 7 values...
    test-header.cpp getBoolValues 32
    Somebody wants 10 values...
    ^C

     
  • The attached code does not decompress. We also added tests to our unit and regression tests to make sure everything works as expected and we were not able to reproduce this problem with the 2.8.6 release.

     
    • status: open --> closed-rejected