Track analysis process produces a seg. fault

I’m using the official, clean state V2.3.8 (1f4a11a2) and if I try to use TRestTrackAnalysisProcess I get a segmentation fault after being able to process a few events. It is probably related to the changes in https://github.com/rest-for-physics/tracklib/releases/tag/v1.1, although I tested them last week and they worked… I cannot find the problem now.

Any ideas?

Hi Cristina, thanks for posting this issue. Could you provide a minimal RML definition that allows to reproduce the problem?

It should be reproducible with these two config files:
rawToTrack.rml (5.4 KB)
processes.rml (22.2 KB)

Hi @CMargalejo,

after enabling/disabling few processes to investigate the source of the problem, and adding verboseLevel="debug" to TRestDetectorHitsToTrack and TRestDetectorSignalToHits, I get the following error output.

-- Debug : Entering TRestDetectorSignalToHitsProcess::BeginOfEventProcess, Initializing output event...
*******************************************************
 EVENT ID : 0
 TIME : Thu, 01 Jan 1970 00:00:00 +0000 (GMT) +        0 nsec
 SUB-EVENT ID : 0
 Status : OK
*******************************************************
================================================
Signal ID : 4676
Integral : 1867.46
------------------------------------------------
Time : 5.1 Charge : 8.85556
Time : 5.12 Charge : 7.85556
Time : 5.14 Charge : 8.85556
Time : 5.16 Charge : 10.8556
Time : 5.18 Charge : 8.85556
Time : 5.2 Charge : 8.85556
Time : 5.22 Charge : 7.85556
Time : 5.24 Charge : 11.8556
Time : 5.26 Charge : 12.8556
Time : 5.28 Charge : 12.8556
Time : 5.3 Charge : 14.8556
Time : 5.32 Charge : 15.8556
Time : 5.34 Charge : 20.8556
Time : 5.36 Charge : 21.8556
Time : 5.38 Charge : 20.8556
Time : 5.4 Charge : 24.8556
Time : 5.42 Charge : 23.8556
Time : 5.44 Charge : 26.8556
Time : 5.46 Charge : 28.8556
Time : 5.48 Charge : 31.8556
Time : 5.5 Charge : 30.8556
Time : 5.52 Charge : 28.8556
Time : 5.54 Charge : 31.8556
Time : 5.56 Charge : 37.8556
Time : 5.58 Charge : 33.8556
Time : 5.6 Charge : 37.8556
Time : 5.62 Charge : 34.8556
Time : 5.64 Charge : 37.8556
Time : 5.66 Charge : 36.8556
Time : 5.68 Charge : 39.8556
Time : 5.7 Charge : 37.8556
Time : 5.72 Charge : 37.8556
Time : 5.74 Charge : 34.8556
Time : 5.76 Charge : 36.8556
Time : 5.78 Charge : 36.8556
Time : 5.8 Charge : 37.8556
Time : 5.82 Charge : 36.8556
Time : 5.84 Charge : 36.8556
Time : 5.86 Charge : 40.8556
Time : 5.88 Charge : 33.8556
Time : 5.9 Charge : 32.8556
Time : 5.92 Charge : 37.8556
Time : 5.94 Charge : 35.8556
Time : 5.96 Charge : 33.8556
Time : 5.98 Charge : 29.8556
Time : 6 Charge : 33.8556
Time : 6.02 Charge : 35.8556
Time : 6.04 Charge : 31.8556
Time : 6.06 Charge : 32.8556
Time : 6.08 Charge : 30.8556
Time : 6.1 Charge : 33.8556
Time : 6.12 Charge : 27.8556
Time : 6.14 Charge : 30.8556
Time : 6.16 Charge : 26.8556
Time : 6.18 Charge : 28.8556
Time : 6.2 Charge : 27.8556
Time : 6.22 Charge : 24.8556
Time : 6.24 Charge : 26.8556
Time : 6.26 Charge : 24.8556
Time : 6.28 Charge : 24.8556
Time : 6.3 Charge : 21.8556
Time : 6.32 Charge : 22.8556
Time : 6.34 Charge : 22.8556
Time : 6.36 Charge : 16.8556
Time : 6.38 Charge : 14.8556
Time : 6.4 Charge : 14.8556
Time : 6.42 Charge : 16.8556
Time : 6.44 Charge : 17.8556
Time : 6.46 Charge : 13.8556
Time : 6.48 Charge : 10.8556
Time : 6.5 Charge : 11.8556
Time : 6.52 Charge : 7.85556
Time : 6.54 Charge : 9.85556
================================================
================================================
Signal ID : 4732
Integral : 1790.7
------------------------------------------------
Time : 6.88 Charge : 6.1
Time : 6.9 Charge : 8.1
Time : 6.92 Charge : 6.1
Time : 6.94 Charge : 8.1
Time : 6.96 Charge : 8.1
Time : 6.98 Charge : 7.1
Time : 7 Charge : 7.1
Time : 7.02 Charge : 12.1
Time : 7.04 Charge : 8.1
Time : 7.06 Charge : 10.1
Time : 7.08 Charge : 13.1
Time : 7.1 Charge : 13.1
Time : 7.12 Charge : 12.1
Time : 7.14 Charge : 13.1
Time : 7.16 Charge : 10.1
Time : 7.18 Charge : 12.1
Time : 7.2 Charge : 13.1
Time : 7.22 Charge : 16.1
Time : 7.24 Charge : 12.1
Time : 7.26 Charge : 15.1
Time : 7.28 Charge : 16.1
Time : 7.3 Charge : 13.1
Time : 7.32 Charge : 16.1
Time : 7.34 Charge : 16.1
Time : 7.36 Charge : 13.1
Time : 7.38 Charge : 15.1
Time : 7.4 Charge : 16.1
Time : 7.42 Charge : 13.1
Time : 7.44 Charge : 15.1
Time : 7.46 Charge : 14.1
Time : 7.48 Charge : 14.1
Time : 7.5 Charge : 16.1
Time : 7.52 Charge : 15.1
Time : 7.54 Charge : 16.1
Time : 7.56 Charge : 13.1
Time : 7.58 Charge : 12.1
Time : 7.6 Charge : 14.1
Time : 7.62 Charge : 13.1
Time : 7.64 Charge : 13.1
Time : 7.66 Charge : 14.1
Time : 7.68 Charge : 14.1
Time : 7.7 Charge : 11.1
Time : 7.72 Charge : 11.1
Time : 7.74 Charge : 11.1
Time : 7.76 Charge : 12.1
Time : 7.78 Charge : 10.1
Time : 7.8 Charge : 12.1
Time : 7.82 Charge : 13.1
Time : 7.84 Charge : 13.1
Time : 7.86 Charge : 13.1
Time : 7.88 Charge : 14.1
Time : 7.9 Charge : 13.1
Time : 7.92 Charge : 12.1
Time : 7.94 Charge : 13.1
Time : 7.96 Charge : 9.1
Time : 7.98 Charge : 12.1
Time : 8 Charge : 12.1
Time : 8.02 Charge : 8.1
Time : 8.04 Charge : 9.1
Time : 8.06 Charge : 11.1
Time : 8.08 Charge : 10.1
Time : 8.1 Charge : 11.1
Time : 8.12 Charge : 12.1
Time : 8.14 Charge : 12.1
Time : 8.16 Charge : 8.1
Time : 8.18 Charge : 13.1
Time : 8.2 Charge : 9.1
Time : 8.22 Charge : 10.1
Time : 8.24 Charge : 11.1
Time : 8.26 Charge : 9.1
Time : 8.28 Charge : 8.1
Time : 8.3 Charge : 11.1
Time : 8.32 Charge : 9.1
Time : 8.34 Charge : 10.1
Time : 8.36 Charge : 7.1
Time : 8.38 Charge : 6.1
Time : 8.4 Charge : 6.1
Time : 8.42 Charge : 9.1
Time : 8.44 Charge : 8.1
Time : 8.46 Charge : 11.1
Time : 8.48 Charge : 10.1
Time : 8.5 Charge : 9.1
Time : 8.52 Charge : 9.1
Time : 8.54 Charge : 10.1
Time : 8.56 Charge : 8.1
Time : 8.58 Charge : 11.1
Time : 8.6 Charge : 8.1
Time : 8.62 Charge : 7.1
Time : 8.64 Charge : 7.1
Time : 8.66 Charge : 8.1
Time : 8.68 Charge : 6.1
Time : 8.7 Charge : 10.1
Time : 8.9 Charge : 7.1
Time : 8.92 Charge : 10.1
Time : 8.94 Charge : 10.1
Time : 8.96 Charge : 10.1
Time : 8.98 Charge : 12.1
Time : 9 Charge : 11.1
Time : 9.02 Charge : 11.1
Time : 9.04 Charge : 10.1
Time : 9.06 Charge : 11.1
Time : 9.08 Charge : 13.1
Time : 9.1 Charge : 12.1
Time : 9.12 Charge : 11.1
Time : 9.14 Charge : 14.1
Time : 9.16 Charge : 14.1
Time : 9.18 Charge : 12.1
Time : 9.2 Charge : 12.1
Time : 9.22 Charge : 14.1
Time : 9.24 Charge : 10.1
Time : 9.26 Charge : 13.1
Time : 9.28 Charge : 16.1
Time : 9.3 Charge : 15.1
Time : 9.32 Charge : 10.1
Time : 9.34 Charge : 14.1
Time : 9.36 Charge : 13.1
Time : 9.38 Charge : 13.1
Time : 9.4 Charge : 12.1
Time : 9.42 Charge : 14.1
Time : 9.44 Charge : 13.1
Time : 9.46 Charge : 12.1
Time : 9.48 Charge : 14.1
Time : 9.5 Charge : 12.1
Time : 9.52 Charge : 15.1
Time : 9.54 Charge : 14.1
Time : 9.56 Charge : 11.1
Time : 9.58 Charge : 14.1
Time : 9.6 Charge : 15.1
Time : 9.62 Charge : 14.1
Time : 9.64 Charge : 12.1
Time : 9.66 Charge : 17.1
Time : 9.68 Charge : 15.1
Time : 9.7 Charge : 14.1
Time : 9.72 Charge : 13.1
Time : 9.74 Charge : 16.1
Time : 9.76 Charge : 16.1
Time : 9.78 Charge : 15.1
Time : 9.8 Charge : 18.1
Time : 9.82 Charge : 17.1
Time : 9.84 Charge : 16.1
Time : 9.86 Charge : 19.1
Time : 9.88 Charge : 17.1
Time : 9.9 Charge : 18.1
Time : 9.92 Charge : 18.1
Time : 9.94 Charge : 17.1
Time : 9.96 Charge : 19.1
Time : 9.98 Charge : 19.1
================================================
================================================
Signal ID : 4791
Integral : 6945.82
------------------------------------------------
Time : 5.6 Charge : 40.2889
Time : 5.62 Charge : 43.2889
Time : 5.64 Charge : 46.2889
Time : 5.66 Charge : 55.2889
Time : 5.68 Charge : 55.2889
Time : 5.7 Charge : 63.2889
Time : 5.72 Charge : 67.2889
Time : 5.74 Charge : 75.2889
Time : 5.76 Charge : 77.2889
Time : 5.78 Charge : 84.2889
Time : 5.8 Charge : 84.2889
Time : 5.82 Charge : 93.2889
Time : 5.84 Charge : 97.2889
Time : 5.86 Charge : 98.2889
Time : 5.88 Charge : 104.289
Time : 5.9 Charge : 108.289
Time : 5.92 Charge : 111.289
Time : 5.94 Charge : 119.289
Time : 5.96 Charge : 120.289
Time : 5.98 Charge : 120.289
Time : 6 Charge : 122.289
Time : 6.02 Charge : 122.289
Time : 6.04 Charge : 125.289
Time : 6.06 Charge : 123.289
Time : 6.08 Charge : 126.289
Time : 6.1 Charge : 128.289
Time : 6.12 Charge : 128.289
Time : 6.14 Charge : 125.289
Time : 6.16 Charge : 126.289
Time : 6.18 Charge : 125.289
Time : 6.2 Charge : 125.289
Time : 6.22 Charge : 125.289
Time : 6.24 Charge : 124.289
Time : 6.26 Charge : 120.289
Time : 6.28 Charge : 120.289
Time : 6.3 Charge : 118.289
Time : 6.32 Charge : 113.289
Time : 6.34 Charge : 113.289
Time : 6.36 Charge : 107.289
Time : 6.38 Charge : 108.289
Time : 6.4 Charge : 107.289
Time : 6.42 Charge : 102.289
Time : 6.44 Charge : 96.2889
Time : 6.46 Charge : 94.2889
Time : 6.48 Charge : 87.2889
Time : 6.5 Charge : 85.2889
Time : 6.52 Charge : 80.2889
Time : 6.54 Charge : 77.2889
Time : 6.56 Charge : 73.2889
Time : 6.58 Charge : 70.2889
Time : 6.6 Charge : 63.2889
Time : 6.62 Charge : 62.2889
Time : 6.64 Charge : 59.2889
Time : 6.66 Charge : 56.2889
Time : 6.68 Charge : 52.2889
Time : 6.7 Charge : 48.2889
Time : 6.72 Charge : 45.2889
Time : 6.74 Charge : 42.2889
Time : 9.58 Charge : 39.2889
Time : 9.6 Charge : 40.2889
Time : 9.62 Charge : 47.2889
Time : 9.64 Charge : 49.2889
Time : 9.66 Charge : 49.2889
Time : 9.68 Charge : 54.2889
Time : 9.7 Charge : 57.2889
Time : 9.72 Charge : 60.2889
Time : 9.74 Charge : 65.2889
Time : 9.76 Charge : 68.2889
Time : 9.78 Charge : 73.2889
Time : 9.8 Charge : 79.2889
Time : 9.82 Charge : 79.2889
Time : 9.84 Charge : 83.2889
Time : 9.86 Charge : 88.2889
Time : 9.88 Charge : 93.2889
Time : 9.9 Charge : 98.2889
Time : 9.92 Charge : 100.289
Time : 9.94 Charge : 105.289
Time : 9.96 Charge : 105.289
Time : 9.98 Charge : 112.289
================================================
================================================
Signal ID : 4807
Integral : 779.378
------------------------------------------------
Time : 7.86 Charge : 6.07778
Time : 7.88 Charge : 8.07778
Time : 7.9 Charge : 5.07778
Time : 7.92 Charge : 8.07778
Time : 7.94 Charge : 6.07778
Time : 7.96 Charge : 6.07778
Time : 7.98 Charge : 7.07778
Time : 8 Charge : 9.07778
Time : 8.02 Charge : 7.07778
Time : 8.04 Charge : 5.07778
Time : 8.06 Charge : 5.07778
Time : 8.08 Charge : 5.07778
Time : 8.1 Charge : 6.07778
Time : 8.12 Charge : 8.07778
Time : 8.14 Charge : 8.07778
Time : 8.16 Charge : 7.07778
Time : 8.18 Charge : 9.07778
Time : 8.2 Charge : 10.0778
Time : 8.22 Charge : 8.07778
Time : 8.24 Charge : 9.07778
Time : 8.26 Charge : 9.07778
Time : 8.28 Charge : 10.0778
Time : 8.3 Charge : 7.07778
Time : 8.32 Charge : 7.07778
Time : 8.34 Charge : 10.0778
Time : 8.36 Charge : 10.0778
Time : 8.38 Charge : 10.0778
Time : 8.4 Charge : 9.07778
Time : 8.42 Charge : 10.0778
Time : 8.44 Charge : 9.07778
Time : 8.46 Charge : 14.0778
Time : 8.48 Charge : 10.0778
Time : 8.5 Charge : 12.0778
Time : 8.52 Charge : 11.0778
Time : 8.54 Charge : 12.0778
Time : 8.56 Charge : 12.0778
Time : 8.58 Charge : 7.07778
Time : 8.6 Charge : 12.0778
Time : 8.62 Charge : 9.07778
Time : 8.64 Charge : 13.0778
Time : 8.66 Charge : 11.0778
Time : 8.68 Charge : 8.07778
Time : 8.7 Charge : 14.0778
Time : 8.72 Charge : 14.0778
Time : 8.74 Charge : 10.0778
Time : 8.76 Charge : 8.07778
Time : 8.78 Charge : 9.07778
Time : 8.8 Charge : 7.07778
Time : 8.82 Charge : 10.0778
Time : 8.84 Charge : 8.07778
Time : 8.86 Charge : 10.0778
Time : 8.88 Charge : 7.07778
Time : 8.9 Charge : 14.0778
Time : 8.92 Charge : 9.07778
Time : 8.94 Charge : 11.0778
Time : 8.96 Charge : 15.0778
Time : 8.98 Charge : 9.07778
Time : 9 Charge : 12.0778
Time : 9.02 Charge : 11.0778
Time : 9.04 Charge : 13.0778
Time : 9.06 Charge : 13.0778
Time : 9.08 Charge : 11.0778
Time : 9.1 Charge : 9.07778
Time : 9.12 Charge : 10.0778
Time : 9.14 Charge : 10.0778
Time : 9.16 Charge : 9.07778
Time : 9.18 Charge : 16.0778
Time : 9.2 Charge : 11.0778
Time : 9.22 Charge : 11.0778
Time : 9.24 Charge : 9.07778
Time : 9.26 Charge : 11.0778
Time : 9.28 Charge : 11.0778
Time : 9.3 Charge : 11.0778
Time : 9.32 Charge : 11.0778
Time : 9.34 Charge : 13.0778
Time : 9.36 Charge : 7.07778
Time : 9.38 Charge : 9.07778
Time : 9.4 Charge : 10.0778
Time : 9.42 Charge : 8.07778
Time : 9.44 Charge : 7.07778
Time : 9.46 Charge : 6.07778
Time : 9.48 Charge : 5.07778
================================================
================================================
Signal ID : 4832
Integral : 1315.87
------------------------------------------------
Time : 6.92 Charge : 8.96667
Time : 6.94 Charge : 8.96667
Time : 6.96 Charge : 9.96667
Time : 6.98 Charge : 13.9667
Time : 7 Charge : 11.9667
Time : 7.02 Charge : 12.9667
Time : 7.04 Charge : 12.9667
Time : 7.06 Charge : 12.9667
Time : 7.08 Charge : 18.9667
Time : 7.1 Charge : 18.9667
Time : 7.12 Charge : 19.9667
Time : 7.14 Charge : 21.9667
Time : 7.16 Charge : 21.9667
Time : 7.18 Charge : 18.9667
Time : 7.2 Charge : 25.9667
Time : 7.22 Charge : 21.9667
Time : 7.24 Charge : 23.9667
Time : 7.26 Charge : 24.9667
Time : 7.28 Charge : 24.9667
Time : 7.3 Charge : 24.9667
Time : 7.32 Charge : 25.9667
Time : 7.34 Charge : 30.9667
Time : 7.36 Charge : 26.9667
Time : 7.38 Charge : 27.9667
Time : 7.4 Charge : 26.9667
Time : 7.42 Charge : 26.9667
Time : 7.44 Charge : 27.9667
Time : 7.46 Charge : 28.9667
Time : 7.48 Charge : 24.9667
Time : 7.5 Charge : 26.9667
Time : 7.52 Charge : 27.9667
Time : 7.54 Charge : 26.9667
Time : 7.56 Charge : 25.9667
Time : 7.58 Charge : 25.9667
Time : 7.6 Charge : 27.9667
Time : 7.62 Charge : 24.9667
Time : 7.64 Charge : 24.9667
Time : 7.66 Charge : 24.9667
Time : 7.68 Charge : 23.9667
Time : 7.7 Charge : 24.9667
Time : 7.72 Charge : 24.9667
Time : 7.74 Charge : 23.9667
Time : 7.76 Charge : 23.9667
Time : 7.78 Charge : 20.9667
Time : 7.8 Charge : 21.9667
Time : 7.82 Charge : 17.9667
Time : 7.84 Charge : 19.9667
Time : 7.86 Charge : 21.9667
Time : 7.88 Charge : 16.9667
Time : 7.9 Charge : 13.9667
Time : 7.92 Charge : 20.9667
Time : 7.94 Charge : 18.9667
Time : 7.96 Charge : 19.9667
Time : 7.98 Charge : 18.9667
Time : 8 Charge : 15.9667
Time : 8.02 Charge : 13.9667
Time : 8.04 Charge : 17.9667
Time : 8.06 Charge : 14.9667
Time : 8.08 Charge : 12.9667
Time : 8.1 Charge : 13.9667
Time : 8.12 Charge : 13.9667
Time : 8.14 Charge : 11.9667
Time : 8.16 Charge : 11.9667
Time : 8.18 Charge : 8.96667
================================================
================================================
Signal ID : 4849
Integral : 1872.28
------------------------------------------------
Time : 8.98 Charge : 12.0056
Time : 9 Charge : 10.0056
Time : 9.02 Charge : 12.0056
Time : 9.04 Charge : 14.0056
Time : 9.06 Charge : 18.0056
Time : 9.08 Charge : 18.0056
Time : 9.1 Charge : 18.0056
Time : 9.12 Charge : 24.0056
Time : 9.14 Charge : 27.0056
Time : 9.16 Charge : 28.0056
Time : 9.18 Charge : 28.0056
Time : 9.2 Charge : 30.0056
Time : 9.22 Charge : 32.0056
Time : 9.24 Charge : 33.0056
Time : 9.26 Charge : 34.0056
Time : 9.28 Charge : 37.0056
Time : 9.3 Charge : 38.0056
Time : 9.32 Charge : 41.0056
Time : 9.34 Charge : 42.0056
Time : 9.36 Charge : 45.0056
Time : 9.38 Charge : 44.0056
Time : 9.4 Charge : 45.0056
Time : 9.42 Charge : 46.0056
Time : 9.44 Charge : 47.0056
Time : 9.46 Charge : 47.0056
Time : 9.48 Charge : 48.0056
Time : 9.5 Charge : 47.0056
Time : 9.52 Charge : 47.0056
Time : 9.54 Charge : 47.0056
Time : 9.56 Charge : 48.0056
Time : 9.58 Charge : 49.0056
Time : 9.6 Charge : 47.0056
Time : 9.62 Charge : 47.0056
Time : 9.64 Charge : 48.0056
Time : 9.66 Charge : 46.0056
Time : 9.68 Charge : 44.0056
Time : 9.7 Charge : 47.0056
Time : 9.72 Charge : 45.0056
Time : 9.74 Charge : 44.0056
Time : 9.76 Charge : 43.0056
Time : 9.78 Charge : 45.0056
Time : 9.8 Charge : 42.0056
Time : 9.82 Charge : 38.0056
Time : 9.84 Charge : 38.0056
Time : 9.86 Charge : 39.0056
Time : 9.88 Charge : 37.0056
Time : 9.9 Charge : 36.0056
Time : 9.92 Charge : 35.0056
Time : 9.94 Charge : 33.0056
Time : 9.96 Charge : 32.0056
Time : 9.98 Charge : 30.0056
================================================
Searching readout coordinates for signal ID : 4676
Searching readout coordinates for signal ID : 4732
Searching readout coordinates for signal ID : 4791
Searching readout coordinates for signal ID : 4807
Searching readout coordinates for signal ID : 4832
Searching readout coordinates for signal ID : 4849
-- Debug : TRestDetectorSignalToHitsProcess. Hits added : 0
-- Debug : TRestDetectorSignalToHitsProcess. Hits total energy : 0
*******************************************************
 EVENT ID : 0
 TIME : Thu, 01 Jan 1970 00:00:00 +0000 (GMT) +        0 nsec
 SUB-EVENT ID : 0
 Status : OK
