Luca Ferrari <[email protected]> writes:

> Hi all,
> this could be trivial, but I have a doubt about libreadline.
> In short: I've a program (pspg) that is crashing, and after inspecting
> the core I found in the backtrace a reference to libreadline. The
> program has been linked to libreadline 4, but in the system readline 7
> is installed.
> My doubt is that I'm messing around with numbers, and I'm unable to
> find the package for libreadline. The application is a PostgreSQL
> pager (<https://github.com/okbob/pspg>) that is not already in the
> ports.
> Also note, in the gdb output, there is a problem with ld symbols,
> could it be related?
> What am I missing here?
>
> Thanks,
> Luca
>
> puffy$ uname -sr
> OpenBSD 6.9
> puffy$ ldd $(which pspg)
> /usr/local/bin/pspg:
>        Start            End              Type  Open Ref GrpRef Name
>        00000bfbf0bb6000 00000bfbf0c03000 exe   1    0   0
> /usr/local/bin/pspg
>        00000bfed823a000 00000bfed826a000 rlib  0    2   0
> /usr/lib/libm.so.10.1
>        00000bfe67167000 00000bfe671a8000 rlib  0    1   0
> /usr/lib/libreadline.so.4.0

`pspg' is linked against system' libreadline so...

>        00000bfec62e9000 00000bfec62ef000 rlib  0    1   0
>[...]
> puffy$ pkg_info | grep readline
> readline-7.0p0      library to edit command lines as they are typed in

readline from ports shouldn't be needed.  Moreover, port's readline
install files as `libereadline', so it should be difficult to pick those
header by accident.

> puffy$ gdb $(which pspg) pspg.core

gdb in base is pretty old.  Install the `gdb' package which provides
`egdb' (a more up-to-date gdb) or use lldb from base.  So, either

        # pkg_add gdb
        $ egdb $(which pspg) pspg.core

or

        $ lldb --core pspg.core $(which pspg)

and then try to get a backtrace again

HTH

>[...]
>  Dwarf Error: wrong version in compilation unit header (is 4, should
> be 2) [in module /usr/libexec/ld.so]
>  #0  0x0000000000000000 in ?? ()
>  (gdb) bt
>  #0  0x0000000000000000 in ?? ()
>  #1  0x00000bacf99001b6 in rl_callback_handler_install
> (prompt=Variable "prompt" is not available.
>  ) at /usr/src/gnu/lib/libreadline/callback.c:75
>  #2  0x00000baa60b446b4 in get_string (prompt=0xbaa60b13c53 "/",
> buffer=0x7f7ffffeed10 "\t", maxsize=255, defstr=0xbaa60b57860 "",
>      _tabcomplete_mode=Variable "_tabcomplete_mode" is not available.
>  ) at src/readline.c:588
>  #3  0x00000baa60b352d8 in main (argc=0, argv=0x1) at src/pspg.c:5405

Reply via email to