Hello,

If you can come up with minimal code to reproduce the MSVC12 bug, then I can 
report it to them.

Thanks,
Brad

On Nov 29, 2013, at 3:36 PM, Ho Cheung <[email protected]> wrote:

> 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.
> 
> Here is the assembly code from one of the crashing tests:
> 
>     const SpacingType spacing = outputImage->GetSpacing();
> 000000013FE078C9  mov         rax,qword ptr [rcx]  
> 000000013FE078CC  call        qword ptr [rax+180h]  
> 000000013FE078D2  movaps      xmm0,xmmword ptr 
> [__xmm@3ff00000000000003ff0000000000000 (0140120C10h)]  
> 
>     for ( unsigned int i = 0; i < ImageDimension; i++ )
>       {
>       coeffs[i] = 1.0 / static_cast< double >( spacing[i] );
> 000000013FE078D9  divpd       xmm0,xmmword ptr [rax] 
> 
> Following it with the debugger, RAX = 0000000002162018 at the divpd 
> instruction.
> 
> 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.
> 
> RAX is last set by the call to GetSpacing (itkGetConstReferenceMacro), here 
> is the assembly for that:
>  
>  itkGetConstReferenceMacro(Spacing, SpacingType);
> 000000013F58B720  lea         rax,[rcx+0B8h]  
> 000000013F58B727  ret 
> 
> RCX = 0000000002111F60
> 
> 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's 
> "natural" alignment. I tried to use /Zp16 [2] compiler option but it appears 
> to only align to the minimum of the "natural" 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.
> 
> Does anyone have any suggestions on how to fix this issue?
> 
> [1] http://n0ah.org/mirrors/siyobik.info/instruction/DIVPD.html
> [2] http://msdn.microsoft.com/en-us/library/xh3e3fd0.aspx
> [3] http://msdn.microsoft.com/en-us/library/83ythb65%28v=vs.80%29.aspx
> 
> 
> Ho Cheung
> [email protected]
> Cell: (775) 388-2368
> 
> 
> On Wed, Nov 27, 2013 at 7:23 AM, Bradley Lowekamp <[email protected]> 
> wrote:
> 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's just a Win64 issue.
> 
> Brad
> 
> 
> 
> On Nov 26, 2013, at 9:46 AM, Simon Alexander <[email protected]> wrote:
> 
>> I have the same suspicion.  If I can find the time I will look for root 
>> cause and a work around if possible.
>> 
>> Unfortunately, regressions took precedence and I haven't been able to rerun 
>> the dashboard.  I'll look at this again when I have a free machine.
>> 
>> 
>> On Tue, Nov 26, 2013 at 8:46 AM, Bradley Lowekamp <[email protected]> 
>> wrote:
>> Hello,
>> 
>> Here is my nightly with VS12 32-bit:
>> 
>> http://open.cdash.org/buildSummary.php?buildid=3115540
>> 
>> It comes back clean.
>> 
>> There reports have also been that VS12 64-bit in Debug is clean.
>> 
>> Also Simon reports:
>> 
>>> These seem to maybe be related to copy ctor on itk::Vector types and the 
>>> optimizer (VS12, 64 bit)
>>> 
>>> e.g.
>>> 
>>> 
>>> code that looks like this:
>>> 
>>>  typedef typename TOutputImage::SpacingType SpacingType;
>>>  const SpacingType spacing = outputImage->GetSpacing();
>>> 
>>> leads to a segfault as soon as spacing is accessed (in Release mode, not 
>>> Debug)
>> 
>>> but 
>>> 
>>>  typedef typename TOutputImage::SpacingType SpacingType;
>>>  const SpacingType &spacing = outputImage->GetSpacing();
>> 
>> I am very suspicious that this is not a bug in ITK.
>> 
>> 
>> 
>> 
>> 
>> On Nov 25, 2013, at 10:39 PM, Ho Cheung <[email protected]> wrote:
>> 
>>> 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.
>>> 
>>> http://open.cdash.org/buildSummary.php?buildid=3114945 
>>> 
>>> On Nov 25, 2013, at 8:52 AM, Simon Alexander <[email protected]> wrote:
>>> 
>>>> Bradley,
>>>> 
>>>> 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.
>>>> 
>>>> 
>>>> On Mon, Nov 25, 2013 at 9:36 AM, Bradley Lowekamp <[email protected]> 
>>>> wrote:
>>>> Simon,
>>>> 
>>>> I am including the developers list.
>>>> 
>>>> My nightly is 32-bit, perhaps thats related? I'll configure up a 64-bit 
>>>> build nightly too, to see if that's different.
>>>> 
>>>> 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.
>>>> 
>>>> Brad
>>>> 
>>>> 
>>>> 
>>>> On Nov 25, 2013, at 9:25 AM, Simon Alexander <[email protected]> wrote:
>>>> 
>>>>> Hi Bradley,
>>>>> 
>>>>> 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't test (like the 
>>>>> wrapping).
>>>>> 
>>>>> cheers,
>>>>> Simon
>>>>> 
>>>>> 
>>>>> On Sat, Nov 23, 2013 at 4:07 PM, Bradley Lowekamp 
>>>>> <[email protected]> wrote:
>>>>> Hello,
>>>>> 
>>>>> Thanks for all who have contributed patches and reviews in the last 
>>>>> couple of days in preparation of the release candidate.
>>>>> 
>>>>> 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:
>>>>> 
>>>>> http://open.cdash.org/buildSummary.php?buildid=3112037
>>>>> http://open.cdash.org/buildSummary.php?buildid=3112076
>>>>> 
>>>>> Interestingly, VS12 has not test failure which is different than had been 
>>>>> reported by others.
>>>>> 
>>>>> Thanks,
>>>>> Brad
>>>>> _______________________________________________
>>>>> 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://www.itk.org/mailman/listinfo/insight-developers
>>>>> 
>>>> 
>>>> 
>>>> _______________________________________________
>>>> 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://www.itk.org/mailman/listinfo/insight-developers
>>> 
>> 
>> 
> 
> 
> ue, 

_______________________________________________
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://www.itk.org/mailman/listinfo/insight-developers

Reply via email to