*******************************************************
Total energy : 0
Mean position : ( 0 , 0 , 0 ) 
Number of hits : 0
+++++++++++++++++++++++
Printing only the first 30 hits
-- Debug : Entering TRestEventProcess::EndOfEventProcess (TRestDetectorSignalToHitsProcess)
-- Debug :  ....  TRestDetectorHitsEvent(0x561f4c5fa710)
-- Debug : t0p6: TRestDetectorHitsAnalysisProcess
-- Debug :  ....  TRestDetectorHitsEvent(0x561f4c607730)
-- Debug : t0p7: TRestDetectorHitsGaussAnalysisProcess
-- Debug :  ....  TRestDetectorHitsEvent(0x561f45c16430)
-- Debug : t0p8: TRestDetectorHitsToTrackProcess
-- Debug : Entering TRestDetectorHitsToTrackProcess::BeginOfEventProcess, Initializing output event...
TResDetectorHitsToTrackProcess : nHits 0
TRestDetectorHitsToTrackProcess : Number of xzHits : 0
TRestDetectorHitsToTrackProcess : Number of yzHits : 0
TRestDetectorHitsToTrackProcess : Number of xyzHits : 0
TRestDetectorHitsToTrackProcess. X tracks : 0  Y tracks : 0
TRestDetectorHitsToTrackProcess. Total number of tracks : 0
-- Debug : Entering TRestEventProcess::EndOfEventProcess (TRestDetectorHitsToTrackProcess)
-- Debug :  ....  TRestTrackEvent(0x561f45dde3d0)
-- Debug : t0p9: TRestTrackAnalysisProcess
-- Debug : Entering TRestTrackAnalysisProcess::BeginOfEventProcess, Initializing output event...
TrackEvent 0
-----------------------
-----------------------
Track levels : -1

 *** Break *** segmentation violation



