[MINC-users] [minctracc] segfault when using -measure option

Robert D. Vincent robert.d.vincent at mcgill.ca
Sun Sep 25 07:28:57 EDT 2016


Thanks for the example, I'll look into it.


On Sun, Sep 25, 2016 at 4:13 AM, Mishkin Derakhshan <mishkind at gmail.com>
wrote:

> Hi,
> I get a segfault whenever I try to use the -measure option.
> Here is the simplest example to reproduce the bug.
>
> $ minctracc -measure out.txt t1p.mnc.gz t1p.mnc.gz -transformation
> identity.xfm
>
> I'm using:
> $ minctracc -version
> The program <minctracc> was built from:
> mni_autoreg 0.99.60
>
> Here is some info on the files, but I don't think it has to do with the
> files themselves as I've tried 100s. Maybe someone else can confirm.
> $ mincinfo t1p.mnc.gz
> file: t1p.mnc.gz
> image: signed__ short 0 to 4095
> image dimensions: zspace yspace xspace
>     dimension name         length         step        start
>     --------------         ------         ----        -----
>     zspace                     60            3     -93.0427
>     yspace                    256    -0.976562      119.239
>     xspace                    192    -0.976562      91.5716
>
> $ cat identity.xfm
> MNI Transform File
> %Sun Sep 25 03:59:15 2016>>> param2xfm -scale 1 1 1 identity.xfm
> %(mni_autoreg 0.99.60)
>
> Transform_Type = Linear;
> Linear_Transform =
>  1 0 0 0
>  0 1 0 0
>  0 0 1 0;
>
> Looking at the print statements in the debug output from minctracc, and
> comparing with minctracc/Main/measure_code.c I have a rough idea where the
> segfault must be happening, but it's a little outside my depth at this
> point.
>
> Bug happens somewhere in here:
>                             /* do var_ratio */
>
>     main_args.obj_function = vr_objective;
>     obj_func_val = measure_fit( data, model, mask_data, mask_model,
> &main_args );
>     (void)fprintf (ofd, "%f - var_ratio\n",obj_func_val);
>     (void)fflush(ofd);
>     DEBUG_PRINT1 ( "%f - var_ratio\n",obj_func_val);
>
>     delete_volume(data);
>     delete_volume(model);
>
>                                 /* do ssc / zero-crossings */
>
>     status = input_volume( main_args.filenames.data, 3, default_dim_names,
>                           NC_UNSPECIFIED, FALSE, 0.0, 0.0,
>                           TRUE, &data, (minc_input_options *)NULL );
>     status = input_volume( main_args.filenames.model, 3, default_dim_names,
>                           NC_UNSPECIFIED, FALSE, 0.0, 0.0,
>                           TRUE, &model, (minc_input_options *)NULL );
>
>     main_args.obj_function = ssc_objective;
>     obj_func_val = measure_fit( data, model, mask_data, mask_model,
> &main_args );
>     (void)fprintf (ofd, "%f - ssc\n",obj_func_val);
>     (void)fflush(ofd);
>     DEBUG_PRINT1 ( "%f - ssc\n",obj_func_val);
>
>
> The good news is that the out.txt measure file still gets output, albeit
> incomplete, but so does a large core file. Not to mention I can't sleep at
> night having a seg fault that is built into the pipeline, er, at least one
> that that I know about!
>
> any help?
> mishkin
>
> Here is the debugging output from minctracc if that helps:
>
> $ minctracc -measure out.txt t1p.mnc.gz t1p.mnc.gz -transformation
> identity.xfm -debug
> ===== Debugging information from minctracc =====
> Data filename       = t1p.mnc.gz
> Model filename      = t1p.mnc.gz
> Data mask filename  =
> Model mask filename =
> Input xform name    = identity.xfm
> Measure filename    = out.txt
>
> Step size           = 4.000000 4.000000 4.000000
> Sub-lattice dia     = 24.000000 24.000000 24.000000
> Objective function  = cross correlation (threshold = 0.000000 0.000000)
> Transform linear    = TRUE
> Transform inverted? = FALSE
> Transform type      = 4
> Transform matrix    =    1.0000    0.0000    0.0000    0.0000
>                          0.0000    1.0000    0.0000    0.0000
>                          0.0000    0.0000    1.0000    0.0000
> Transform center   =    0.000    0.000    0.000
> Transform rotation   =    0.000    0.000    0.000
>
> Transform trans    =    0.000    0.000    0.000
> Transform scale    =    1.000    1.000    1.000
>
> Source volume size:  60  by 256  by 192
> Source voxel size =    3.000   -0.977   -0.977
> Source min/max real range =    0.000 2083.000
> Source min/max voxel=    0.000 2083.000
>
> Target volume size:  60  by 256  by 192
> Target voxel =    3.000   -0.977   -0.977
> Target min/max real range=    0.000 2083.000
> Target min/max voxel =    0.000 2083.000
>
>
>   using input transformation to get initial parameters:
>    Center of rot/scale not forced, will be set to : 0.000000 0.000000
> 0.000000
> In set_up_lattice, xyzv[axes] = 2, 1, 0, -1
> slice lim 0 44
> row lim   1 62
> col lim   1 46
> thresh =    0.00000    0.00000
> In set_up_lattice, xyzv[axes] = 2, 1, 0, -1
> Source volume is smallest
> Lattice step size  =   -4.000   -4.000    4.000
> Lattice start      =   88.104  129.917  -72.203
> Lattice count      =       46       62       45
>
>  128340  128340  128340 ->        inf
> inf - zscore
>  128340  128340 -> 0.00000000
> 0.000000 - xcorr
>  128340  128340       0 -> 0.20877945
> 0.208779 - var_ratio
> Segmentation fault
> _______________________________________________
> MINC-users at bic.mni.mcgill.ca
> http://www.bic.mni.mcgill.ca/mailman/listinfo/minc-users
>


More information about the MINC-users mailing list