Simon Tatham<p>If you run a <a href="https://hachyderm.io/tags/Linux" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Linux</span></a> program in <a href="https://hachyderm.io/tags/strace" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>strace</span></a>, usually the start of the log shows it trying to load a ton of shared libraries, and for each one, trying the same file name in all your LD_LIBRARY_PATH directories until it finds it. So you mostly see file-open operations _failing_, with ENOENT.</p><p>To a novice strace reader, it looks as if something has already gone horribly wrong! But it hasn't – this is all normal, and as expected. Each of those ENOENT is technically "an error", but not a _bad_ error, because ld.so just moves on to the next in its big list of things to try, and one works in the end.</p><p>Errors happen _all the time_ in the guts of a computer system, and most of them are not even interesting – just business as usual. The event an end user thinks of as "an error" is the case where the program _doesn't_ have a fallback plan. Those are often outnumbered by the cases where it does!</p>