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: Tue, 27 Feb 2018 08:22:46 +0100
User-agent: NeoMutt/20170912 (1.9.0)

On Mon, Feb 26, 2018 at 10:00:44PM +0000, Thomas Dickey wrote:
> On Mon, Feb 26, 2018 at 12:12:56PM +0100, Dr. Werner Fink wrote:
> > Hi,
> > 
> > just to check binary compatibility I see from a diff of the exported
> > functions for libtinfo and libtinfow
> 
> offhand, that looks as expected:  the "ncursestw" variant should be
> supplying all of the symbols that are in "ncursest", but the reverse is
> not true.  (That was also true of the data section, so I assume you've
> been building/delivering the tinfo "w" flavor).
> 
> The wide-character library adds entrypoints which support the 32-bit
> numbers, which use a larger (TERMTYPE2) structure than the one
> supporting 16-bit numbers (TERMTYPE).
> 
> I named the new functions with a "2" on the end to denote their
> relationship to TERMTYPE2.
> 
> When built as "ncursestw", the older functions accept a "TERMTYPE" (no
> "2") parameter, and the library converts as needed.
> 
> Bear in mind that there were a few bug-reports last spring and early
> summer when I completed those changes, but it seems to be working as
> designed.
> 
> By the way, to support 32-bit numbers in terminfo, you'll have to
> build/link the command-line utilities with the wide-character
> configuration.

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

  #!/usr/bin/python3
  import bcc
  import curses
  curses.initscr()
  curses.endwin()

hangs whereas

  #!/usr/bin/python3
  import curses
  import bcc
  curses.initscr()
  curses.endwin()

does not and the only difference is the order of loading libtinfo/libtinfow
as the bcc module does use libLLVM.so linked to both tinfo types.

For bcc first the gdb shows

  (gdb) info sharedlibrary
  ...
  0x00007f832fd86870  0x00007f832fd94598  Yes         /lib64/libtinfo.so.6
  ...
  0x00007f8329bb1a70  0x00007f8329bbfb58  Yes         /lib64/libtinfow.so.6
  ...
  0x00007f83287abb10  0x00007f83287d1c2f  Yes         /lib64/libncursesw.so.6

and the working case looks like

  (gdb) info sharedlibrary
  ...
  0x00007fd11d9d1870  0x00007fd11d9df598  Yes         /lib64/libtinfo.so.6
  ...
  0x00007fd11d582b10  0x00007fd11d5a8c2f  Yes         /lib64/libncursesw.so.6
  0x00007fd11d355a70  0x00007fd11d363b58  Yes         /lib64/libtinfow.so.6


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]