<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
{font-family:Verdana;
panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-reply;
font-family:"Calibri","sans-serif";
color:#1F497D;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri","sans-serif";}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<!--ppd47--><!--ppd60--><!--ppd48-->
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Without looking at any code other that what you posted, I would say the new allocation is unaligned and the stack allocation is aligned. The _mm256_store_pd
operation requires an aligned address. In this modern day and age, the compiler knows enough to align the stack address of the variable, but still doesn’t align a heap allocation.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<br>
<br>
<span id="ppe_48">
<div align="left">
<p style="align: left">
<table cellspacing="0" cellpadding="2" width="460" border="0">
<tbody>
<tr>
<td colspan="2"><img src="http://download2.nikon.net/images/logo/grey_div.gif" width="408" height="6"></td>
</tr>
<tr>
<td valign="top" width="106"><img src="http://download2.nikon.net/images/logo/bsymbol.gif" width="106" height="108"></td>
<td valign="top">
<table cellspacing="0" cellpadding="1" width="440" border="0">
<tbody>
<tr valign="top">
<td colspan="2"><strong><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Khouri Giordano</font></strong></td>
</tr>
<tr valign="top">
<td colspan="2"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Software Technology Researcher</font></td>
</tr>
<tr>
<td colspan="2"><font size="1"><img src="http://download2.nikon.net/images/logo/spacer.gif" width="15" height="4"></font></td>
</tr>
<tr>
<td colspan="2"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Nikon Inc.</font></td>
</tr>
<tr>
<td colspan="2"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">1300 Walt Whitman Road</font></td>
</tr>
<tr>
<td colspan="2"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Melville NY 11747-3064</font></td>
</tr>
<tr>
<td colspan="2"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"></font></td>
</tr>
<tr>
<td width="150"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Office: 631-547-4335</font></td>
<td><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Fax: 631-547-0361</font></td>
</tr>
<tr>
<td><font size="1" face="Verdana, Arial, Helvetica, sans-serif"></font></td>
<td><font size="1" face="Verdana, Arial, Helvetica, sans-serif"></font></td>
</tr>
<tr>
<td><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><a href="mailto:kgiordano@nikon.net">kgiordano@nikon.net</a></font></td>
<td>
<p></p>
<p> </p>
</td>
</tr>
<tr>
<td>
<p><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><a href="www.nikonusa.com">www.nikonusa.com</a></font></p>
</td>
<td> </td>
</tr>
</tbody>
</table>
<p><font size="1"></font> </p>
</td>
</tr>
</tbody>
</table>
</p>
</div>
</span><br>
<br>
<span id="ppe_60"><a href="http://www.nikonusa.com/en/Nikon-Products/Product/Digital-SLR-Cameras/1532/D3300.html" target="_blank"><img border="0" src="http://download2.nikon.net/images/logo/email-sig-1-7.jpg">
</a></span>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> vc-bounces@compeng.uni-frankfurt.de [mailto:vc-bounces@compeng.uni-frankfurt.de]
<b>On Behalf Of </b>Georgios Bitzes<br>
<b>Sent:</b> Thursday, February 20, 2014 8:42 AM<br>
<b>To:</b> vc@compeng.uni-frankfurt.de<br>
<b>Subject:</b> Segmentation fault when using Vc::Memory as a member of a heap-allocated object<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">Hi everyone,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">I would like to report an issue I came across while using Vc. Here is a short example that reproduces it:<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
</div>
<blockquote style="margin-left:30.0pt;margin-right:0in">
<div>
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">#include <Vc/Vc></span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">class A {</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""> private:</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""> Vc::Memory<Vc::double_v, 3> internal;</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">};</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">int main() {</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""> std::cout << "size: " << Vc::double_v::Size << std::endl;</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""> A *a = new A();</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""> return 0;</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">}</span><o:p></o:p></p>
</div>
</div>
</div>
</div>
</blockquote>
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">The example compiles but segfaults during the creation of object a.<o:p></o:p></span></p>
</div>
</div>
<blockquote style="margin-left:30.0pt;margin-right:0in">
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">$ ./a.out </span><o:p></o:p></p>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">size: 4</span><o:p></o:p></p>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">Segmentation fault</span><o:p></o:p></p>
</div>
</div>
</div>
</blockquote>
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">Backtrace:<o:p></o:p></span></p>
</div>
</div>
<blockquote style="margin-left:30.0pt;margin-right:0in">
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">$ gdb ./a.out<br>
GNU gdb (GDB) 7.5.91.20130417-cvs-ubuntu<br>
Copyright (C) 2013 Free Software Foundation, Inc.<br>
License GPLv3+: GNU GPL version 3 or later <<a href="http://gnu.org/licenses/gpl.html">http://gnu.org/licenses/gpl.html</a>><br>
This is free software: you are free to change and redistribute it.<br>
There is NO WARRANTY, to the extent permitted by law. Type "show copying"<br>
and "show warranty" for details.<br>
This GDB was configured as "x86_64-linux-gnu".<br>
For bug reporting instructions, please see:<br>
<<a href="http://www.gnu.org/software/gdb/bugs/">http://www.gnu.org/software/gdb/bugs/</a>>...<br>
Reading symbols from /tmp/vcmemory/a.out...done.<br>
(gdb) r<br>
Starting program: /tmp/vcmemory/a.out<br>
size: 4<br>
Program received signal SIGSEGV, Segmentation fault.<br>
0x000000000040142f in _mm256_store_pd (__A=..., __P=0x604010) at /usr/lib/gcc/x86_64-linux-gnu/4.7/include/avxintrin.h:829<br>
829 *(__m256d *)__P = __A;<br>
(gdb) bt<br>
#0 0x000000000040142f in _mm256_store_pd (__A=..., __P=0x604010) at /usr/lib/gcc/x86_64-linux-gnu/4.7/include/avxintrin.h:829<br>
#1 store<Vc::v0::Public::{anonymous}::LoadStoreFlags<> > (x=..., mem=0x604010) at /opt/Vc-a1d8b9fc31060d870386613cc72319546c850b87/include/Vc/avx/vectorhelper.h:106<br>
#2 store<double, Vc::v0::Public::{anonymous}::LoadStoreFlags<> > (flags=..., mem=0x604010, this=0x7fffffffe420) at /opt/Vc-a1d8b9fc31060d870386613cc72319546c850b87/include/Vc/avx/vector.tcc:236<br>
#3 store<Vc::v0::Public::{anonymous}::LoadStoreFlags<> > (flags=..., mem=0x604010, this=<optimized out>) at /opt/Vc-a1d8b9fc31060d870386613cc72319546c850b87/include/Vc/avx/vector.h:174<br>
#4 operator=<Vc::v0::AVX::Vector<double> > (x=..., this=0x604010) at /opt/Vc-a1d8b9fc31060d870386613cc72319546c850b87/include/Vc/common/memorybase.h:85<br>
#5 Vc::v0::Common::Memory<Vc::v0::AVX::Vector<double>, 3ul, 0ul, true>::Memory (this=0x604010) at /opt/Vc-a1d8b9fc31060d870386613cc72319546c850b87/include/Vc/common/memory.h:293<br>
#6 0x00000000004011aa in A::A (this=0x604010) at main.cpp:4<br>
#7 0x00000000004010fa in main () at main.cpp:11</span><o:p></o:p></p>
</blockquote>
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">The above code was compiled with: <o:p></o:p></span></p>
</div>
<blockquote style="margin-left:30.0pt;margin-right:0in">
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">g++ -fabi-version=6 -m64 -std=c++11 -g -fpermissive -ffast-math -finline-limit=10000000 -mavx -ftree-vectorize main.cpp -I/opt/Vc-a1d8b9fc31060d870386613cc72319546c850b87/include -L/opt/Vc-a1d8b9fc31060d870386613cc72319546c850b87/lib/
-lVc -std=c++11<o:p></o:p></span></p>
</div>
</blockquote>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">I took the latest commit of Vc (a1d8b9fc31060d870386613cc72319546c850b87), compiled and run on a Xeon E3-1280 v3 (Haswell) @ 3.60 GHz by g++ version 4.7.3-2ubuntu4.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">On the contrary, if I replace "A *a = new A()" with "A a()" it runs fine. This appears to happen only when the object is allocated on the heap, not on the stack.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">Is this a bug on the part of Vc or am I doing something wrong?<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif""><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana","sans-serif"">Cheers<o:p></o:p></span></p>
</div>
</div>
</div>
</div>
<br>
<br>
<span id="ppe_47">
<div align="left">
<p><u><span style="FONT-SIZE: 7.5pt">CONFIDENTIAL:</span></u><span style="FONT-SIZE: 7.5pt"><br>
This e-mail including any attachments is intended only for the party or parties to whom it is addressed and may contain information which is privileged and/or confidential. If you are not the intended recipient, you are hereby notified that any use, disclosure,
dissemination, distribution, copying, or printing of any information contained in or attached to this e-mail is STRICTLY PROHIBITED and may constitute a breach of confidentiality and/or privilege. If you have received this e-mail in error, please notify immediately
the sender by reply e-mail and then delete this e-mail and any attachments in their entirety from your system. Thank you. This e-mail message including any attachments is believed to be free of any viruses; however, it is the sole responsibility of the recipient
to ensure that it is virus free, and Nikon does not accept any responsibility for any loss, disruption or damage to your data or computer system which may occur in connection with this e-mail including any attachments.</span></p>
<p><span style="FONT-SIZE: 7.5pt"></span><span style="FONT-SIZE: 10pt"><O:P></O:P></span></p>
</div>
</span>
</body>
</html>