===========================================================
There was a crash.
This is the entire stack trace of all threads:
===========================================================
#0  0x00007f91cb591437 in __GI___waitpid (pid=21121, stat_loc=stat_loc
entry=0x7ffdd5d66218, options=options
entry=0) at ../sysdeps/unix/sysv/linux/waitpid.c:30
#1  0x00007f91cb50f5df in do_system (line=<optimized out>) at ../sysdeps/posix/system.c:149
#2  0x00007f91ce0f3e63 in TUnixSystem::StackTrace() () from /programas/root/6.24.02/lib/libCore.so
#3  0x00007f91ce0f6745 in TUnixSystem::DispatchSignals(ESignals) () from /programas/root/6.24.02/lib/libCore.so
#4  <signal handler called>
#5  0x00007f914b375dab in TRestTrackAnalysisProcess::ProcessEvent(TRestEvent*) () from /programas/rest/v2.3.8/lib/libRestTrack.so
#6  0x00007f91ce494c12 in TRestThread::TestRun() () from /programas/rest/v2.3.8/lib/libRestFramework.so
#7  0x00007f91ce49809e in TRestThread::PrepareToProcess(bool*) () from /programas/rest/v2.3.8/lib/libRestFramework.so
#8  0x00007f91ce47a7db in TRestProcessRunner::RunProcess() () from /programas/rest/v2.3.8/lib/libRestFramework.so
#9  0x00007f91ce445a3a in TRestManager::ReadConfig(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, TiXmlElement*) () from /programas/rest/v2.3.8/lib/libRestFramework.so
#10 0x00007f91ce44674d in TRestManager::InitFromConfigFile() () from /programas/rest/v2.3.8/lib/libRestFramework.so
#11 0x00007f91ce45680d in TRestMetadata::LoadConfigFromElement(TiXmlElement*, TiXmlElement*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >) () from /programas/rest/v2.3.8/lib/libRestFramework.so
#12 0x00007f91ce45e481 in TRestMetadata::LoadConfigFromFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) () from /programas/rest/v2.3.8/lib/libRestFramework.so
#13 0x0000561f42c4b0d4 in main ()
===========================================================


