Version 10.0.0.1559 and Delphi 11.3

Hi

I just upgraded to Delphi 11.3 and last version (.1559) of suite RO

I recompiled my app but now in some functions reaise this exception:

Error reading parameter Result: Stream read error: Invalid string length “1560669”’

The same source code application with remobjects .1553 and Delphi 11.2 work fine without problems.

Do you have any pointers?

Thank you very much

Claudio

Hi,

I installed version .1553 in Delphi 11.3 and now no more exceptions are raised.

At this point version .1559 has a problem.

Unfortunately at this moment I’m full but let me know if I can help you in any way

Claudio

1 Like

Hi,

I can’t reproduce this issue with the MegaDemo sample.

Can you create a simple testcase that reproduces this case, pls?

You can drop it to support@ for keeping privacy

Hi EvgenyK

it is not easy to extrapolate a test case from the app as it is very large and the error occurs on a logic where a series of operations are performed in the background

But I found that:

the error occurs when opening a TDAMemeDataTable which contains a blob field. This field has a size of about 1.5 Mb. If I empty the field, the error no longer occurs (database Oracle 11 and UniDAC)

The error is raised in the uROStreamSerializer unit in the TROStreamSerializer.ReadBinary method when check this:

if l_size > fStream.Size then RaiseError(err_InvalidStringLength, [l_size]);

l_size is greater of fStream.Size.

Another operation after open the datatable is, in asynchronous on a separate thread, the reception of an array of TROComplexTypes which return a series of images

The same application in RO .1553 work without problems.

I don’t know if you get any more information with this. Tomorrow, if you need, I’ll do some more specific tests

Best regards

Claudio

Hi,

can you send “broken” stream to support@ for investigation, pls?

Hi EvgenyK

here two screenshots for the same operation:

.1553 version:

.1559 version

l_size is the same but fStream.size no.

I try to save two stream and send to you

Thank you very much

Claudio

Hi EvgenyK

sended!

Thank you very much!!

Claudio

1 Like

Hi,

interesting.
if I compare both streams as binary - stream from .1559 is just truncated.
what server/client channel you are using?

Hi

Server: TROHTTPServer
Client: TROWinInetHTTPChannel

Claudio

Hi,

What mode of TROHTTPServer are you using - http or https?
if you temporary replace this server with any other (e.g. Indy- or Synapse-based), behavior will be reproduced?

what event you are used for saving stream? I don’t see RO107 signature …

I can recommend to use

  • server-side.TROBINMessage.OnWriteToStream
    or
  • server-side.TROHTTPServer.OnWriteToStream

Hi

Good question!!! In debug http. In production https and WORK!!!. in https everything works fine. Only in http the exception is thrown!

In debug I saved the fStream (unit uROStreamSeerializer method ReadBinary row 810)

TMemoryStream(fStream).SaveToFile('d:\1559.stream');

I try to save server side streams in http and https and send them to you

Thank you very much

Claudio

Hi EvgenyK

I sended the streams saved from the server and the sizes are the same

Hi,

Can you save incoming stream with the BinMessage.OnReadFromStream event on client-side, pls?

Sent :wink:

Hi,

can you save stream in the TROWinInetHttpChannel.OnReceiveStream event, pls?

Sent :wink: