<div class="highlight highlight-source-julia notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="julia&gt; a = rpad(&quot;\u2003&quot;, 5)
&quot;    &quot;

julia&gt; length(a) #4 in 0.4-dev, 5 in 0.3.7
4

julia&gt; map(x-&gt;convert(Uint32, x), collect(a)) #0.4-dev has one fewer space
4-element Array{UInt32,1}:
 0x00002003
 0x00000020
 0x00000020
 0x00000020

help?&gt; rpad
search: rpad repeated macroexpand isdirpath tryparse normpath repmat repeat replace workspace realpath redisplay AbstractSparseArray

Base.rpad(string, n, p)

   Make a string at least &quot;n&quot; characters long by padding on the
   right with copies of &quot;p&quot;.

help?&gt; charwidth
search: charwidth

Base.charwidth(c)

   Gives the number of columns needed to print a character."><pre class="notranslate">julia<span class="pl-k">&gt;</span> a <span class="pl-k">=</span> <span class="pl-c1">rpad</span>(<span class="pl-s"><span class="pl-pds">"</span><span class="pl-cce">\u</span>2003<span class="pl-pds">"</span></span>, <span class="pl-c1">5</span>)
<span class="pl-s"><span class="pl-pds">"</span>    <span class="pl-pds">"</span></span>

julia<span class="pl-k">&gt;</span> <span class="pl-c1">length</span>(a) <span class="pl-c"><span class="pl-c">#</span>4 in 0.4-dev, 5 in 0.3.7</span>
<span class="pl-c1">4</span>

julia<span class="pl-k">&gt;</span> <span class="pl-c1">map</span>(x<span class="pl-k">-&gt;</span><span class="pl-c1">convert</span>(Uint32, x), <span class="pl-c1">collect</span>(a)) <span class="pl-c"><span class="pl-c">#</span>0.4-dev has one fewer space</span>
<span class="pl-c1">4</span><span class="pl-k">-</span>element Array{UInt32,<span class="pl-c1">1</span>}<span class="pl-k">:</span>
 <span class="pl-c1">0x00002003</span>
 <span class="pl-c1">0x00000020</span>
 <span class="pl-c1">0x00000020</span>
 <span class="pl-c1">0x00000020</span>

help?<span class="pl-k">&gt;</span> rpad
search<span class="pl-k">:</span> rpad repeated macroexpand isdirpath tryparse normpath repmat repeat replace workspace realpath redisplay AbstractSparseArray

Base<span class="pl-k">.</span><span class="pl-c1">rpad</span>(string, n, p)

   Make a string at least <span class="pl-s"><span class="pl-pds">"</span>n<span class="pl-pds">"</span></span> characters long by padding on the
   right with copies of <span class="pl-s"><span class="pl-pds">"</span>p<span class="pl-pds">"</span></span>.

help?<span class="pl-k">&gt;</span> charwidth
search<span class="pl-k">:</span> charwidth

Base<span class="pl-k">.</span><span class="pl-c1">charwidth</span>(c)

   Gives the number of columns needed to print a character.</pre></div>
<p dir="auto">Julia compiles OpenBLAS to <code class="notranslate">libopenblas.so</code>.  This may be a problem for calling libraries that link to a system <code class="notranslate">libopenblas.so</code>, because the runtime linker may substitute Julia's version instead.   The problem is that Julia's version is compiled with a 64-bit interface, which is not the default, and so if an external library calls it expecting a 32-bit interface, a crash may result.</p>
<p dir="auto">We encountered what appears to have been this problem n <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alanedelman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alanedelman">@alanedelman</a>'s machine (julia.mit.edu). He recently started experiencing crashes in <code class="notranslate">PyPlot.plot</code> that, with the help of valgrind, I tracked down to apparently:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="==17855== Use of uninitialised value of size 8
==17855==    at 0xA8B6890: dgemm_beta_NEHALEM (in /home/edelman/julia/usr/lib/libopenblas.so)
==17855==    by 0xA082D72: dgemm_nn (in /home/edelman/julia/usr/lib/libopenblas.so)
==17855==    by 0x9F558C8: cblas_dgemm (in /home/edelman/julia/usr/lib/libopenblas.so)
==17855==    by 0x16430CA5: dotblas_matrixproduct (_dotblas.c:809)
==17855==    by 0x14BAB5D4: PyEval_EvalFrameEx (in /usr/lib/libpython2.7.so.1.0)"><pre class="notranslate"><code class="notranslate">==17855== Use of uninitialised value of size 8
==17855==    at 0xA8B6890: dgemm_beta_NEHALEM (in /home/edelman/julia/usr/lib/libopenblas.so)
==17855==    by 0xA082D72: dgemm_nn (in /home/edelman/julia/usr/lib/libopenblas.so)
==17855==    by 0x9F558C8: cblas_dgemm (in /home/edelman/julia/usr/lib/libopenblas.so)
==17855==    by 0x16430CA5: dotblas_matrixproduct (_dotblas.c:809)
==17855==    by 0x14BAB5D4: PyEval_EvalFrameEx (in /usr/lib/libpython2.7.so.1.0)
</code></pre></div>
<p dir="auto">Apparently, Matplotlib is calling OpenBLAS (via NumPy: <code class="notranslate">_dotblas.c</code> is a NumPy file) with the 32-bit interface, but is getting linked at runtime into Julia's openblas library, which is compiled with a 64-bit interface.  Recompiling Julia and openblas with <code class="notranslate">USE_BLAS64=0</code> worked around the problem, but it would be better to avoid the conflict.</p>
<p dir="auto">Can we just rename our <code class="notranslate">libopenblas.so</code> file to avoid any possible conflict in the runtime linker?</p>