Conquest 1.5.0 bug list
-
-
Hi,
I think this is the same bug related to PDU size (only on Linux) that I am addressing above. Since the C-GET works on the same association it is using another PDU size. Can you see in the log what PDU size is used for C-GET, and share the orginal and corrupted image.
Marcel
-
And can you add the printf statement at socket:send as in this post?
I am curious if send returns failure.
Marcel
-
Hi,
What is the C-GET client?
Marcel
-
Tried to replicate on Ubuntu 19 with conquest 1.5.0 on windows as C-GET client. No luck.
Marcel
-
Hi I really need the output of this code in socket.cxx to debug this issue:
BOOL Socket :: SendBinary(BYTE *s, UINT count)
{
if ( !Connected)
return ( 0 );
int a;
if(a=send ( Socketfd, (char *) s, count, 0)<0)
{
// fprintf(stderr, "SOCKET END ERROR: %d\n", GetLastError());
}
printf("Send: %d %d\n", count, a);
return ( TRUE );
}
marcel
-
Sorry i dont have enough time for testing, in few days will try to do.
-
Also,
I have been trying to reproduce it locally so far with no luck.
Marcel
-
Hi,
I set up a real Debian10 PC, and installed conquest 1.5.0. When I use conquest 1.5.0a on windows PC with a PDU side of 32768 or 65536 (changed PDU size in pdu.cxx) and run a scripted C-GET I do not get any corruption. Maybe a needs a Linux-Linux connection to give the error. I will try that next.
Marcel
-
Ok,
I tried
move ubuntu18 --> debian10
move debian10 --> ubuntu18
move windows8 --> ubuntu18
move windows8 --> debian10
move ubuntu18 --> windows8
move debian10 --> ubuntu18
and the same permutations with c-get, all with image original1
No corruption ever.
Marcel
-
I think I found it. There is a subtle difference between send() on Windows and Linux. Try this code in socket.cxx:
CodeThis should solve the bug - code inspired by luasocket!
Marcel
-
Hi Marcel, i'm just curious, when i want to start using virtual/gateway on my oracle linux, should i also recompile with upper code change (critical one?) or it's just for userpivoglot case only?
-
Hi,
we are in a testing situation. If you have not encountered data corruption I would not yet integrate above change yet. My problem is that I cannot reproduce the issue on my systems so I cannot properly test the code. I have used the same Linux version so the behavior may be affected by things like network drivers.
The original code (unchanged from the ancient UCDavis library) just uses send() and assumes it will not fail, which is true for Windows. In Linux, the size of packets sent is generally kept small such that there is enough buffer space for send() not to fail - on most systems. With C-GET packets sent are large and therefore it fails more frequently. I next plan to increase packet sizes on Linux to the same size as on Windows and add the code, hopefully fixing the issue and improve performance.
But I would like to get feedback from the two users reporting data corruption first.
Marcel
-
Hi Guys,
please help me out by testing the update in #31 to see if it fixes the data corruption.
I have just tested with conquest 1.5.0 on an OdroidHC1 in other country, raspberry Pi 3b on bad wifi, even my old raspberry Pi 1b on ethernet; nothing reproduces your issue. So to solve it I desperately need your help! I cannot fix what I cannot reproduce.
Thanks,
Marcel
-
Hi,
I updated socket.cxx on Github that should fix the issue.
Marcel
-
Thx very much
Participate now!
Don’t have an account yet? Register yourself now and be a part of our community!