<div dir="ltr"><div><div><div>Looks like this is compiler bug relating to SSE and alignment. The Win32 and Win64 Debug builds all use the x87 stack so do not experience this issue.<br><br></div><div>Here is the assembly code from one of the crashing tests:<br>




</div><div><br>    const SpacingType spacing = outputImage-&gt;GetSpacing();<br>000000013FE078C9  mov         rax,qword ptr [rcx]  <br>000000013FE078CC  call        qword ptr [rax+180h]  <br>000000013FE078D2  movaps      xmm0,xmmword ptr [__xmm@3ff00000000000003ff0000000000000 (0140120C10h)]  <br>




<br>    for ( unsigned int i = 0; i &lt; ImageDimension; i++ )<br>      {<br>      coeffs[i] = 1.0 / static_cast&lt; double &gt;( spacing[i] );<br>000000013FE078D9  divpd       xmm0,xmmword ptr [rax] <br><br></div><div>Following it with the debugger, RAX = 0000000002162018 at the divpd instruction.<br>




</div><div><br>The memory operands of divpd must be aligned on 16-byte boundary[1] but as we can see clearly here it is only aligned on 8-byte boundary.<br><br>RAX is last set by the call to GetSpacing (itkGetConstReferenceMacro), here is the assembly for that:<br>




 <br> itkGetConstReferenceMacro(Spacing, SpacingType);<br>000000013F58B720  lea         rax,[rcx+0B8h]  <br>000000013F58B727  ret <br><br></div>RCX = 0000000002111F60<br><br></div>I googled to see if anyone else were having this alignment issue, and it seems not so I wonder if we were doing something to upset the compiler&#39;s &quot;natural&quot; alignment. I tried to use /Zp16 [2] compiler option but it appears to only align to the minimum of the &quot;natural&quot; alignment and the Zp parameter, so it does not work. It seems we are forced to use __declspec(align(16)) [3] for all array declaration to fix this issue but that still leaves user and new code unprotected.<br>



<br></div>Does anyone have any suggestions on how to fix this issue?<br><div><br><div>[1] <a href="http://n0ah.org/mirrors/siyobik.info/instruction/DIVPD.html" target="_blank">http://n0ah.org/mirrors/siyobik.info/instruction/DIVPD.html</a><br>



[2] <a href="http://msdn.microsoft.com/en-us/library/xh3e3fd0.aspx" target="_blank">http://msdn.microsoft.com/en-us/library/xh3e3fd0.aspx</a><br>[3] <a href="http://msdn.microsoft.com/en-us/library/83ythb65%28v=vs.80%29.aspx" target="_blank">http://msdn.microsoft.com/en-us/library/83ythb65%28v=vs.80%29.aspx</a><br>



<br></div></div><div class="gmail_extra"><br clear="all"><div><div dir="ltr">Ho Cheung<br><a href="mailto:hocheung20@gmail.com" target="_blank">hocheung20@gmail.com</a><br>Cell: <a href="tel:%28775%29%20388-2368" value="+17753882368" target="_blank">(775) 388-2368</a></div>


</div>
<br><br><div class="gmail_quote">On Wed, Nov 27, 2013 at 7:23 AM, Bradley Lowekamp <span dir="ltr">&lt;<a href="mailto:blowekamp@mail.nih.gov" target="_blank">blowekamp@mail.nih.gov</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">



<div style="word-wrap:break-word">Just to follow up. On the same system I have a clean VS12 (2013) Win32, I have a nightly build for Win64 with 123 test failures. So this confirms that it&#39;s just a Win64 issue.<div><br>



</div><div>Brad<div><div><br><div><br></div><div><br><div><div>On Nov 26, 2013, at 9:46 AM, Simon Alexander &lt;<a href="mailto:skalexander@gmail.com" target="_blank">skalexander@gmail.com</a>&gt; wrote:</div><br>
<blockquote type="cite"><div dir="ltr">I have the same suspicion.  If I can find the time I will look for root cause and a work around if possible.<div><br></div><div>Unfortunately, regressions took precedence and I haven&#39;t been able to rerun the dashboard.  I&#39;ll look at this again when I have a free machine.</div>





</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Nov 26, 2013 at 8:46 AM, Bradley Lowekamp <span dir="ltr">&lt;<a href="mailto:blowekamp@mail.nih.gov" target="_blank">blowekamp@mail.nih.gov</a>&gt;</span> wrote:<br>





<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word">Hello,<div><br></div><div>Here is my nightly with VS12 32-bit:</div>


<div><br></div><div>


<a href="http://open.cdash.org/buildSummary.php?buildid=3115540" target="_blank">http://open.cdash.org/buildSummary.php?buildid=3115540</a></div><div><br></div><div>It comes back clean.</div><div><br></div><div>There reports have also been that VS12 64-bit in Debug is clean.</div>





<div><br></div><div>Also Simon reports:</div><div><br></div><div><blockquote type="cite"><div dir="ltr"><div><span style="font-family:arial,sans-serif;font-size:13px">These seem to maybe be related to copy ctor on itk::Vector types and the optimizer (VS12, 64 bit)</span><br>





</div><div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">e.g.</div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">





<br></div><div style="font-family:arial,sans-serif;font-size:13px">code that looks like this:</div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">





<div> typedef typename TOutputImage::SpacingType SpacingType;</div><div> const SpacingType spacing = outputImage-&gt;GetSpacing();</div></div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">





leads to a segfault as soon as spacing is accessed (in Release mode, not Debug)</div></div></div></blockquote></div><div><blockquote type="cite"><div dir="ltr"><div style="font-family:arial,sans-serif;font-size:13px">but </div>





<div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px"><div> typedef typename TOutputImage::SpacingType SpacingType;</div><div> const SpacingType &amp;spacing = outputImage-&gt;GetSpacing();</div>





</div></div></blockquote><br></div><div>I am very suspicious that this is not a bug in ITK.</div><div><div><div><div dir="ltr"><div style="font-family:arial,sans-serif;font-size:13px"><br></div></div>

</div><div><div dir="ltr"><div><div style="font-family:arial,sans-serif;font-size:13px"><br></div></div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">





<br></div></div></div><div><br><div><div>On Nov 25, 2013, at 10:39 PM, Ho Cheung &lt;<a href="mailto:hocheung20@gmail.com" target="_blank">hocheung20@gmail.com</a>&gt; wrote:</div><br><blockquote type="cite">
<div style="word-wrap:break-word">Here’s v4.5rc01 on VS2013 Ultimate 64-bit Release mode. Seems like still quite a lot of segfaults. I’ll have a closer look when I get some time off over Thanksgiving weekend if not solved by then.<div>





<br></div><div><a href="http://open.cdash.org/buildSummary.php?buildid=3114945" target="_blank">http://open.cdash.org/buildSummary.php?buildid=3114945</a> <div><br></div><div>On Nov 25, 2013, at 8:52 AM, Simon Alexander &lt;<a href="mailto:skalexander@gmail.com" target="_blank">skalexander@gmail.com</a>&gt; wrote:<div>





<br><blockquote type="cite"><div dir="ltr">Bradley,<div><br></div><div>Thanks, missed adding the list.  My builds are all 64 bit on 64 bit OS.  I will pull a new copy of master  tonight and manually run the dashboard.</div>





</div><div class="gmail_extra">

<br><br><div class="gmail_quote">On Mon, Nov 25, 2013 at 9:36 AM, Bradley Lowekamp <span dir="ltr">&lt;<a href="mailto:blowekamp@mail.nih.gov" target="_blank">blowekamp@mail.nih.gov</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">







<div style="word-wrap:break-word">Simon,<div><br></div><div>I am including the developers list.</div><div><br></div><div>My nightly is 32-bit, perhaps thats related? I&#39;ll configure up a 64-bit build nightly too, to see if that&#39;s different.</div>







<div><br></div><div>You likely should start with a clean master repo, as start with a fresh CMake configured build too. Results shared on the dashboard are welcomed.</div><div><br></div><div>Brad</div><div>

<div><br></div><div><br></div><div><br><div><div>On Nov 25, 2013, at 9:25 AM, Simon Alexander &lt;<a href="mailto:skalexander@gmail.com" target="_blank">skalexander@gmail.com</a>&gt; wrote:</div><br><blockquote type="cite">







<div dir="ltr">Hi Bradley,<div><br></div><div>It is interesting that the build does not show the same pattern of errors.  If it is helpful I can run the ctest suite again here (win x64, 64 bit builds) but there are certainly things I can&#39;t test (like the wrapping).</div>









<div><br></div><div>cheers,</div><div>Simon</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sat, Nov 23, 2013 at 4:07 PM, Bradley Lowekamp <span dir="ltr">&lt;<a href="mailto:blowekamp@mail.nih.gov" target="_blank">blowekamp@mail.nih.gov</a>&gt;</span> wrote:<br>









<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hello,<br>
<br>
Thanks for all who have contributed patches and reviews in the last couple of days in preparation of the release candidate.<br>
<br>
I am expecting a good dashboard tomorrow, which should have WrapITK, and VS12 ( 2013 ) green. Here are a couple experimental build I have fired off:<br>
<br>
<a href="http://open.cdash.org/buildSummary.php?buildid=3112037" target="_blank">http://open.cdash.org/buildSummary.php?buildid=3112037</a><br>
<a href="http://open.cdash.org/buildSummary.php?buildid=3112076" target="_blank">http://open.cdash.org/buildSummary.php?buildid=3112076</a><br>
<br>
Interestingly, VS12 has not test failure which is different than had been reported by others.<br>
<br>
Thanks,<br>
Brad<br>
_______________________________________________<br>
Powered by <a href="http://www.kitware.com/" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at<br>
<a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Kitware offers ITK Training Courses, for more information visit:<br>
<a href="http://kitware.com/products/protraining.php" target="_blank">http://kitware.com/products/protraining.php</a><br>
<br>
Please keep messages on-topic and check the ITK FAQ at:<br>
<a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.itk.org/mailman/listinfo/insight-developers" target="_blank">http://www.itk.org/mailman/listinfo/insight-developers</a><br>
</blockquote></div><br></div>
</blockquote></div><br></div></div></div></blockquote></div><br></div>
_______________________________________________<br>Powered by <a href="http://www.kitware.com/" target="_blank">www.kitware.com</a><br><br>Visit other Kitware open-source projects at<br><a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>





<br>Kitware offers ITK Training Courses, for more information visit:<br><a href="http://kitware.com/products/protraining.php" target="_blank">http://kitware.com/products/protraining.php</a><br><br>Please keep messages on-topic and check the ITK FAQ at:<br>





<a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br><br>Follow this link to subscribe/unsubscribe:<br><a href="http://www.itk.org/mailman/listinfo/insight-developers" target="_blank">http://www.itk.org/mailman/listinfo/insight-developers</a><br>





</blockquote></div><br></div></div></div></blockquote></div><br></div></div></div></div></blockquote></div><br></div>
</blockquote></div><br></div></div></div></div></div></blockquote></div><br></div><div class="gmail_extra">ue, <br></div></div>