The lines below might hint at the cause of the crash.
You may get help by asking at the ROOT forum https://root.cern.ch/forum
Only if you are really convinced it is a bug in ROOT then please submit a
report at https://root.cern.ch/bugs Please post the ENTIRE stack trace
from above as an attachment in addition to anything else
that might help us fixing this issue.
===========================================================
#5  0x00007f914b375dab in TRestTrackAnalysisProcess::ProcessEvent(TRestEvent*) () from /programas/rest/v2.3.8/lib/libRestTrack.so
#6  0x00007f91ce494c12 in TRestThread::TestRun() () from /programas/rest/v2.3.8/lib/libRestFramework.so
#7  0x00007f91ce49809e in TRestThread::PrepareToProcess(bool*) () from /programas/rest/v2.3.8/lib/libRestFramework.so
#8  0x00007f91ce47a7db in TRestProcessRunner::RunProcess() () from /programas/rest/v2.3.8/lib/libRestFramework.so
#9  0x00007f91ce445a3a in TRestManager::ReadConfig(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, TiXmlElement*) () from /programas/rest/v2.3.8/lib/libRestFramework.so
#10 0x00007f91ce44674d in TRestManager::InitFromConfigFile() () from /programas/rest/v2.3.8/lib/libRestFramework.so
#11 0x00007f91ce45680d in TRestMetadata::LoadConfigFromElement(TiXmlElement*, TiXmlElement*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >) () from /programas/rest/v2.3.8/lib/libRestFramework.so
#12 0x00007f91ce45e481 in TRestMetadata::LoadConfigFromFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) () from /programas/rest/v2.3.8/lib/libRestFramework.so
#13 0x0000561f42c4b0d4 in main ()
===========================================================

