Crash on receipt of Series

Hi, I have a situation where Orthanc crashes on receipt of a series and cannot be restarted without being given a clean database.

I can replicate and the crash happens on the same series every time. Unfortunately this series is not something have, it’s being sent to us by one of our users, and I only have Orthanc as an interface to retrieve it, and Orthanc crashes on receipt.

I have started Orthanc in verbose mode, this is a Windows install, so started with:

"C:\Program Files\Orthanc Server\Orthanc.exe" --verbose "C:\Program Files\Orthanc Server\Configuration" > C:\Temp\Orthanc.log 2<&1

as per:
https://orthanc.uclouvain.be/book/faq/log.html#under-windows

The Verbose log output doesn’t give much:

I0209 16:38:50.771441 OrthancPlugins.cpp:3172] (plugins)| Plugin making REST GET call on URI /plugins/worklists (built-in API)
10209 16:38:50.771441 OrthancPlugins.cpp:3172] (plugins) Plugin making REST GET call on URI /plugins/wsi (built-in API)
10209 16:38:50.771441 PluginsManager.cpp:161] (plugins) Started the OHIF preload thread
10209 16:38:50.771441 OrthancPlugins.cpp:3172] (plugins) Plugin making REST GET call on URI /plugins/dicom-web (built-in API)
I0209 16:38:50.771441 LuaScripting.cpp:868] Starting the Lua engine
I0209 16:38:50.773438 DicomServer.cpp:64] (dicom) DICOM server started
10209 16:38:50.785600 CommandDispatcher.cpp:333] (dicom) Association Received From AET PBAET on IP 10.102.68.12
10209 16:38:50.785600 main.cpp:318] Incoming connection from AET PBAET on IP 10.102.68.12, calling AET HXNWPR
10209 16:38:50.786599 CommandDispatcher.cpp:666] (dicom) Association Acknowledged (Max Send PDV: 16366) to AET PBAET on IP 10.102.68.12
I0209 16:38:50.805448 main.cpp:353] Incoming Store request from AET PBAET on IP 10.102.68.12, calling AET HXNWPR

The log output terminates here, and the Orthanc process also terminates from cmd (with no output).

Output of /system

{
    "ApiVersion": 21,
    "CheckRevisions": false,
    "DatabaseBackendPlugin": "C:/Program Files\\Orthanc Server\\Plugins\\OrthancPostgreSQLIndex-5.1.dll",
    "DatabaseServerIdentifier": "Orthanc1",
    "DatabaseVersion": 6,
    "DicomAet": "HEXEDGEPRIME",
    "DicomPort": 104,
    "HasLabels": true,
    "HttpPort": 8042,
    "IngestTranscoding": "1.2.840.10008.1.2",
    "IsHttpServerSecure": true,
    "MainDicomTags": {
        "Instance": "0008,0005;0008,0008;0008,0012;0008,0013;0008,0016;0008,0018;0008,0023;0008,0033;0020,0012;0020,0013;0020,0032;0020,0037;0020,0052;0020,0100;0020,4000;0028,0008;0028,0010;0028,0011;0028,0030;0028,0100;0054,1330",
        "Patient": "0010,0010;0010,0020;0010,0030;0010,0040;0010,1000",
        "Series": "0008,0021;0008,0031;0008,0060;0008,0070;0008,1010;0008,103e;0008,1070;0018,0010;0018,0015;0018,0024;0018,1030;0018,1090;0018,1400;0020,000e;0020,0011;0020,0037;0020,0105;0020,1002;0040,0254;0054,0081;0054,0101;0054,1000",
        "Study": "0008,0020;0008,0030;0008,0050;0008,0080;0008,0090;0008,1030;0020,000d;0020,0010;0032,1032;0032,1060"
    },
    "MaximumStorageMode": "Recycle",
    "MaximumStorageSize": 100000,
    "Name": "HEXNEWPRIME",
    "OverwriteInstances": false,
    "PluginsEnabled": true,
    "StorageAreaPlugin": null,
    "StorageCompression": false,
    "UserMetadata": {},
    "Version": "1.12.1"
}

Are there any known issues in this area? Anything more I can do to log out what might be happening?

I have requested the specific series from our user, but whether they will be willing to extract it from their PACS and send it to me via another mechanism is to be seen.

Thanks very much in advance for any help/pointers!
Tim

Hi Tim,

No, there are no know issues in this area so that would be very helpful to have access to these files.

If you have any script/plugins enabled, you might want to retry while disabling them to hopefully be able to save the file directly from Orthanc and share the file with us.

Best regards,

Alain.

Thanks Alain, do you have a recommendation as to how I can save the files on receipt before they are processed by Orthanc? Is that something I could do in Lua script?

These series will contain confidential patient information. So I am unable to share them here, but I may be able to seek permission to share them privately.

You can do it with this python script:

import orthanc
import os

counter = 1

def ReceivedInstanceCallback(receivedDicom, origin):
    path = os.path.join('/tmp/', f"{counter}.dcm")
    with open(path, "wb") as f:
        f.write(receivedDicom)
        orthanc.LogInfo(f"saved {path}")
        counter += 1

orthanc.RegisterReceivedInstanceCallback(ReceivedInstanceCallback)