I am requesting opinions on expected and desired outcome of prog initialization, specifically loading of shared libraries for a program that I do not have source code. All code delivered via RPMs.
Suspect prog exhibits constant Revc-Q buffering on two TCP conns. Other end of TCP conns looks good. Suspect prog buffers 1000-10000 bytes almost constantly, rarely goes to zero. Host of suspect prog shows tcpActiveOpens.0 50,000 with tcpAttemptFails.0 at 47,000 with both incrementing continuously. Many other probable TCP issues.
When ldd run on suspect prog returns total of 42 libraries with 24 "not found" the other 18 resolve with a DIR and hexaddr. Put an strace wrapper around suspect prog and noted the many "-1 ENOENT" on every library, not just the ones noted "not found" with ldd. All libraries are eventually found and loaded into suspect progs mem. Some have as many as 42 ENOENT before success.
Contacted dev with findings and have been assured that when I ran ldd I needed to source their environment config file, which is supposed to run at prog launch and set all library paths. No comment on the ENOENT.
Questions: When you have finished your code and complied, do you validate with tools such as ldd? Should ldd always return 0, or is some or a lot of "not founds" not always an issue. And what about the ENOENTs? It seems to me that there should be zero errors if the code is compiled and running correctly.