It is a bug in the interpolation API.
It doesn't account for the size of the region in which the function
evaluation is done.
Only the point at which an evaluation is done is ever checked in the
hierarchy of code that is called. The points which are evaluated to get
the interpolated value are not checked, and if they are not valid, then
an invalid memory read or segmentation fault occurs.
--Simon
On 9/20/2016 12:00 PM, insight-developers-requ...@itk.org wrote:
Send Insight-developers mailing list submissions to
insight-developers@itk.org
To subscribe or unsubscribe via the World Wide Web, visit
https://urldefense.proofpoint.com/v2/url?u=http-3A__public.kitware.com_mailman_listinfo_insight-2Ddevelopers&d=CwICAg&c=qS4goWBT7poplM69zy_3xhKwEW14JZMSdioCoppxeFU&r=spboX-Qn5Dn-uyspT__O0BtpSEF5erHIiRAwdzSaa_QAQ58afxHcHSMuB76pSgfl&m=HFczLLy-F4uhK-1hDmjBJAGPlMm2sUfpyYm6eA1dNzw&s=WbKAgN9KwXSjz8u0FDu7jhXRlLIeA5UUkqkvHeli9ek&e=
or, via email, send a message with subject or body 'help' to
insight-developers-requ...@itk.org
You can reach the person managing the list at
insight-developers-ow...@itk.org
When replying, please edit your Subject line so it is more specific
than "Re: Contents of Insight-developers digest..."
Today's Topics:
1.
itk::LinearInterpolateImageFunction::EvaluateAtContinuousIndex()
-- what is intended behaviour outside of image? (Steve M. Robbins)
2. Re:
itk::LinearInterpolateImageFunction::EvaluateAtContinuousIndex()
-- what is intended behaviour outside of image? (D?enan Zuki?)
----------------------------------------------------------------------
Message: 1
Date: Mon, 19 Sep 2016 16:38:58 -0500
From: "Steve M. Robbins" <st...@sumost.ca>
To: ITK developer mailing list <insight-developers@itk.org>
Cc: elas...@bigr.nl
Subject: [ITK-dev]
itk::LinearInterpolateImageFunction::EvaluateAtContinuousIndex() --
what is intended behaviour outside of image?
Message-ID: <20160919213858.yx4rb56iie4k7...@sumost.ca>
Content-Type: text/plain; charset="us-ascii"
Hi,
The doc for this function doesn't make it clear whether the user may
call it with an index point that lies outside the image or not. I can
tell you that the code doesn't check the bounds, resulting in
uninitialized memory reads [1].
My question is: is that a user error or bug in the evaluation
function?
If I read the ITK 4.8.2 code correctly, it looks like it takes care of
the lower index bound, but not the upper index bound -- so ITK bug?
Thanks,
-Steve
[1]
https://urldefense.proofpoint.com/v2/url?u=http-3A__my.cdash.org_viewDynamicAnalysisFile.php-3Fid-3D3780109&d=CwICAg&c=qS4goWBT7poplM69zy_3xhKwEW14JZMSdioCoppxeFU&r=spboX-Qn5Dn-uyspT__O0BtpSEF5erHIiRAwdzSaa_QAQ58afxHcHSMuB76pSgfl&m=HFczLLy-F4uhK-1hDmjBJAGPlMm2sUfpyYm6eA1dNzw&s=dAaswv1c2FewCPDUiwr98T1ca9lOmmzukQgitIsrXok&e=
Elastix test suite creates a 2D image of size 10x10, then calls
the interpolator with coordinates { 12.7, 15.3 }. I believe
that is the cause of this diagnostic:
UMR ==26834== Invalid read of size 2
==26834== at 0x62AE77: itk::LinearInterpolateImageFunction<itk::Image<short, 2u>,
double>::EvaluateOptimized(itk::LinearInterpolateImageFunction<itk::Image<short, 2u>,
double>::Dispatch<2u> const&, itk::ContinuousIndex<double, 2u> const&) const
(itkLinearInterpolateImageFunction.h:172)
==26834== by 0x62228A: itk::LinearInterpolateImageFunction<itk::Image<short, 2u>,
double>::EvaluateAtContinuousIndex(itk::ContinuousIndex<double, 2u> const&) const
(itkLinearInterpolateImageFunction.h:99)
==26834== by 0x61C431: bool TestInterpolators<2u>()
(itkAdvancedLinearInterpolatorTest.cxx:171)
==26834== by 0x616CD2: main (itkAdvancedLinearInterpolatorTest.cxx:279)
(Later, the code does an out-of-image call in 3D as well)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL:
<https://urldefense.proofpoint.com/v2/url?u=http-3A__public.kitware.com_pipermail_insight-2Ddevelopers_attachments_20160919_ed2a4b74_attachment-2D0001.sig&d=CwICAg&c=qS4goWBT7poplM69zy_3xhKwEW14JZMSdioCoppxeFU&r=spboX-Qn5Dn-uyspT__O0BtpSEF5erHIiRAwdzSaa_QAQ58afxHcHSMuB76pSgfl&m=HFczLLy-F4uhK-1hDmjBJAGPlMm2sUfpyYm6eA1dNzw&s=7_cM6yi5GMBfxeVRyX9FDCNaXTT_nwTsg01NLa-30j0&e=
>
------------------------------
Message: 2
Date: Tue, 20 Sep 2016 09:00:24 -0400
From: D?enan Zuki? <dzen...@gmail.com>
To: "Steve M. Robbins" <st...@sumost.ca>
Cc: "Hans J. Johnson" <hans-john...@uiowa.edu>, ITK developer mailing
list <insight-developers@itk.org>, elas...@bigr.nl
Subject: Re: [ITK-dev]
itk::LinearInterpolateImageFunction::EvaluateAtContinuousIndex() --
what is intended behaviour outside of image?
Message-ID:
<CAPf2UMS9VXW9UAQ0PwkFNiRHJZNqOwm1C7deyYYF+uZ=g2g...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"
Hi Steve,
this function is not supposed to do bounds checking. Bounds checking can be
done with IsInsideBuffer(). The commit which introduced the code:
Revision: 6abbc7969a90786c4c73f5d191f634db536c2d1d
Author: Hans Johnson <hans-john...@uiowa.edu>
Date: 2010-08-05 22:35:42
Message:
Made USE_OPTIMIZED_REGISTRATION the default
The ITK_USE_OPTIMIZED_REGISTRATION is now the default
behavior. There is no longer another option.
Maybe Hans can explain why the lower bounds are checked but not the upper.
Otherwise you can try removing them and submitting
<https://urldefense.proofpoint.com/v2/url?u=http-3A__itk.org_Wiki_ITK_Git_Develop&d=CwICAg&c=qS4goWBT7poplM69zy_3xhKwEW14JZMSdioCoppxeFU&r=spboX-Qn5Dn-uyspT__O0BtpSEF5erHIiRAwdzSaa_QAQ58afxHcHSMuB76pSgfl&m=HFczLLy-F4uhK-1hDmjBJAGPlMm2sUfpyYm6eA1dNzw&s=ZfDuSqeuqNURhOT8lNMXJXYMBhp73A4icvZnVrpogxA&e=
> a patch Steve.
Regards,
D?enan
On Mon, Sep 19, 2016 at 5:38 PM, Steve M. Robbins <st...@sumost.ca> wrote:
Hi,
The doc for this function doesn't make it clear whether the user may
call it with an index point that lies outside the image or not. I can
tell you that the code doesn't check the bounds, resulting in
uninitialized memory reads [1].
My question is: is that a user error or bug in the evaluation
function?
If I read the ITK 4.8.2 code correctly, it looks like it takes care of
the lower index bound, but not the upper index bound -- so ITK bug?
Thanks,
-Steve
[1]
https://urldefense.proofpoint.com/v2/url?u=http-3A__my.cdash.org_viewDynamicAnalysisFile.php-3Fid-3D3780109&d=CwICAg&c=qS4goWBT7poplM69zy_3xhKwEW14JZMSdioCoppxeFU&r=spboX-Qn5Dn-uyspT__O0BtpSEF5erHIiRAwdzSaa_QAQ58afxHcHSMuB76pSgfl&m=HFczLLy-F4uhK-1hDmjBJAGPlMm2sUfpyYm6eA1dNzw&s=dAaswv1c2FewCPDUiwr98T1ca9lOmmzukQgitIsrXok&e=
Elastix test suite creates a 2D image of size 10x10, then calls
the interpolator with coordinates { 12.7, 15.3 }. I believe
that is the cause of this diagnostic:
UMR ==26834== Invalid read of size 2
==26834== at 0x62AE77: itk::LinearInterpolateImageFunction<itk::Image<short,
2u>,
double>::EvaluateOptimized(itk::LinearInterpolateImageFunction<itk::Image<short,
2u>, double>::Dispatch<2u> const&, itk::ContinuousIndex<double, 2u> const&)
const (itkLinearInterpolateImageFunction.h:172)
==26834== by 0x62228A: itk::LinearInterpolateImageFunction<itk::Image<short,
2u>, double>::EvaluateAtContinuousIndex(itk::ContinuousIndex<double, 2u>
const&) const (itkLinearInterpolateImageFunction.h:99)
==26834== by 0x61C431: bool TestInterpolators<2u>() (
itkAdvancedLinearInterpolatorTest.cxx:171)
==26834== by 0x616CD2: main (itkAdvancedLinearInterpolatorTest.cxx:279)
(Later, the code does an out-of-image call in 3D as well)
_______________________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
https://urldefense.proofpoint.com/v2/url?u=http-3A__www.kitware.com_opensource_opensource.html&d=CwICAg&c=qS4goWBT7poplM69zy_3xhKwEW14JZMSdioCoppxeFU&r=spboX-Qn5Dn-uyspT__O0BtpSEF5erHIiRAwdzSaa_QAQ58afxHcHSMuB76pSgfl&m=HFczLLy-F4uhK-1hDmjBJAGPlMm2sUfpyYm6eA1dNzw&s=Rc4Rwkix_LmsETzhqKvf7Q-kEcFPtKkVb1xzRn5k1B8&e=
Kitware offers ITK Training Courses, for more information visit:
https://urldefense.proofpoint.com/v2/url?u=http-3A__kitware.com_products_protraining.php&d=CwICAg&c=qS4goWBT7poplM69zy_3xhKwEW14JZMSdioCoppxeFU&r=spboX-Qn5Dn-uyspT__O0BtpSEF5erHIiRAwdzSaa_QAQ58afxHcHSMuB76pSgfl&m=HFczLLy-F4uhK-1hDmjBJAGPlMm2sUfpyYm6eA1dNzw&s=Z9xgtbLlbYxa0EsHHoBoxlm_7hRlGiNDxmAo36JDWSg&e=
Please keep messages on-topic and check the ITK FAQ at:
https://urldefense.proofpoint.com/v2/url?u=http-3A__www.itk.org_Wiki_ITK-5FFAQ&d=CwICAg&c=qS4goWBT7poplM69zy_3xhKwEW14JZMSdioCoppxeFU&r=spboX-Qn5Dn-uyspT__O0BtpSEF5erHIiRAwdzSaa_QAQ58afxHcHSMuB76pSgfl&m=HFczLLy-F4uhK-1hDmjBJAGPlMm2sUfpyYm6eA1dNzw&s=r4DOIPoHB1kBr-eH7IGUEB4Bz0c_tjw6UM2TcWf3UE0&e=
Follow this link to subscribe/unsubscribe:
https://urldefense.proofpoint.com/v2/url?u=http-3A__public.kitware.com_mailman_listinfo_insight-2Ddevelopers&d=CwICAg&c=qS4goWBT7poplM69zy_3xhKwEW14JZMSdioCoppxeFU&r=spboX-Qn5Dn-uyspT__O0BtpSEF5erHIiRAwdzSaa_QAQ58afxHcHSMuB76pSgfl&m=HFczLLy-F4uhK-1hDmjBJAGPlMm2sUfpyYm6eA1dNzw&s=WbKAgN9KwXSjz8u0FDu7jhXRlLIeA5UUkqkvHeli9ek&e=
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<https://urldefense.proofpoint.com/v2/url?u=http-3A__public.kitware.com_pipermail_insight-2Ddevelopers_attachments_20160920_87669e73_attachment-2D0001.html&d=CwICAg&c=qS4goWBT7poplM69zy_3xhKwEW14JZMSdioCoppxeFU&r=spboX-Qn5Dn-uyspT__O0BtpSEF5erHIiRAwdzSaa_QAQ58afxHcHSMuB76pSgfl&m=HFczLLy-F4uhK-1hDmjBJAGPlMm2sUfpyYm6eA1dNzw&s=IqLCJKLvdLlRAask4nBb1yqbajH_LGSvGX-5JE1Fdgw&e=
>
------------------------------
Subject: Digest Footer
_______________________________________________
Insight-developers mailing list
Insight-developers@itk.org
https://urldefense.proofpoint.com/v2/url?u=http-3A__public.kitware.com_mailman_listinfo_insight-2Ddevelopers&d=CwICAg&c=qS4goWBT7poplM69zy_3xhKwEW14JZMSdioCoppxeFU&r=spboX-Qn5Dn-uyspT__O0BtpSEF5erHIiRAwdzSaa_QAQ58afxHcHSMuB76pSgfl&m=HFczLLy-F4uhK-1hDmjBJAGPlMm2sUfpyYm6eA1dNzw&s=WbKAgN9KwXSjz8u0FDu7jhXRlLIeA5UUkqkvHeli9ek&e=
------------------------------
End of Insight-developers Digest, Vol 149, Issue 8
**************************************************
--
Simon K. Warfield, Ph.D.
Thorne Griscom Chair and Professor of Radiology
Harvard Medical School
Director of Radiology Research
Director Computational Radiology Laboratory
Department of Radiology
Boston Children's Hospital
_______________________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Kitware offers ITK Training Courses, for more information visit:
http://kitware.com/products/protraining.php
Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/insight-developers