Re: conflicting libraries at runtime - Mailing list pgsql-hackers

From Joe Conway
Subject Re: conflicting libraries at runtime
Date
Msg-id 3EAB2D27.7070500@joeconway.com
Whole thread Raw
In response to Re: conflicting libraries at runtime  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
Tom Lane wrote:
>>If the problem is really that, against the expectations, the dynamic
>>linker picks the implementation in libc.so as opposed to the program, use
>>  env LD_DEBUG=all LD_DEBUG_OUTPUT=somefile normal_program args...
>>to see a lot of output on the name resolution process.  Search for the
>>symbol you're looking for in this output file.
>
> We may have to go back to Ulrich to decode what the output tells us,
> but it's something to try anyway ...
>

Thanks! I've attached the relevant portions from a Red Hat 8 and a Red
Hat 9 machine. There are two included symbols for the contrast:

   - symbol=fft_factor gets resolved correctly to
     /usr/local/lib/R/bin/libR.so in both cases
   - symbol=re_compile_fastmap is correctly resolved on RH8, and
     incorrectly (at least for my needs) on RH9

But it seems that libc.so.6 on both RH8 and RH9 have the symbol
re_compile_fastmap (see snipped line from nm output in attachment), so I
still don't understand why in RH9 the libc symbol is used, and in RH8
the one from libR.

Thanks,

Joe

env LD_DEBUG=all LD_DEBUG_OUTPUT=/home/postgres/dbg.out pg_ctl start

rh8 good:
     19097:    symbol=fft_factor;  lookup in file=postgres: postgres regression [local] SELECT
     19097:    symbol=fft_factor;  lookup in file=/usr/lib/libz.so.1
     19097:    symbol=fft_factor;  lookup in file=/usr/lib/libreadline.so.4
     19097:    symbol=fft_factor;  lookup in file=/lib/libtermcap.so.2
     19097:    symbol=fft_factor;  lookup in file=/lib/libcrypt.so.1
     19097:    symbol=fft_factor;  lookup in file=/lib/libresolv.so.2
     19097:    symbol=fft_factor;  lookup in file=/lib/libnsl.so.1
     19097:    symbol=fft_factor;  lookup in file=/lib/libdl.so.2
     19097:    symbol=fft_factor;  lookup in file=/lib/i686/libm.so.6
     19097:    symbol=fft_factor;  lookup in file=/lib/i686/libc.so.6
     19097:    symbol=fft_factor;  lookup in file=/lib/ld-linux.so.2
     19097:    symbol=fft_factor;  lookup in file=/usr/local/pgsql/lib/plr.so
     19097:    symbol=fft_factor;  lookup in file=/usr/local/lib/R/bin/libR.so
     19097:    binding file /usr/local/lib/R/bin/libR.so to /usr/local/lib/R/bin/libR.so: normal symbol `fft_factor'
     19097:    symbol=re_compile_fastmap;  lookup in file=postgres: postgres regression [local] SELECT
     19097:    symbol=re_compile_fastmap;  lookup in file=/usr/lib/libz.so.1
     19097:    symbol=re_compile_fastmap;  lookup in file=/usr/lib/libreadline.so.4
     19097:    symbol=re_compile_fastmap;  lookup in file=/lib/libtermcap.so.2
     19097:    symbol=re_compile_fastmap;  lookup in file=/lib/libcrypt.so.1
     19097:    symbol=re_compile_fastmap;  lookup in file=/lib/libresolv.so.2
     19097:    symbol=re_compile_fastmap;  lookup in file=/lib/libnsl.so.1
     19097:    symbol=re_compile_fastmap;  lookup in file=/lib/libdl.so.2
     19097:    symbol=re_compile_fastmap;  lookup in file=/lib/i686/libm.so.6
     19097:    symbol=re_compile_fastmap;  lookup in file=/lib/i686/libc.so.6
     19097:    symbol=re_compile_fastmap;  lookup in file=/lib/ld-linux.so.2
     19097:    symbol=re_compile_fastmap;  lookup in file=/usr/local/pgsql/lib/plr.so
     19097:    symbol=re_compile_fastmap;  lookup in file=/usr/local/lib/R/bin/libR.so
     19097:    binding file /usr/local/lib/R/bin/libR.so to /usr/local/lib/R/bin/libR.so: normal symbol
`re_compile_fastmap'

     nm /lib/i686/libc.so.6
     000b7dc0 W re_compile_fastmap

rh9 bad:
      2074:    symbol=fft_factor;  lookup in file=postgres: postgres regression [local] SELECT
      2074:    symbol=fft_factor;  lookup in file=/usr/lib/libz.so.1
      2074:    symbol=fft_factor;  lookup in file=/usr/lib/libreadline.so.4
      2074:    symbol=fft_factor;  lookup in file=/lib/libtermcap.so.2
      2074:    symbol=fft_factor;  lookup in file=/lib/libcrypt.so.1
      2074:    symbol=fft_factor;  lookup in file=/lib/libresolv.so.2
      2074:    symbol=fft_factor;  lookup in file=/lib/libnsl.so.1
      2074:    symbol=fft_factor;  lookup in file=/lib/libdl.so.2
      2074:    symbol=fft_factor;  lookup in file=/lib/tls/libm.so.6
      2074:    symbol=fft_factor;  lookup in file=/lib/tls/libc.so.6
      2074:    symbol=fft_factor;  lookup in file=/lib/ld-linux.so.2
      2074:    symbol=fft_factor;  lookup in file=/usr/lib/postgresql/plr.so
      2074:    symbol=fft_factor;  lookup in file=/usr/local/lib/R/bin/libR.so
      2074:    binding file /usr/local/lib/R/bin/libR.so to /usr/local/lib/R/bin/libR.so: normal symbol `fft_factor'
      2074:    symbol=re_compile_fastmap;  lookup in file=postgres: postgres regression [local] SELECT
      2074:    symbol=re_compile_fastmap;  lookup in file=/usr/lib/libz.so.1
      2074:    symbol=re_compile_fastmap;  lookup in file=/usr/lib/libreadline.so.4
      2074:    symbol=re_compile_fastmap;  lookup in file=/lib/libtermcap.so.2
      2074:    symbol=re_compile_fastmap;  lookup in file=/lib/libcrypt.so.1
      2074:    symbol=re_compile_fastmap;  lookup in file=/lib/libresolv.so.2
      2074:    symbol=re_compile_fastmap;  lookup in file=/lib/libnsl.so.1
      2074:    symbol=re_compile_fastmap;  lookup in file=/lib/libdl.so.2
      2074:    symbol=re_compile_fastmap;  lookup in file=/lib/tls/libm.so.6
      2074:    symbol=re_compile_fastmap;  lookup in file=/lib/tls/libc.so.6
      2074:    binding file /usr/local/lib/R/bin/libR.so to /lib/tls/libc.so.6: normal symbol `re_compile_fastmap'

      nm /lib/tls/libc.so.6
      420b6450 W re_compile_fastmap


pgsql-hackers by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: conflicting libraries at runtime
Next
From: Joe Conway
Date:
Subject: Re: conflicting libraries at runtime