DIMSE Failed to send message\n0006:031d TCP I/O Error (No error) occurred in routine: writeDataPDU

All other questions regarding DCMTK

Moderator: Moderator Team

Message
Author
angad
Posts: 112
Joined: Thu, 2010-02-18, 09:54

DIMSE Failed to send message\n0006:031d TCP I/O Error (No error) occurred in routine: writeDataPDU

#1 Post by angad »

Hi All,

Sometimes while pushing the dicom files to any storescp , i get the following error at my scu :

DIMSE Failed to send message\n0006:031d TCP I/O Error (No error) occurred in routine: writeDataPDU

If i push the same image again ,storescu will successfully push the images.

I am assuming that we get this error when someone switched off the scp in between the transaction. I am also able to reproduce the same. While pushing a dataset of 1000 images, i suddenly switched off the storescp, i get the same error.

Error code returned is 526 , module returned is 6.

What is this error code 526? I want complete list of ofcondition return codes. I tried to find the same in dcmtk code base but i am not able to find it.

Basically i want to achieve is :

If scu has to push 1000 images in one transaction and scp is damn slow(taking around 30 seconds to recieve one image). After successfully pushing 900 images, some one switch off the scp, then i want to wait for some time and after that i want to push remaining 100 images. I don't want to start that transaction of 1000 images from beginning. To achieve this i want to put the exact ofcondition return code check in my codebase.

It will be great help if someone can tell me what exact error code we will get if scp gets down in between the transaction. Also i want the complete cond.code() list.

Thanks in advance!!!!

Waiting for reply.

Thanks,
Angad Nath

J. Riesmeier
DCMTK Developer
Posts: 2503
Joined: Tue, 2011-05-03, 14:38
Location: Oldenburg, Germany
Contact:

#2 Post by J. Riesmeier »

0x031d is defined as DULC_TCPIOERROR in dcmnet/include/dcmtk/dcmnet/cond.h. The strange output "TCP I/O Error (No error)" is a result from the fact the Windows sometimes does not set the global variable "errno" appropriately. This is a known issue, which will be solved as time permits.

Btw, module number 6 means "dcmnet" (see dcmdata/include/dcmtk/dcmdata/dcerror.h).

angad
Posts: 112
Joined: Thu, 2010-02-18, 09:54

#3 Post by angad »

Hi,

Thanks alot for your quick reply. So can i assume that if i get "DIMSE Failed to send message\n0006:031d TCP I/O Error........" error it means that SCP is down in between of the transaction.

Also i am getting ofcondition code as 526 if i get above error. So can i play on this number(526). How you guys are calculating the code as 526. There must be some list of all the ofcondition return types. I am not able to find it in dcmtk forum

Thanks,
Angad Nath

J. Riesmeier
DCMTK Developer
Posts: 2503
Joined: Tue, 2011-05-03, 14:38
Location: Oldenburg, Germany
Contact:

#4 Post by J. Riesmeier »

As I said, the dcmnet error codes are defined in dcmnet/include/dcmtk/dcmnet/cond.h :-)

angad
Posts: 112
Joined: Thu, 2010-02-18, 09:54

#5 Post by angad »

Thanks alot.

Angad

takeos
Posts: 16
Joined: Thu, 2008-12-18, 03:26
Location: Japan

