Orthanc on Ubuntu 22.04 LTS crashing

Dear all,

I have an Ubuntu 22.04 machine over which Orthanc 1.10 was installed from the main repositories. For some time, Orthanc was working fine, but as soon as I patched the OS with the latest patches, Orthanc started crashing when uploading any data, with the error “free(): double free detected in tcache 2”.

Note that I have been able to re-create the problem on three machines, and it is clear that any DICOM file will crash Orthanc.

Is anyone experiencing this problem, or does anyone have an idea how to solve it?

Thanks in advance.

Following is the tail of the log created by Orthanc before the crash

T1105 17:49:38.089855 HttpServer.cpp:1168] (http) HTTP header: [host]: [127.0.0.1:8042]
T1105 17:49:38.089904 HttpServer.cpp:1168] (http) HTTP header: [connection]: [keep-alive]
T1105 17:49:38.089921 HttpServer.cpp:1168] (http) HTTP header: [content-length]: [1159795]
T1105 17:49:38.089933 HttpServer.cpp:1168] (http) HTTP header: [sec-ch-ua-platform]: ["Linux"]
T1105 17:49:38.089949 HttpServer.cpp:1168] (http) HTTP header: [x-requested-with]: [XMLHttpRequest]
T1105 17:49:38.089966 HttpServer.cpp:1168] (http) HTTP header: [user-agent]: [Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36]
T1105 17:49:38.089981 HttpServer.cpp:1168] (http) HTTP header: [accept]: [*/*]
T1105 17:49:38.089997 HttpServer.cpp:1168] (http) HTTP header: [sec-ch-ua]: ["Not;A=Brand";v="99", "Google Chrome";v="139", "Chromium";v="139"]
T1105 17:49:38.090012 HttpServer.cpp:1168] (http) HTTP header: [content-type]: [multipart/form-data; boundary=----WebKitFormBoundaryJbZAkAyyfsXjtLBe]
T1105 17:49:38.090036 HttpServer.cpp:1168] (http) HTTP header: [sec-ch-ua-mobile]: [?0]
T1105 17:49:38.090052 HttpServer.cpp:1168] (http) HTTP header: [origin]: [http://127.0.0.1:8042]
T1105 17:49:38.090068 HttpServer.cpp:1168] (http) HTTP header: [sec-fetch-site]: [same-origin]
T1105 17:49:38.090080 HttpServer.cpp:1168] (http) HTTP header: [sec-fetch-mode]: [cors]
T1105 17:49:38.090102 HttpServer.cpp:1168] (http) HTTP header: [sec-fetch-dest]: [empty]
T1105 17:49:38.090118 HttpServer.cpp:1168] (http) HTTP header: [referer]: [http://127.0.0.1:8042/app/explorer.html]
T1105 17:49:38.090133 HttpServer.cpp:1168] (http) HTTP header: [accept-encoding]: [gzip, deflate, br, zstd]
T1105 17:49:38.090149 HttpServer.cpp:1168] (http) HTTP header: [accept-language]: [en-GB,en-US;q=0.9,en;q=0.8]
I1105 17:49:38.090176 HttpServer.cpp:1244] (http) POST /instances
T1105 17:49:38.090619 HttpServer.cpp:1168] (http) HTTP header: [host]: [127.0.0.1:8042]
T1105 17:49:38.090645 HttpServer.cpp:1168] (http) HTTP header: [connection]: [keep-alive]
T1105 17:49:38.090657 HttpServer.cpp:1168] (http) HTTP header: [content-length]: [1159795]
T1105 17:49:38.090669 HttpServer.cpp:1168] (http) HTTP header: [sec-ch-ua-platform]: ["Linux"]
T1105 17:49:38.090680 HttpServer.cpp:1168] (http) HTTP header: [x-requested-with]: [XMLHttpRequest]
T1105 17:49:38.090692 HttpServer.cpp:1168] (http) HTTP header: [user-agent]: [Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36]
T1105 17:49:38.090703 HttpServer.cpp:1168] (http) HTTP header: [accept]: [*/*]
T1105 17:49:38.090716 HttpServer.cpp:1168] (http) HTTP header: [sec-ch-ua]: ["Not;A=Brand";v="99", "Google Chrome";v="139", "Chromium";v="139"]
T1105 17:49:38.090728 HttpServer.cpp:1168] (http) HTTP header: [content-type]: [multipart/form-data; boundary=----WebKitFormBoundaryBCvPdnSd0o6cBQr4]
T1105 17:49:38.090740 HttpServer.cpp:1168] (http) HTTP header: [sec-ch-ua-mobile]: [?0]
T1105 17:49:38.090751 HttpServer.cpp:1168] (http) HTTP header: [origin]: [http://127.0.0.1:8042]
T1105 17:49:38.090762 HttpServer.cpp:1168] (http) HTTP header: [sec-fetch-site]: [same-origin]
T1105 17:49:38.090774 HttpServer.cpp:1168] (http) HTTP header: [sec-fetch-mode]: [cors]
T1105 17:49:38.090785 HttpServer.cpp:1168] (http) HTTP header: [sec-fetch-dest]: [empty]
T1105 17:49:38.090797 HttpServer.cpp:1168] (http) HTTP header: [referer]: [http://127.0.0.1:8042/app/explorer.html]
T1105 17:49:38.090809 HttpServer.cpp:1168] (http) HTTP header: [accept-encoding]: [gzip, deflate, br, zstd]
T1105 17:49:38.090820 HttpServer.cpp:1168] (http) HTTP header: [accept-language]: [en-GB,en-US;q=0.9,en;q=0.8]
I1105 17:49:38.090834 HttpServer.cpp:1244] (http) POST /instances
I1105 17:49:38.096234 OrthancRestApi.cpp:162] (http) Receiving a DICOM file of 1159592 bytes through HTTP
I1105 17:49:38.096660 OrthancRestApi.cpp:162] (http) Receiving a DICOM file of 1159592 bytes through HTTP
free(): double free detected in tcache 2
Aborted (core dumped)

Hello,

I think this error is very similar to this Ubuntu bug report.

There are chances that this is an issue with the DCMTK package of Ubuntu, not with Orthanc. To confirm this, try to start the following command in one terminal:

$ cd /tmp
$ storescp 2000

Then, try to send a DICOM instance from another terminal:

$ storescu localhost 2000 sample.dcm

If one of these commands crashes, this is definitely an issue in the DCMTK packages. For reference, I know that the same issue occurs on Ubuntu 20.04 and can be solved by typing:

$ sudo apt install dcmtk=3.6.4-2.1build2 libdcmtk-dev=3.6.4-2.1build2 libdcmtk14=3.6.4-2.1build2

Regards,
Sébastien-

A big thanks for pointing out the dcmtk library. Actually testing with storescu and storescp, nothing came out as they did not crash, but Orthanc now works after downgrading libdcmtk16 with version 3.6.6-5ubuntu0.1~esm2 to version 3.6.6 5. The bug seems to have lurked in the ESM packages. I have reported my findings on the bug report you mentioned.

1 Like