bug-ncurses
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Some symbols missed in llib-ltinfo and llib-ltinfot for 6.1?


From: Dr. Werner Fink
Subject: Re: Some symbols missed in llib-ltinfo and llib-ltinfot for 6.1?
Date: Wed, 28 Feb 2018 12:35:07 +0100
User-agent: NeoMutt/20170912 (1.9.0)

On Tue, Feb 27, 2018 at 09:18:04PM +0000, Thomas Dickey wrote:
> On Tue, Feb 27, 2018 at 10:37:27AM +0100, Dr. Werner Fink wrote:
> > On Tue, Feb 27, 2018 at 09:23:24AM +0000, Thomas Dickey wrote:
> > > On Tue, Feb 27, 2018 at 08:22:46AM +0100, Dr. Werner Fink wrote:
> > > > 
> > > > OK ... the only problem seems to be that there are programs out there
> > > > which links to both libtinfo.so.6.1 (threadsafe) as well as to
> > > > libtinfow.so.6.1 (wide+threadsafe) and in the case od phython3 modules
> > > > this could lead to a deadlock if the order is wrong, in other word
> > > 
> > > I recall that there was (perhaps still) a problem with python loading
> > > different versions of ncurses for readline and the curses module.
> > > Ultimately the fix for that was within python.
> > 
> > IMHO this is more complicated, please have a look at my previous followup
> 
> well - looks like there's only a few possible ways to improve:
> 
> a) supposing that if the symbol versions (not the symbols) for "ncurseswt"
>    and "ncursest" version changed (by a configure option of course) to
>    make them distinct from the symbol versions in "ncursesw"/"ncurses",
>    then you could find out whether the linker is able to properly resolve
>    two sets of symbol versions for the same symbols (I suspect that it is
>    not).

I did not take this.  Here both the libtinfo.so.6.1 is threadsafe/reentrant
and also the libtinfow.so.6.1 ... with versioned symbols I see

  --- /tmp/w1   2018-02-28 12:07:04.999709245 +0100
  +++ /tmp/w2   2018-02-28 12:07:11.103782433 +0100
  @@ -16,10 +16,10 @@ NCURSES6_TINFO_5.7.20081102@@NCURSES6_TI
   NCURSES6_TINFO_5.8.20110226@@NCURSES6_TINFO_5.8.20110226
   NCURSES6_TINFO_5.9.20150530@@NCURSES6_TINFO_5.9.20150530
   NCURSES6_TINFO_6.1.20171230@@NCURSES6_TINFO_6.1.20171230
  -NCURSESTW6_5.7.20081102@@NCURSESTW6_5.7.20081102
  -NCURSESTW6_5.8.20110226@@NCURSESTW6_5.8.20110226
  -NCURSESTW6_5.9.20150530@@NCURSESTW6_5.9.20150530
  -NCURSESTW6_6.1.20171230@@NCURSESTW6_6.1.20171230
  +NCURSEST6_5.7.20081102@@NCURSEST6_5.7.20081102
  +NCURSEST6_5.8.20110226@@NCURSEST6_5.8.20110226
  +NCURSEST6_5.9.20150530@@NCURSEST6_5.9.20150530
  +NCURSEST6_6.1.20171230@@NCURSEST6_6.1.20171230
   PC@@NCURSES6_TINFO_5.0.19991023
   SP@@NCURSES6_TINFO_5.0.19991023
   UP@@NCURSES6_TINFO_5.0.19991023
  @@ -48,7 +48,6 @@ _nc_boolcodes@@NCURSES6_TINFO_5.7.200811
   _nc_boolfnames@@NCURSES6_TINFO_5.7.20081102
   _nc_boolnames@@NCURSES6_TINFO_5.7.20081102
   _nc_copy_termtype@@NCURSES6_TINFO_5.0.19991023
  -_nc_copy_termtype2@@NCURSES6_TINFO_6.1.20171230
   _nc_cur_term@@NCURSES6_TINFO_5.7.20081102
   _nc_curr_col@@NCURSES6_TINFO_5.0.19991023
   _nc_curr_line@@NCURSES6_TINFO_5.0.19991023
  @@ -57,9 +56,7 @@ _nc_doalloc@@NCURSES6_TINFO_5.0.19991023
   _nc_env_access@@NCURSES6_TINFO_5.2.20001021
   _nc_err_abort@@NCURSES6_TINFO_5.0.19991023
   _nc_eventlist_timeout@@NCURSES6_TINFO_5.6.20061217
  -_nc_export_termtype2@@NCURSES6_TINFO_6.1.20171230
   _nc_fallback@@NCURSES6_TINFO_5.0.19991023
  -_nc_fallback2@@NCURSES6_TINFO_6.1.20171230
   _nc_find_entry@@NCURSES6_TINFO_5.0.19991023
   _nc_find_prescr@@NCURSES6_TINFO_6.1.20171230
   _nc_find_type_entry@@NCURSES6_TINFO_5.0.19991023
  @@ -70,7 +67,6 @@ _nc_flush_sp@@NCURSES6_TINFO_5.8.2011022
   _nc_forget_prescr@@NCURSES6_TINFO_6.1.20171230
   _nc_free_entries@@NCURSES6_TINFO_5.0.19991023
   _nc_free_termtype@@NCURSES6_TINFO_5.0.19991023
  -_nc_free_termtype2@@NCURSES6_TINFO_6.1.20171230
   _nc_get_alias_table@@NCURSES6_TINFO_5.7.20081102
   _nc_get_hash_table@@NCURSES6_TINFO_5.0.19991023
   _nc_get_locale@@NCURSES6_TINFO_5.4.20040208
  @@ -119,7 +115,6 @@ _nc_putp@@NCURSES6_TINFO_5.8.20110226
   _nc_putp_flush_sp@@NCURSES6_TINFO_5.8.20110226
   _nc_putp_sp@@NCURSES6_TINFO_5.8.20110226
   _nc_read_entry@@NCURSES6_TINFO_5.0.19991023
  -_nc_read_entry2@@NCURSES6_TIC_6.1.20171230
   _nc_read_file_entry@@NCURSES6_TINFO_5.0.19991023
   _nc_read_termtype@@NCURSES6_TINFO_5.6.20061217
   _nc_rootname@@NCURSES6_TINFO_5.3.20021019


   LD_DEBUG=all LD_BIND_NOT=1 ldd /usr/bin/python3  |& grep _TINFO
       22098:   checking for version `NCURSES6_TINFO_5.0.19991023' in file 
/lib64/libtinfo.so.6 [0] required by file /lib64/libreadline.so.7 [0]
       22098:   binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfo.so.6 
[0]: normal symbol `ospeed' [NCURSES6_TINFO_5.0.19991023]
       22098:   binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfo.so.6 
