<html>#2832: possible race condition in LoopControl
<table style='border-spacing: 1ex 0pt; '>
<tr><td style='text-align:right'> Reporter:</td><td>Roland Haas</td></tr>
<tr><td style='text-align:right'> Status:</td><td>new</td></tr>
<tr><td style='text-align:right'>Milestone:</td><td></td></tr>
<tr><td style='text-align:right'> Version:</td><td></td></tr>
<tr><td style='text-align:right'> Type:</td><td>bug</td></tr>
<tr><td style='text-align:right'> Priority:</td><td>major</td></tr>
<tr><td style='text-align:right'>Component:</td><td></td></tr>
</table>
<p>Comment (by Roland Haas):</p>
<p>There’s <code>alignas</code> since C++11: <a data-is-external-link="true" href="https://en.cppreference.com/w/cpp/language/alignas" rel="nofollow">https://en.cppreference.com/w/cpp/language/alignas</a> though this may not be any different from <code>CCTK_ATTRIBUTE_ALIGN</code> and indeed </p>
<div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><vector></span><span class="cp"></span>
<span class="kr">struct</span> <span class="nf">alignas</span><span class="p">(</span><span class="mi">128</span><span class="p">)</span> <span class="n">aligned_t</span> <span class="p">{</span>
<span class="kr">volatile</span> <span class="kr">int</span> <span class="n">foo</span><span class="p">;</span>
<span class="p">};</span>
<span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">aligned_t</span><span class="o">></span> <span class="n">test_aligned_vector</span><span class="p">;</span>
<span class="n">aligned_t</span> <span class="o">*</span><span class="n">aligned</span><span class="p">;</span>
<span class="kr">void</span> <span class="nf">foo</span><span class="p">()</span> <span class="p">{</span>
<span class="n">aligned</span> <span class="o">=</span> <span class="k">new</span> <span class="n">aligned_t</span><span class="p">();</span>
<span class="p">}</span>
</code></pre></div>
<p>gives the same warning when compiled with <code>g++ -std=gnu++11 -c -Wall</code> (only warns about <code>new</code> not about <code>std::vector</code> but I suspect that <code>std::vector</code> also does not align and only hides the issue because it internally uses a <code>void*</code> pointer for its storage).</p>
<p>--<br/>
Ticket URL: <a href='https://bitbucket.org/einsteintoolkit/tickets/issues/2832/possible-race-condition-in-loopcontrol'>https://bitbucket.org/einsteintoolkit/tickets/issues/2832/possible-race-condition-in-loopcontrol</a></p>
</html>