On Monday 08 May 2006 2:22 pm, Per Jessen wrote:
Jerry Feldman wrote:
Ok, Just to make it quick because I have a meeting ASAP Check the return values for pipe(). pipe() returns the fds in a 2 element int array. Try setting those to -1 before you call pipe() and see what happens.
I was already checking the return value of pipe(), but I think I might have found the problem elsewhere. I think (just testing it now) it was a double close() of a file descriptor - where the file descriptor had been handed out again in between two close(). Obviously not the best idea :-) Now solve my problem :-) I have a C++ program that opens a library using dlopen(3): [xxx@yyyyy ~/loaderror]$ ./sbtestmain Loading ./libsbtest.so DLOPEN: ./libsbtest.so: symbol _ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE, version GLIBCXX_3.4 not defined in file libstdc++.so.6 with link time reference
This problem occurs on one RHEL 4 U3 IA64 system using the Inel compiler.
Does not occur on any of the testdrive systems running RHEL 4 or SLES9.
Actually, I think the IT people (at our ISV) did an upgrade install rather
than a clean install because both imake and g++ were broken. I have a
Montecito box sitting next to it that also works.
The bottom line is that system calls, like open(2) are generally well
tested. Also note that Rational's Purify Plus would have found your problem
because that is one of the things it tracks.
--
Jerry Feldman