[0]: normal symbol `_nc_tail' [NCURSES6_TINFO_5.0.19991023]
       22098:   binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfo.so.6 
[0]: normal symbol `SP' [NCURSES6_TINFO_5.0.19991023]
       22098:   binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfo.so.6 
[0]: normal symbol `_nc_head' [NCURSES6_TINFO_5.0.19991023]
       22098:   binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfo.so.6 
[0]: normal symbol `_nc_screen_chain' [NCURSES6_TINFO_5.0.19991023]
       22098:   binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfo.so.6 
[0]: normal symbol `_nc_suppress_warnings' [NCURSES6_TINFO_5.0.19991023]
       22098:   binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfo.so.6 
[0]: normal symbol `UP' [NCURSES6_TINFO_5.0.19991023]
       22098:   binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfo.so.6 
[0]: normal symbol `_nc_user_definable' [NCURSES6_TINFO_5.1.20000708]
       22098:   binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfo.so.6 
[0]: normal symbol `_nc_tracing' [NCURSES6_TINFO_5.0.19991023]
       22098:   binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfo.so.6 
[0]: normal symbol `_nc_tinfo_fkeys' [NCURSES6_TINFO_5.1.20000708]
       22098:   binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfo.so.6 
[0]: normal symbol `_nc_curr_line' [NCURSES6_TINFO_5.0.19991023]
       22098:   binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfo.so.6 
[0]: normal symbol `_nc_tparm_err' [NCURSES6_TINFO_5.3.20021019]
       22098:   binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfo.so.6 
[0]: normal symbol `PC' [NCURSES6_TINFO_5.0.19991023]
       22098:   binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfo.so.6 
[0]: normal symbol `_nc_curr_col' [NCURSES6_TINFO_5.0.19991023]
       22098:   binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfo.so.6 
[0]: normal symbol `_nc_prescreen' [NCURSES6_TINFO_5.7.20081102]
       22098:   binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfo.so.6 
[0]: normal symbol `_nc_globals' [NCURSES6_TINFO_5.7.20081102]
       22098:   binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfo.so.6 
[0]: normal symbol `BC' [NCURSES6_TINFO_5.0.19991023]
       22098:   binding file /lib64/libreadline.so.7 [0] to 
/lib64/libtinfo.so.6 [0]: normal symbol `UP' [NCURSES6_TINFO_5.0.19991023]
       22098:   binding file /lib64/libreadline.so.7 [0] to 
/lib64/libtinfo.so.6 [0]: normal symbol `PC' [NCURSES6_TINFO_5.0.19991023]
       22098:   binding file /lib64/libreadline.so.7 [0] to 
/lib64/libtinfo.so.6 [0]: normal symbol `BC' [NCURSES6_TINFO_5.0.19991023]


   LD_DEBUG=all LD_BIND_NOT=1 LD_PRELOAD=/lib64/libtinfow.so.6 ldd 
/usr/bin/python3  |& grep _TINFO
     22111:     checking for version `NCURSES6_TINFO_5.0.19991023' in file 