I believe the problem is connected with the fact that no hits are identified at the process

================================================
Searching readout coordinates for signal ID : 4676
Searching readout coordinates for signal ID : 4732
Searching readout coordinates for signal ID : 4791
Searching readout coordinates for signal ID : 4807
Searching readout coordinates for signal ID : 4832
Searching readout coordinates for signal ID : 4849
-- Debug : TRestDetectorSignalToHitsProcess. Hits added : 0
-- Debug : TRestDetectorSignalToHitsProcess. Hits total energy : 0
*******************************************************

Usually, the processing should stop here, since at the end of the process there is the following condition:

    if (fHitsEvent->GetNumberOfHits() <= 0) return NULL;

    return fHitsEvent;
}

Usually returning NULL would end the event processing and avoid crashing at a later stage. Any idea why this is not happening anymore @nkx?

It seems to be not crashing at v2.3.7, so the problem was introduced in release v2.3.8.

I believe the process TRestTrackAnalysisProcess is not safe anymore for empty track event in v1.1 track lib. We shall fix it. The seg.fault in this post happens in line 936, where fInputTrackEvent->GetMaxEnergyTrack("X") is null. We shall put some checks to prevent null reference problem.

Why there is still empty tracks entering TRestTrackAnalysisProcess is because that we are using test run technique to determine the address of output event and observables. If the first event of the input file yields empty track, then in test run stage this empty track is still conducted to the TRestTrackAnalysisProcess, ignoring the return NULL statement of the previous process. A quick fix to this problem could be to disable test run, by adding a parameter in TRestProcessRunner section:

