title: Why would the same binary want linux-vdso.so.1 on one 64-bit RHEL 5.4 server and not another?
body: <p>I have a customer running a file parsing program called cleanfileg and as of the last update, he is getting date-format error when parsing <em>a</em> file.</p>
  
  <p>What's bizarre is that we're both running the same program, on the same file, with the same builds of gcc, pthread, libc etc. on the same release of RHEL64 (5.4) and I cannot replicate his issue. He can roll back to last month's version of cleanfileg and everything works fine, so I'm pretty sure that a line-by-line through the source will likely find me an answer, but what's confusing to me is that on a whim, I asked him to run ldd on his executable to see if he was pulling in some different verions of the shared objects.</p>
  
  <p>His-</p>
  
  <pre><code># ldd cleanfileg
  linux-vdso.so.1 =&gt;  (0x00002ad4c98d1000)
  libmdGeo.so =&gt; /tools/clean_address/bin/libmdGeo.so (0x00002ad4c98d6000)
  libmdName.so =&gt; /tools/clean_address/bin/libmdName.so (0x00002ad4c9a70000)
  libmdPhone.so =&gt; /tools/clean_address/bin/libmdPhone.so (0x00002ad4c9df1000)
  libmdAddr.so =&gt; /tools/clean_address/bin/libmdAddr.so (0x00002ad4ca28c000)
  libresolv.so.2 =&gt; /lib64/libresolv.so.2 (0x0000003833600000)
  libAddressDoctor5.so =&gt; /tools/clean_address/bin/libAddressDoctor5.so (0x00002ad4ca96d000)
  libstdc++.so.6 =&gt; /usr/lib64/libstdc++.so.6 (0x0000003831600000)
  libm.so.6 =&gt; /lib64/libm.so.6 (0x000000382b200000)
  libgcc_s.so.1 =&gt; /lib64/libgcc_s.so.1 (0x0000003830a00000)
  libpthread.so.0 =&gt; /lib64/libpthread.so.0 (0x000000382ba00000)
  libc.so.6 =&gt; /lib64/libc.so.6 (0x000000382ae00000)
  librt.so.1 =&gt; /lib64/librt.so.1 (0x000000382d200000)
  /lib64/ld-linux-x86-64.so.2 (0x000000382aa00000)
  </code></pre>
  
  <p>-Mine</p>
  
  <pre><code>#ldd cleanfileg
  libmdGeo.so (0x00002ab5d3342000)
  libmdName.so (0x00002ab5d34cf000)
  libmdPhone.so (0x00002ab5d3850000)
  libmdAddr.so (0x00002ab5d3ceb000)
  libresolv.so.2 =&gt; /lib64/libresolv.so.2 (0x00000034bde00000)
  libAddressDoctor5.so (0x00002ab5d43bf000)
  libstdc++.so.6 =&gt; /usr/lib64/libstdc++.so.6 (0x00000034c9000000)
  libm.so.6 =&gt; /lib64/libm.so.6 (0x00000034b6200000)
  libgcc_s.so.1 =&gt; /lib64/libgcc_s.so.1 (0x00000034c7c00000)
  libpthread.so.0 =&gt; /lib64/libpthread.so.0 (0x00000034b6a00000)
  libc.so.6 =&gt; /lib64/libc.so.6 (0x00000034b5e00000)
  librt.so.1 =&gt; /lib64/librt.so.1 (0x00000034b6e00000)
  /lib64/ld-linux-x86-64.so.2 (0x00000034b5a00000)
  </code></pre>
  
  <p>Is linux-vdso.so.1 something that is needed (or not) as dictated by configuration somehow? How/why would it be required by what other wise seem to be identical machines running identical code?</p>
  
  <p>Any next steps anyone could suggest for debugging?</p>