/lib64/libtinfo.so.6 [0] required by file /lib64/libreadline.so.7 [0]
     22111:     binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `ospeed' [NCURSES6_TINFO_5.0.19991023]
     22111:     binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `_nc_tail' [NCURSES6_TINFO_5.0.19991023]
     22111:     binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `SP' [NCURSES6_TINFO_5.0.19991023]
     22111:     binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `_nc_head' [NCURSES6_TINFO_5.0.19991023]
     22111:     binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `_nc_screen_chain' [NCURSES6_TINFO_5.0.19991023]
     22111:     binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `_nc_suppress_warnings' [NCURSES6_TINFO_5.0.19991023]
     22111:     binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `UP' [NCURSES6_TINFO_5.0.19991023]
     22111:     binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `_nc_user_definable' [NCURSES6_TINFO_5.1.20000708]
     22111:     binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `_nc_tracing' [NCURSES6_TINFO_5.0.19991023]
     22111:     binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `_nc_tinfo_fkeys' [NCURSES6_TINFO_5.1.20000708]
     22111:     binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `_nc_curr_line' [NCURSES6_TINFO_5.0.19991023]
     22111:     binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `_nc_tparm_err' [NCURSES6_TINFO_5.3.20021019]
     22111:     binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `PC' [NCURSES6_TINFO_5.0.19991023]
     22111:     binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `_nc_curr_col' [NCURSES6_TINFO_5.0.19991023]
     22111:     binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `_nc_prescreen' [NCURSES6_TINFO_5.7.20081102]
     22111:     binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `_nc_globals' [NCURSES6_TINFO_5.7.20081102]
     22111:     binding file /lib64/libtinfo.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `BC' [NCURSES6_TINFO_5.0.19991023]
     22111:     binding file /lib64/libreadline.so.7 [0] to 
/lib64/libtinfow.so.6 [0]: normal symbol `UP' [NCURSES6_TINFO_5.0.19991023]
     22111:     binding file /lib64/libreadline.so.7 [0] to 
/lib64/libtinfow.so.6 [0]: normal symbol `PC' [NCURSES6_TINFO_5.0.19991023]
     22111:     binding file /lib64/libreadline.so.7 [0] to 
/lib64/libtinfow.so.6 [0]: normal symbol `BC' [NCURSES6_TINFO_5.0.19991023]
     22111:     binding file /lib64/libtinfow.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `ospeed' [NCURSES6_TINFO_5.0.19991023]
     22111:     binding file /lib64/libtinfow.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `_nc_tail' [NCURSES6_TINFO_5.0.19991023]
     22111:     binding file /lib64/libtinfow.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `SP' [NCURSES6_TINFO_5.0.19991023]
     22111:     binding file /lib64/libtinfow.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `_nc_head' [NCURSES6_TINFO_5.0.19991023]
     22111:     binding file /lib64/libtinfow.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `_nc_screen_chain' [NCURSES6_TINFO_5.0.19991023]
     22111:     binding file /lib64/libtinfow.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `_nc_suppress_warnings' [NCURSES6_TINFO_5.0.19991023]
     22111:     binding file /lib64/libtinfow.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `UP' [NCURSES6_TINFO_5.0.19991023]
     22111:     binding file /lib64/libtinfow.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `_nc_user_definable' [NCURSES6_TINFO_5.1.20000708]
     22111:     binding file /lib64/libtinfow.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `_nc_tracing' [NCURSES6_TINFO_5.0.19991023]
     22111:     binding file /lib64/libtinfow.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `_nc_tinfo_fkeys' [NCURSES6_TINFO_5.1.20000708]
     22111:     binding file /lib64/libtinfow.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `_nc_curr_line' [NCURSES6_TINFO_5.0.19991023]
     22111:     binding file /lib64/libtinfow.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `_nc_tparm_err' [NCURSES6_TINFO_5.3.20021019]
     22111:     binding file /lib64/libtinfow.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `PC' [NCURSES6_TINFO_5.0.19991023]
     22111:     binding file /lib64/libtinfow.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `_nc_curr_col' [NCURSES6_TINFO_5.0.19991023]
     22111:     binding file /lib64/libtinfow.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `_nc_prescreen' [NCURSES6_TINFO_5.7.20081102]
     22111:     binding file /lib64/libtinfow.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `_nc_globals' [NCURSES6_TINFO_5.7.20081102]
     22111:     binding file /lib64/libtinfow.so.6 [0] to /lib64/libtinfow.so.6 
[0]: normal symbol `BC' [NCURSES6_TINFO_5.0.19991023]


> b) link everything against "ncurseswt"

That means enforce every package to use the libncursew/libtinfow ?
At least all python3 and its modules could be an option

Werner

-- 
  "Having a smoking section in a restaurant is like having
          a peeing section in a swimming pool." -- Edward Burr

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]