<parameter name="useTestRun" value="false" />

The capability to disable test run is a new feature introduced earlier this year. We seldom test it. If it works smoothly, then maybe in future we can disable test run by default. When disabled, the observables are created realtime during the process(during the first call of TRestAnalysisTree->Fill()), and the output event of each thread is cloned to the global output event.

Introducing <parameter name="useTestRun" value="false"/> at TRestProcessRunner does not solve the problem for me.

I dont get it, the fact that the event processing is not skipped when a nullptr is returned. Could that be fixed?

I placed the AQS file here and the readouts file here.

These are the RML files I am using, slightly modified from Cristina version.
rawToTrack.rml (5.3 KB)
processes.rml (22.4 KB)

I have tried adding the useTestRun parameter, but it still crashes. With test run disabled, it already crashes in the process TRestZeroSuppressionProcess. If I set it to true so that it works through TRestZeroSuppressionProcess, and then I run the second part of the analysis with it disabled again, it still crashesin TRestTrackAnalysisProcess.

@CMargalejo the problem is that you need to protect the access to the track when there are no tracks and therefore GetMaxEnergyTrack returns a nullptr.

There is an example in the code. This is done previously, line 891.

    if (fInputTrackEvent->GetMaxEnergyTrack("X")) {
        tckMaxEnX = fInputTrackEvent->GetMaxEnergyTrack("X")->GetEnergy();
        tckMaxXZ_SigmaX = fInputTrackEvent->GetMaxEnergyTrack("X")->GetHits()->GetSigmaX();
        tckMaxXZ_SigmaZ = fInputTrackEvent->GetMaxEnergyTrack("X")->GetHits()->GetSigmaZ2();

If there is no track in X, then we do not attempt to get the energy, sigmaX, sigmaZ of an inexistent track.

The problem is introduced at this point, when calling GetHits from a non-valid pointer.

    TRestHits hits;
    TRestHits* hitsXZ = fInputTrackEvent->GetMaxEnergyTrack("X")->GetHits();
    TRestHits* hitsYZ = fInputTrackEvent->GetMaxEnergyTrack("Y")->GetHits();
    auto hitsBoth = {hitsXZ, hitsYZ};

    for(auto arg : hitsBoth){
        for(int n = 0; n < arg->GetNumberOfHits(); n++){
            // your code in the existing loop, replacing `hits` by `arg`
            Double_t eDep = arg->GetEnergy(n);
    
            Double_t x = arg->GetX(n);
            Double_t y = arg->GetY(n);
            Double_t z = arg->GetZ(n);

Actually, you should differentiate X and Y, because it might be a valid event with only X tracks. Then, encapsulate the code for X using

if (fInputTrackEvent->GetMaxEnergyTrack("X")) {
...
}

and the code for Y as

if (fInputTrackEvent->GetMaxEnergyTrack("Y")) {
...
}

I believe thats the straightforward solution

Because if there are not X tracks we cannot do any calculation.

@nkx

Not sure if I understood it well. In the test phase, the observables are defined, so it uses the first event in order to do that. But what happens for example in the case that the first event has only tracks in X? It might be just that the first event is special, but usually the events have at least one X track and at least one Y track.

It would happen then that only X observables are defined because in the test run the code didnt go through SetObservableValue for the Y observables?

I see, this is another bug from no-testrun execution. I have fixed that. Nkx111 testrunfix by nkx111 · Pull Request #95 · rest-for-physics/framework · GitHub

But still it crashes at near the line 936 in TRestTrackAnalysisProcess after fixing this bug and defining useTestRun=false. I believe there are some events with only xz or yz track, and produces NULL in GetMaxEnergyTrack().

I believe that’s what causes the initial crash. Not because of empty event, but an event that is xz/yz only. We need to fix TRestTrackAnalysisProcess