Re: DIMSE Failed to send message\n0006:031d TCP I/O Error (N

#6 Post by takeos »

Today I got this error with DCMTK 3.6.1 and it's too bad this routine doesn't provide any details about the error on Windows platform. I know it's not easy to fix this, since you need to call platform-dependent API to get an error code (http://msdn.microsoft.com/en-us/library ... s.85).aspx) but I hope you'll give it higher priority.

Thanks,
takeos

J. Riesmeier
DCMTK Developer
Posts: 2503
Joined: Tue, 2011-05-03, 14:38
Location: Oldenburg, Germany
Contact:

Re: DIMSE Failed to send message\n0006:031d TCP I/O Error (N

#7 Post by J. Riesmeier »

Thanks for the reminder. This issue has already high priority and should be fixed for the next DCMTK release. The internal bug ID is #393 (for your reference).

takeos
Posts: 16
Joined: Thu, 2008-12-18, 03:26
Location: Japan

Re: DIMSE Failed to send message\n0006:031d TCP I/O Error (N

#8 Post by takeos »

Thanks a lot! It's good to hear that! :D

feldman_joel
Posts: 14
Joined: Fri, 2013-01-04, 16:23

Re: DIMSE Failed to send message\n0006:031d TCP I/O Error (N

#9 Post by feldman_joel »

greetings. has there been any resolution to internal bug id #393? i recently compiled build dcmtk-3.6.1_20140617 using vc 2008 with both 32 bit and 64 bit formats and the storescu utility experiences the 0006:020e and 0006:031d error messages when trying to send large files (the one i am trying to send is 1.5 GB) . here is what is produced:

Code: Select all

I: checking input files ...
I: Requesting Association
I: Association Accepted (Max Send PDV: 16372)
I: Sending file: C:\1.dcm
I: Converting transfer syntax: Little Endian Implicit -> Little Endian Explicit
I: Sending Store Request (MsgID 1, BT)
XMIT: ...........E: Store Failed, file: C:\1.dcm:
E: 0006:020e DIMSE Failed to send message
E: 0006:031d TCP I/O Error (No error) occurred in routine: writeDataPDU
E: Store SCU Failed: 0006:020e DIMSE Failed to send message
E: 0006:031d TCP I/O Error (No error) occurred in routine: writeDataPDU
I: Aborting Association
E: Association Abort Failed: 0006:031d TCP I/O Error (No error) occurred in routine: sendAbortTCP
i am having the storescu send to the storescp and this is the error generated by storescp:

Code: Select all

W: DIMSE Warning: (DICOMTEST,ANY-SCP): DIMSE receiveDataSetInMemory: dset->read() Failed (Virtual Memory exhausted)
W: closing unflushed DcmInputBufferStream, loss of data!
E: Store SCP Failed: 0006:020d DIMSE Failed to receive messageE: DIMSE failure (aborting association): 0006:020d DIMSE Failed to receive message
is there a known file size limit? please let me know if there are any fixes in place or offer any suggestions.

Michael Onken
DCMTK Developer
Posts: 2049
Joined: Fri, 2004-11-05, 13:47
Location: Oldenburg, Germany
Contact:

Re: DIMSE Failed to send message\n0006:031d TCP I/O Error (N

#10 Post by Michael Onken »

Hi,

I never noticed such a limitation. The bug that you mentioned (393) is only about the error message produced, not about functionality (and, no, it's not yet fixed ;).

Make sure you use the 64 bit binaries of storesu and storescp to be 100% sure memory is not an issue.

It might be worth trying out storescp's bit preserving mode that directly writes to disk and does not receive the whole file in memory (--bit-preserving), which should always work.

Best,
Michael

P.S: I suppose you have enough RAM installed in your computer :)

feldman_joel
Posts: 14
Joined: Fri, 2013-01-04, 16:23

Re: DIMSE Failed to send message\n0006:031d TCP I/O Error (N

#11 Post by feldman_joel »

thank you for a prompt response. i tried sending the 1.5 gb file using storescu to storescp in both 32 bit mode and 64 bit mode. you are correct in that the problem was not with the storescu, but rather i needed to set the bit preserving flag on the storescp. once i did that, i was able to complete the transmission. my system has 8 gb ram, so i was a bit surprised this was the problem. my application uses DIMSE_receiveDataSetInMemory which is failing due to lack of memory so i assume i need to migrate to DIMSE_receiveDataSetInFile to get large files to work.

Michael Onken
DCMTK Developer
Posts: 2049
Joined: Fri, 2004-11-05, 13:47
Location: Oldenburg, Germany
Contact:

Re: DIMSE Failed to send message\n0006:031d TCP I/O Error (N

#12 Post by Michael Onken »

Hi,

I still find it very weird it storescp does not receive it in "normal" mode. That should work, and worked for me before some months ago when I last tested with a huge video file. storescp does not "pump up" your file in memory, so it never should take more than the 1,5 GB in memory it had before*. You may watch the storescp process during operation and see how much memory it takes.

Hm, just to be sure: The original file with 1,5 GB is already uncompressed e.g. it has the Transfer Syntax Little Endian Implicit that is noted in the storescu log, right?

Best regards,
Michael

feldman_joel
Posts: 14
Joined: Fri, 2013-01-04, 16:23

Re: DIMSE Failed to send message\n0006:031d TCP I/O Error (N

#13 Post by feldman_joel »

correct. the original file is 1.5 gb, uncompressed and has transfer syntax little endian implicit as noted in storescu log. the storescp consumes the 1.5 gb when receiving the image. i started with 4.8 gb in use and when receiving my system went to 7.0 gb in use (out of 8 gb available). i turned off the bit preserving flag and got it to work as long as i had enough resources. note that the storescu would not work in 32 bit mode with the 1.5 gb file. i also still have problems with my own application that uses the call DIMSE_receiveDataSetInMemory to receive the 1.5 gb file even though my system has 32 gb of ram it can not receive the large filesize (DIMSE_NODATAAVAILABLE / message code = 525).

feldman_joel
Posts: 14
Joined: Fri, 2013-01-04, 16:23

Re: DIMSE Failed to send message\n0006:031d TCP I/O Error (N

#14 Post by feldman_joel »

i would really like to use the call DIMSE_receiveDataSetInMemory rather than DIMSE_receiveDataSetInFile. is there a way to allocate more memory for DIMSE_receiveDataSetInMemory so that I can receive a 1.5 gm file? like i said, my system has 8 gb ram installed and 3 gb available when my application runs. i would think that i have enough memory but the error message states that i am out of virtual memory.

SerV
Posts: 4
Joined: Tue, 2015-07-21, 13:12

Re: DIMSE Failed to send message\n0006:031d TCP I/O Error (N

#15 Post by SerV »

Hi, I have the same problem. I develop DICOM print. I use for it dcmtk 3.6.1 and for test dcmprscp. Film session is created successfully. But when I create film box DIMSE_receiveCommand returns

Code: Select all

DIMSE Failed to receive message 
0006:020f DIMSE: Command PDV Expected
dcmprscp returns

Code: Select all

T: DIMSE sendDcmDataset: sending 144 bytes
T: DUL  FSM Table: State: 6 Event: 8
T: DUL  Event:  P-DATA request primitive
T: DUL  Action: DT 1 Send P DATA PDU
T: DIMSE sendDcmDataset: sending 380 bytes
T: DUL  FSM Table: State: 6 Event: 8
T: DUL  Event:  P-DATA request primitive
T: DUL  Action: DT 1 Send P DATA PDU
W: DIMSE Failure (aborting association):
W: 0006:020e DIMSE Failed to send message
W: 0006:031d TCP I/O Error (No error) occurred in routine: writeDataPDU
T: DUL  FSM Table: State: 6 Event: 14
T: DUL  Event:  A-ABORT request primitive
T: DUL  Action: AA 1 Send A ABORT PDU
W: Cannot abort association:
W: 0006:031d TCP I/O Error (No error) occurred in routine: sendAbortTCP
Please tell me what can be wrong.

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest