Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Execution of query hangs up/freezes [DNET440] #436

Closed
firebird-automations opened this issue Jun 21, 2012 · 7 comments
Closed

Execution of query hangs up/freezes [DNET440] #436

firebird-automations opened this issue Jun 21, 2012 · 7 comments

Comments

@firebird-automations
Copy link

Submitted by: @cincuranet

Relate to DNET304

//From mailing list.

The query is:

update ecc$rejestr set wartosc0=@wartosc, typklucza=@typklucza where
klucz=@klucz and induzytkownik=@induzytkownik

The params are:

@klucz = PersonLocator_mainGridControl
@induzytkownik = 1
@typklucza = 0
@wartosc =
db://(2813f4c2-87c7-4c3d-8175-d0e03c88d516)//PersonLocator_mainGridControl.x
ml

A DDL of ECC$REJESTR:

CREATE TABLE ECC$REJESTR
(
KLUCZ STRING50_FIELD DEFAULT '' NOT NULL,
INDUZYTKOWNIK BIGINT_FIELD NOT NULL,
TYPKLUCZA SHORT_FIELD DEFAULT 0,
WARTOSC0 STRING250_FIELD,
WARTOSC1 INTEGER_FIELD,
WARTOSC2 FLOAT_FIELD,
WARTOSC3 MONEY_FIELD,
WARTOSC4 TIMESTAMP_FIELD,
CONSTRAINT PK_ECC$REJESTR PRIMARY KEY (KLUCZ,INDUZYTKOWNIK)
);

ALTER TABLE ECC$REJESTR ADD
FOREIGN KEY (INDUZYTKOWNIK) REFERENCES ECC$UZYTKOWNICY (ID);

===

A program simply hangs up/freezes and I have to break debugging. Then I get this call stack:

            \[Managed to Native Transition\]               

            System\.dll\!System\.Net\.Sockets\.Socket\.Receive\(byte\[\] buffer = \{byte\[4096\]\}, int offset = 0, int size, System\.Net\.Sockets\.SocketFlags socketFlags = None, out System\.Net\.Sockets\.SocketError errorCode = Success\) \+ 0xc4 bytes    

            System\.dll\!System\.Net\.Sockets\.Socket\.Receive\(byte\[\] buffer, int offset, int size, System\.Net\.Sockets\.SocketFlags socketFlags\) \+ 0x20 bytes           

            System\.dll\!System\.Net\.Sockets\.NetworkStream\.Read\(byte\[\] buffer, int offset, int size\) \+ 0x84 bytes 

            mscorlib\.dll\!System\.IO\.BufferedStream\.Read\(byte\[\] array = \{byte\[8\]\}, int offset = 0, int count = 4\) \+ 0xc4 bytes                

            FirebirdSql\.Data\.FirebirdClient\.dll\!FirebirdSql\.Data\.Client\.Managed\.Version10\.XdrStream\.Read\(byte\[\] buffer, int offset, int count\) \+ 0x2e bytes  

            FirebirdSql\.Data\.FirebirdClient\.dll\!FirebirdSql\.Data\.Client\.Managed\.Version10\.XdrStream\.ReadNextOperation\(\) \+ 0x17 bytes          

            FirebirdSql\.Data\.FirebirdClient\.dll\!FirebirdSql\.Data\.Client\.Managed\.Version10\.XdrStream\.ReadOperation\(\) \+ 0x16 bytes    

            FirebirdSql\.Data\.FirebirdClient\.dll\!FirebirdSql\.Data\.Client\.Managed\.Version11\.GdsDatabase\.ReadOperation\(\) \+ 0x19 bytes          

            FirebirdSql\.Data\.FirebirdClient\.dll\!FirebirdSql\.Data\.Client\.Managed\.Version10\.GdsDatabase\.ReadSingleResponse\(\) \+ 0x11 bytes      

            FirebirdSql\.Data\.FirebirdClient\.dll\!FirebirdSql\.Data\.Client\.Managed\.Version10\.GdsDatabase\.ReadResponse\(\) \+ 0x11 bytes    

             FirebirdSql\.Data\.FirebirdClient\.dll\!FirebirdSql\.Data\.Client\.Managed\.Version10\.GdsDatabase\.ReadGenericResponse\(\) \+ 0xc bytes         

            FirebirdSql\.Data\.FirebirdClient\.dll\!FirebirdSql\.Data\.Client\.Managed\.Version11\.GdsStatement\.Execute\(\) \+ 0x11d bytes    

             FirebirdSql\.Data\.FirebirdClient\.dll\!FirebirdSql\.Data\.FirebirdClient\.FbCommand\.ExecuteCommand\(System\.Data\.CommandBehavior behavior, bool returnsSet\) \+ 0xc7 bytes              

            FirebirdSql\.Data\.FirebirdClient\.dll\!FirebirdSql\.Data\.FirebirdClient\.FbCommand\.ExecuteNonQuery\(\) \+ 0x40 bytes             
@firebird-automations
Copy link
Author

Modified by: @cincuranet

Link: This issue relate to DNET304 [ DNET304 ]

@firebird-automations
Copy link
Author

Modified by: @cincuranet

status: Open [ 1 ] => Closed [ 6 ]

resolution: Cannot Reproduce [ 5 ]

@hhfiddelke
Copy link

I currently can reproduce this error with the Net provider under Open Suse 15.5. The Connection is running over a 50MBit VPN. One problem could be the MTU- Size of the Ethernet Frame it seems that packet fragmenting could be a problem. Reducing the MTU-Size of the client to the MTU-Size of the VPN seems to fix the hang.

Another issue i had, (probably also MTU) was a table with many fields (485) calling the Reader hang for several minutes (Command Timeout=20) (Flamerobin on the same machine worked (but slow) to browse the two records)

@cincuranet
Copy link
Member

Do you have repro case?

@hhfiddelke
Copy link

Unfortunately, these MTU- problems aren't easy to repro. In my case i had two computers (OpenSuse 15.5 and SuSe SLES15) both with MTU 1500 and two routers, one with MTU 1500 and the other with MTU 1400 on the internal network side.
Perhaps it is easier to test if you test it with a client with MTU 1500 and server with MTU 1400 for the write case and the opposite way for the read case.
In the read case i have a large record the is returned to the client in the write case i am inserting a record with a larger JSON into a BLOB. Both should achieve that more than one network- packet is needed to transfer.
After changing the MTU on the client- side to 1400, the database- write worked.
The result is (nearly) the same after several minutes (not FB- Timeouts), an exception with ("Could not read data from connection" or "Could not write data to connection, Could not read data from connection")

@cincuranet
Copy link
Member

Sorry, unless I have a somewhat reliable repro, there's not much I can do.

@hhfiddelke
Copy link

hhfiddelke commented Jun 28, 2023

I unfortunately have to agree 😢
It was only meant to be a hint where to search

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants