[Mrtrix-discussion] empty FA images and streamtrack questions

Kerstin Pannek k.pannek1 at uq.edu.au
Mon Oct 27 22:37:53 PDT 2008


Hi Donald

The default build wouldn't work on my system. This is what happens when 
I try:

[CC] lib/math/vector.o

ERROR: [CC] lib/math/vector.o

g++ -c -Wall -march=i686 -fPIC -fno-strict-aliasing 
-DGL_GLEXT_PROTOTYPES -O3 -pthread -I/usr/include/glibmm-2.4 
-I/usr/lib/glibmm-2.4/include -I/usr/include/sigc++-2.0 
-I/usr/lib/sigc++-2.0/include -I/usr/include/glib-2.0 
-I/usr/lib/glib-2.0/include -Ilib -Isrc lib/math/vector.cpp -o 
lib/math/vector.o

failed with output:

lib/math/vector.cpp:1: error: CPU you selected does not support x86-64 
instruction set


So I installed following the 64bit instructions in the documentation.
I inserted the lines in src/dwi/SH.cpp and rebuild, and running 
streamtrack I now get an error message:

streamtrack: src/dwi/SH.cpp:58: void 
MR::DWI::SH::<unnamed>::calc_index_fractions(float): Assertion `index < 
num_legendre_coefs' failed.
Aborted

I removed the lines and recompiled in debug mode. I attached the output 
of bt full - a lot more information in it now!

Cheers
Kerstin





Donald Tournier wrote:
> Hi Kerstin,
>
> I notice you are running on a 64-bit system. Did you compile MRtrix as
> a 64-bit executable, or did you stick to the default build setup?
> There are subtle bugs that can come out in 64 bit mode that aren't a
> problem in 32 bit mode...
>
> Otherwise, if you have a minute, could you insert the following lines
> in the file "src/dwi/SH.cpp":
>
> at line 58:
>             index_frac2 -= index;
>             index_frac1 = 1.0 - index_frac2;
>
>             assert (index >= 0);                             // <---
> add this line
>             assert (index < num_legendre_coefs);      // <--- add this line
>
>             precomp_p1 = precomp_legendre + index*num_legendre_coefs;
>             precomp_p2 = precomp_p1 + num_legendre_coefs;
>
>
> and at line 70:
>           inline float legendre_precomputed (int l, int m)
>           {
>             assert (l <= lmax_legendre);         // <--- add this line
>             return (
>                 index_frac1 * precomp_p1[index_mpos (l,m)] +
>                 index_frac2 * precomp_p2[index_mpos (l,m)]
>
>
> and then recompile in debug mode:
>   
>> ./build clean
>> ./build -debug
>>     
>
> and run in the debugger once again. Recompiling in debug mode will
> provide a lot more information for the debugger, and the "bt full"
> command should produce a much more detailed report of what's going
> on...
>
> Once everything is sorted and you don't want to run in debug mode any
> more, you can revert to the default build:
>   
>> ./build clean
>> ./build
>>     
>
> Thanks for helping out!
> Cheers,
>
> Donald.
>
>
> On Tue, Oct 28, 2008 at 10:09 AM, Kerstin Pannek <k.pannek1 at uq.edu.au> wrote:
>   
>> Hi Donald
>>
>> I follow the instructions in the documentation to get the fa. The tensor
>> image I get is also empty.
>>
>> For streamtrack, I use a binary brain mask (generated using FSL bet, then
>> eroded by 2 voxels) to terminate tracking. I found that segmentation faults
>> occur more often (but not only) when I use the -include option. I guess this
>> is simply because a larger number of streamlines has to be generated then,
>> increasing chances to see a segfault, and does not actually have anything to
>> do with -include itself.
>> This is the command I ran:
>> $ streamtrack SD_PROB CSD/csd.mif -seed AC-seed.mif -include AC-target.mif
>> -number 100 -mask data/mask-ero2.mif AC-targets.tck
>>
>> This is the output of the debugger:
>>
>> $ gdb --args streamtrack SD_PROB CSD/csd.mif -seed AC-seed.mif -include
>> AC-target.mif -mask data/mask-ero2.mif AC-targets.tckGNU gdb 6.8-debian
>>
>> Copyright (C) 2008 Free Software Foundation, Inc.
>> License GPLv3+: GNU GPL version 3 or later
>> <http://gnu.org/licenses/gpl.html>
>> This is free software: you are free to change and redistribute it.
>> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
>> and "show warranty" for details.
>> This GDB was configured as "x86_64-linux-gnu"...
>> (gdb) run
>> Starting program: /data/home/kerstin/bin/mrtrix/bin/streamtrack SD_PROB
>> CSD/csd.mif -seed AC-seed.mif -include AC-target.mif -mask
>> data/mask-ero2.mif AC-targets.tck
>> [Thread debugging using libthread_db enabled]
>> [New Thread 0x7f5b155f2780 (LWP 30061)]
>>   9096 generated,      537 selected    [ 53%]
>> Program received signal SIGSEGV, Segmentation fault.
>> [Switching to Thread 0x7f5b155f2780 (LWP 30061)]
>> 0x0000000000410404 in MR::DWI::SH::value_precomputed ()
>> Current language:  auto; currently asm
>> (gdb) bt full
>> #0  0x0000000000410404 in MR::DWI::SH::value_precomputed ()
>> No locals.
>> #1  0x000000000043066b in MR::DWI::Tractography::Tracker::SDProb::next_point
>> ()
>> No locals.
>> #2  0x0000000000423b48 in MR::DWI::Tractography::Tracker::Base::next ()
>> No locals.
>> #3  0x00000000004094c9 in MyApp::execute ()
>> No locals.
>> #4  0x00000000004057c0 in main ()
>> No locals.
>>
>>
>> Thanks for your help!
>> Cheers
>> Kerstin
>>
>>
>>
>>
>>
>>
>> Donald Tournier wrote:
>>     
>>> Hi Kerstin,
>>>
>>> I'm a bit surprised that you're having problem with the tensor
>>> analysis. Are you generating the tensor image (i.e. the dt.mif file)
>>> first with dwi2tensor, and then feeding that through tensor2FA? Does
>>> the tensor image look OK?
>>>
>>>
>>> About your other questions:
>>>
>>> 1) the -initdirection option format is -initdirection 0,0.5,1 (i.e. a
>>> comma-separated list of floating point values, no spaces). The
>>> direction is relative to the usual coordinate system (in the
>>> documentation: General Information => Overview).
>>>
>>> 2) Any segmentation fault is A Bad Thing. Could you post the entire
>>> command that you actually type? I would also be interested to know
>>> whether you use a mask image that allows the tracks to reach the edge
>>> of the data set: maybe the program crashes if the track wonders
>>> outside the image data set. In any case, there's a bug and it needs to
>>> be fixed...
>>>
>>> If you're feeling particularly adventurous, maybe you can run the
>>> tracking within the debugger? That way, if it crashes you would be
>>> able to attach the full debugging information when/if it crashes. It's
>>> quite simple to do that. If the command you normally run is:
>>>
>>>
>>>       
>>>> streamtrack SD_PROB some_image.mif track.tck -some_option etc
>>>>
>>>>         
>>> then just insert "gdb --args" at the beginning, and then type "run" at
>>> the GDB prompt:
>>>
>>>
>>>       
>>>> gdb --args streamtrack SD_PROB some_image.mif track.tck -some_option etc
>>>>
>>>>         
>>> GNU gdb 6.8-debian
>>> Copyright (C) 2008 Free Software Foundation, Inc.
>>> License GPLv3+: GNU GPL version 3 or later
>>> <http://gnu.org/licenses/gpl.html>
>>> This is free software: you are free to change and redistribute it.
>>> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
>>> and "show warranty" for details.
>>> This GDB was configured as "i486-linux-gnu"...
>>> (gdb) run
>>>
>>> If the program crashes it will display something like "SIGSEGV
>>> exception occurred" or something. If that happens, then type "bt full"
>>> at the prompt, and copy/paste all of the session into an email so I
>>> can have a good look at what went wrong.
>>>
>>> By the way, this is only for debugging. There is a performance penalty
>>> for running within the debugger, and it can be significant. I wouldn't
>>> recommend doing this routinely...
>>>
>>> Cheers!
>>>
>>> Donald.
>>>
>>>
>>>
>>> On Fri, Oct 24, 2008 at 4:38 PM, Kerstin Pannek <k.pannek1 at uq.edu.au>
>>> wrote:
>>>
>>>       
>>>> Hello again everyone,
>>>>
>>>> Donald, thank you for fixing find_SH_peaks. Unfortunately I did not quite
>>>> get around to really playing with it yet.
>>>>
>>>> I was just trying to analyze some DTI data that had not been optimized
>>>> for
>>>> CSD and tractography (b value 1200; slice gap...). When running
>>>> tensor2FA, I
>>>> get only an empty image. Image conversion from DICOM works, i.e. I get a
>>>> non-empty dwi.mif and encoding - just a warning about the slice gap, no
>>>> error message. What might be causing this problem?
>>>>
>>>> Some more question about streamtrack:
>>>> 1) When I want to use the option -initdirection <dir>, what format should
>>>> <dir> be?
>>>> 2) I do get segmentation faults fairly frequently using streamtrack
>>>> SD_PROB.
>>>> I did get segmentation faults using fslview in the past, making me think
>>>> that this was a hardware problem at my end. With the new version of FSL
>>>> and
>>>> a different video card, the fslview segmentation fault issue has been
>>>> resolved, but the streamtrack segmentation fault remains. Any thoughts on
>>>> what this problem might be related to? I case it is important, I get some
>>>> "failed to converge" messages from csdeconv.
>>>>
>>>> Thanks for your help.
>>>> Kerstin
>>>> _______________________________________________
>>>> Mrtrix-discussion mailing list
>>>> Mrtrix-discussion at www.nitrc.org
>>>> http://www.nitrc.org/mailman/listinfo/mrtrix-discussion
>>>>
>>>>
>>>>         
>>>
>>>
>>>       
>>     
>
>
>
>   

-------------- next part --------------
#0  0x000000000041c089 in legendre_precomputed (l=0, m=0) at src/dwi/SH.cpp:75
No locals.
#1  0x000000000041d6b0 in MR::DWI::SH::value_precomputed (
    values=0x7fff54ac22c0, unit_dir=@0x7fff54ac23e0) at src/dwi/SH.cpp:314
	l = 0
	az = -0.926234603
	val = 0
#2  0x000000000043ae23 in MR::DWI::Tractography::Tracker::SDProb::next_point (
    this=0x658ac0) at src/dwi/tractography/tracker/sd_prob.cpp:96
	new_dir = {static Invalid = <error reading variable>
	val = 0
	n = 0
	values = 0x7fff54ac22c0
	max_val = 0
#3  0x0000000000431420 in MR::DWI::Tractography::Tracker::Base::next (
    this=0x658ac0) at src/dwi/tractography/tracker/base.cpp:121
No locals.
#4  0x0000000000412ed2 in MyApp::execute (this=0x7fff54ac2ee0)
    at cmd/streamtrack.cpp:230
	seed_dir = {static Invalid = <error reading variable>
	tck = {<std::_Vector_base<MR::Point,std::allocator<MR::Point> >> = {
    _M_impl = {<std::allocator<MR::Point>> = {<__gnu_cxx::new_allocator<MR::Point>> = {<No data fields>}, <No data fields>}, _M_start = 0x65c4e0, 
---Type <return> to continue, or q <return> to quit---
      _M_finish = 0x65c5dc, _M_end_of_storage = 0x65c660}}, <No data fields>}
	max_num_tracks = 1000
	unidirectional = false
	min_size = 50
	properties = {<std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {_M_t = {
      _M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<No data fields>}, <No data fields>}, 
        _M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,bool>> = {<No data fields>}, <No data fields>}, 
        _M_header = {_M_color = std::_S_red, _M_parent = 0x65b800, 
          _M_left = 0x658a20, _M_right = 0x65af80}, _M_node_count = 13}}}, 
  roi = {<std::_Vector_base<MR::RefPtr<MR::DWI::Tractography::ROI>,std::allocator<MR::RefPtr<MR::DWI::Tractography::ROI> > >> = {
---Type <return> to continue, or q <return> to quit---
      _M_impl = {<std::allocator<MR::RefPtr<MR::DWI::Tractography::ROI> >> = {<__gnu_cxx::new_allocator<MR::RefPtr<MR::DWI::Tractography::ROI> >> = {<No data fields>}, <No data fields>}, _M_start = 0x65b860, _M_finish = 0x65b890, 
        _M_end_of_storage = 0x65b8a0}}, <No data fields>}, 
  comments = {<std::_Vector_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {
      _M_impl = {<std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<__gnu_cxx::new_allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, 
        _M_end_of_storage = 0x0}}, <No data fields>}}
	opt = {<std::_Vector_base<MR::OptBase,std::allocator<MR::OptBase> >> = {_M_impl = {<std::allocator<MR::OptBase>> = {<__gnu_cxx::new_allocator<MR::OptBase>> = {<No data fields>}, <No data fields>}, _M_start = 0x65b050, 
      _M_finish = 0x65b050, _M_end_of_storage = 0x65b070}}, <No data fields>}
	grad = {ptr = 0x0, count = 0x65b150}
	init_dir = {static Invalid = <error reading variable>
	source = (MR::Image::Object &) @0x654a40: {
  static handlers = 0x7fad4c8a6880, H = {axes = {dim = {128, 128, 60, 45, 
        0 <repeats 12 times>}, vox = {2.34375, 2.34375, 2.5, 1, 
        nan(0x400000) <repeats 12 times>}, desc = {{
          static npos = 18446744073709551615, 
---Type <return> to continue, or q <return> to quit---
          _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x6549f8 "left->right"}}, {
          static npos = 18446744073709551615, 
          _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, 
            _M_p = 0x65abd8 "posterior->anterior"}}, {
          static npos = 18446744073709551615, 
          _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, 
            _M_p = 0x658908 "inferior->superior"}}, {
          static npos = 18446744073709551615, 
          _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, 
            _M_p = 0x7fad4b21ae78 ""}} <repeats 13 times>}, units = {{
          static npos = 18446744073709551615, 
          _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x65ad28 "mm"}}, {
          static npos = 18446744073709551615, 
          _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x65ad58 "mm"}}, {
          static npos = 18446744073709551615, 
          _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x65add8 "mm"}}, {
---Type <return> to continue, or q <return> to quit---
          static npos = 18446744073709551615, 
          _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, 
            _M_p = 0x7fad4b21ae78 ""}} <repeats 13 times>}, axis = {1, 2, 3, 
        0, 2147483647 <repeats 12 times>}, forward = {
        true <repeats 16 times>}, size_p = 4}, 
    comments = {<std::_Vector_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {
        _M_impl = {<std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<__gnu_cxx::new_allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0x65ac10, _M_finish = 0x65ac18, 
          _M_end_of_storage = 0x65ac18}}, <No data fields>}, data_type = {
      dt = 69 'E', static ComplexNumber = 16 '\020', static Signed = 32 ' ', 
      static LittleEndian = 64 '@', static BigEndian = 128 '\200', 
      static Text = 255 '�', static GroupStart = 254 '�', 
      static GroupEnd = 253 '�', static Undefined = 0 '\0', 
      static Bit = 1 '\001', static UInt8 = 2 '\002', 
      static UInt16 = 3 '\003', static UInt32 = 4 '\004', 
      static Float32 = 5 '\005', static Float64 = 6 '\006', 
      static Int8 = 34 '"', static Int16 = 35 '#', static Int16LE = 99 'c', 
      static UInt16LE = 67 'C', static Int16BE = 163 '�', 
---Type <return> to continue, or q <return> to quit---
      static UInt16BE = 131 '\203', static Int32 = 36 '$', 
      static Int32LE = 100 'd', static UInt32LE = 68 'D', 
      static Int32BE = 164 '�', static UInt32BE = 132 '\204', 
      static Float32LE = 69 'E', static Float32BE = 133 '\205', 
      static Float64LE = 70 'F', static Float64BE = 134 '\206', 
      static CFloat32 = 21 '\025', static CFloat32LE = 85 'U', 
      static CFloat32BE = 149 '\225', static CFloat64 = 22 '\026', 
      static CFloat64LE = 86 'V', static CFloat64BE = 150 '\226', 
      static Native = 69 'E'}, DW_scheme = {M = 0x0}, offset = 0, scale = 1, 
    name = {static npos = 18446744073709551615, 
      _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x657fa8 "CSD/csd.mif"}}, 
    read_only = true, format = 0x7fad4c67df46 "MRtrix", trans_I2R = {
      M = 0x65b530}, trans_R2I = {M = 0x65b420}, trans_P2R = {M = 0x65b310}, 
    trans_R2P = {M = 0x65b200}}, M = {output_name = {
      static npos = 18446744073709551615, 
      _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fad4b21ae78 ""}}, 
    list = {<std::_Vector_base<MR::Image::Mapper::Entry,std::allocator<MR::Image::Mapper::Entry> >> = {
        _M_impl = {<std::allocator<MR::Image::Mapper::Entry>> = {<__gnu_cxx::new_allocator<MR::Image::Mapper::Entry>> = {<No data fields>}, <No data fields>}, 
          _M_start = 0x65b460, _M_finish = 0x65b478, 
---Type <return> to continue, or q <return> to quit---
          _M_end_of_storage = 0x65b478}}, <No data fields>}, mem = 0x0, 
    segment = 0x658aa0, segsize = 44236800, optimised = true, 
    temporary = false, files_new = false, 
    get_func = 0x7fad4c6523e6 <MR::Image::Mapper::getFloat32LE(void const*, unsigned long)>, 
    put_func = 0x7fad4c6527c6 <MR::Image::Mapper::putFloat32LE(float, void*, unsigned long)>}, start = 0, stride = {45, 5760, 737280, 1, 0 <repeats 12 times>}}
	tracker = {ptr = 0x658ac0}
	writer = {count = 359, total_count = 6608, out = <incomplete type>, 
  dtype = {dt = 69 'E', static ComplexNumber = 16 '\020', 
    static Signed = 32 ' ', static LittleEndian = 64 '@', 
    static BigEndian = 128 '\200', static Text = 255 '�', 
    static GroupStart = 254 '�', static GroupEnd = 253 '
    static Undefined = 0 '\0', static Bit = 1 '\001', static UInt8 = 2 '\002', 
    static UInt16 = 3 '\003', static UInt32 = 4 '\004', 
    static Float32 = 5 '\005', static Float64 = 6 '\006', 
    static Int8 = 34 '"', static Int16 = 35 '#', static Int16LE = 99 'c', 
    static UInt16LE = 67 'C', static Int16BE = 163 '�', 
    static UInt16BE = 131 '\203', static Int32 = 36 '$', 
    static Int32LE = 100 'd', static UInt32LE = 68 'D', 
    static Int32BE = 164 '�', static UInt32BE = 132 '\204', 
    static Float32LE = 69 'E', static Float32BE = 133 '\205', 
    static Float64LE = 70 'F', static Float64BE = 134 '\206', 
---Type <return> to continue, or q <return> to quit---
    static CFloat32 = 21 '\025', static CFloat32LE = 85 'U', 
    static CFloat32BE = 149 '\225', static CFloat64 = 22 '\026', 
    static CFloat64LE = 86 'V', static CFloat64BE = 150 '\226', 
    static Native = 69 'E'}, count_offset = 340}
#5  0x00007fad4c60ab14 in MR::App::run (this=0x7fff54ac2ee0, argc=12, 
    argv=0x7fff54ac3048) at lib/app.cpp:206
No locals.
#6  0x00000000004133ec in main (argc=12, argv=0x7fff54ac3048)
    at cmd/streamtrack.cpp:115
	app = {<MR::App> = {_vptr.App = 0x650a90, 
    static command_description = 0x6514a0, 
    static command_arguments = 0x6515a0, static command_options = 0x651660, 
    static default_options = {
      {<std::vector<MR::Argument,std::allocator<MR::Argument> >> = {<std::_Vector_base<MR::Argument,std::allocator<MR::Argument> >> = {
            _M_impl = {<std::allocator<MR::Argument>> = {<__gnu_cxx::new_allocator<MR::Argument>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, 
              _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, 
        sname = 0x101 <Address 0x101 out of bounds>, 
        lname = 0x2 <Address 0x2 out of bounds>, desc = 0x0, mandatory = 24, 
        allow_multiple = 254, 
        static End = {<std::vector<MR::Argument,std::allocator<MR::Argument> >> = {<std::_Vector_base<MR::Argument,std::allocator<MR::Argument> >> = {
---Type <return> to continue, or q <return> to quit---
              _M_impl = {<std::allocator<MR::Argument>> = {<__gnu_cxx::new_allocator<MR::Argument>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, 
                _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, 
          sname = 0x0, lname = 0x0, desc = 0x0, mandatory = false, 
          allow_multiple = false, 
          static End = <same as static member of an already seen type>}}, 
      {<std::vector<MR::Argument,std::allocator<MR::Argument> >> = {<std::_Vector_base<MR::Argument,std::allocator<MR::Argument> >> = {
            _M_impl = {<std::allocator<MR::Argument>> = {<__gnu_cxx::new_allocator<MR::Argument>> = {<No data fields>}, <No data fields>}, 
              _M_start = 0x7fad4c8a6660, _M_finish = 0x2a64830, 
              _M_end_of_storage = 0x29c3550}}, <No data fields>}, 
        sname = 0x9d4620 <Address 0x9d4620 out of bounds>, 
        lname = 0xd004164befa1fe18 <Address 0xd004164befa1fe18 out of bounds>, 
        desc = 0x2ffbe32e873dfe18 <Address 0x2ffbe32e873dfe18 out of bounds>, 
        mandatory = true, allow_multiple = false, 
        static End = {<std::vector<MR::Argument,std::allocator<MR::Argument> >> = {<std::_Vector_base<MR::Argument,std::allocator<MR::Argument> >> = {
              _M_impl = {<std::allocator<MR::Argument>> = {<__gnu_cxx::new_allocator<MR::Argument>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, 
                _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, 
          sname = 0x0, lname = 0x0, desc = 0x0, mandatory = false, 
          allow_multiple = false, 
---Type <return> to continue, or q <return> to quit---
          static End = <same as static member of an already seen type>}}, 
      {<std::vector<MR::Argument,std::allocator<MR::Argument> >> = {<std::_Vector_base<MR::Argument,std::allocator<MR::Argument> >> = {
            _M_impl = {<std::allocator<MR::Argument>> = {<__gnu_cxx::new_allocator<MR::Argument>> = {<No data fields>}, <No data fields>}, _M_start = 0x10000, 
              _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, 
        sname = 0x0, lname = 0x0, desc = 0x0, mandatory = false, 
        allow_multiple = false, 
        static End = {<std::vector<MR::Argument,std::allocator<MR::Argument> >> = {<std::_Vector_base<MR::Argument,std::allocator<MR::Argument> >> = {
              _M_impl = {<std::allocator<MR::Argument>> = {<__gnu_cxx::new_allocator<MR::Argument>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, 
                _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, 
          sname = 0x0, lname = 0x0, desc = 0x0, mandatory = false, 
          allow_multiple = false, 
          static End = <same as static member of an already seen type>}}, 
      {<std::vector<MR::Argument,std::allocator<MR::Argument> >> = {<std::_Vector_base<MR::Argument,std::allocator<MR::Argument> >> = {
            _M_impl = {<std::allocator<MR::Argument>> = {<__gnu_cxx::new_allocator<MR::Argument>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, 
              _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, 
        sname = 0x0, lname = 0x0, desc = 0x0, mandatory = false, 
        allow_multiple = false, 
---Type <return> to continue, or q <return> to quit---
        static End = {<std::vector<MR::Argument,std::allocator<MR::Argument> >> = {<std::_Vector_base<MR::Argument,std::allocator<MR::Argument> >> = {
              _M_impl = {<std::allocator<MR::Argument>> = {<__gnu_cxx::new_allocator<MR::Argument>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, 
                _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, 
          sname = 0x0, lname = 0x0, desc = 0x0, mandatory = false, 
          allow_multiple = false, 
          static End = <same as static member of an already seen type>}}, 
      {<std::vector<MR::Argument,std::allocator<MR::Argument> >> = {<std::_Vector_base<MR::Argument,std::allocator<MR::Argument> >> = {
            _M_impl = {<std::allocator<MR::Argument>> = {<__gnu_cxx::new_allocator<MR::Argument>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, 
              _M_finish = 0x0, 
              _M_end_of_storage = 0x7ffffafef8a0}}, <No data fields>}, 
        sname = 0x2 <Address 0x2 out of bounds>, 
        lname = 0x9d1370 <Address 0x9d1370 out of bounds>, desc = 0x0, 
        mandatory = 144, allow_multiple = 175, 
        static End = {<std::vector<MR::Argument,std::allocator<MR::Argument> >> = {<std::_Vector_base<MR::Argument,std::allocator<MR::Argument> >> = {
              _M_impl = {<std::allocator<MR::Argument>> = {<__gnu_cxx::new_allocator<MR::Argument>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, 
                _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, 
          sname = 0x0, lname = 0x0, desc = 0x0, mandatory = false, 
---Type <return> to continue, or q <return> to quit---
          allow_multiple = false, 
          static End = <same as static member of an already seen type>}}}, 
    parsed_arguments = {<std::_Vector_base<const gchar*,std::allocator<const gchar*> >> = {
        _M_impl = {<std::allocator<const gchar*>> = {<__gnu_cxx::new_allocator<const gchar*>> = {<No data fields>}, <No data fields>}, _M_start = 0x654890, 
          _M_finish = 0x6548a8, 
          _M_end_of_storage = 0x6548b0}}, <No data fields>}, 
    parsed_options = {<std::_Vector_base<MR::ParsedOption,std::allocator<MR::ParsedOption> >> = {
        _M_impl = {<std::allocator<MR::ParsedOption>> = {<__gnu_cxx::new_allocator<MR::ParsedOption>> = {<No data fields>}, <No data fields>}, 
          _M_start = 0x654930, _M_finish = 0x6549b0, 
          _M_end_of_storage = 0x6549b0}}, <No data fields>}, 
    argument = {<std::_Vector_base<MR::ArgBase,std::allocator<MR::ArgBase> >> = {
        _M_impl = {<std::allocator<MR::ArgBase>> = {<__gnu_cxx::new_allocator<MR::ArgBase>> = {<No data fields>}, <No data fields>}, _M_start = 0x65acc0, 
          _M_finish = 0x65acf0, 
          _M_end_of_storage = 0x65ad00}}, <No data fields>}, 
    option = {<std::_Vector_base<MR::OptBase,std::allocator<MR::OptBase> >> = {
        _M_impl = {<std::allocator<MR::OptBase>> = {<__gnu_cxx::new_allocator<MR::OptBase>> = {<No data fields>}, <No data fields>}, _M_start = 0x65b680, 
---Type <return> to continue, or q <return> to quit---
          _M_finish = 0x65b700, 
          _M_end_of_storage = 0x65b700}}, <No data fields>}, 
    static log_level = 1}, <No data fields>}
	ret = 0


More information about the Mrtrix-discussion mailing list