Bug 199525 - clisp needs to be rebuilt against libsigsegv 2.4
Summary: clisp needs to be rebuilt against libsigsegv 2.4
Keywords:
Status: CLOSED NEXTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: clisp
Version: 5
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Gérard Milmeister
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On: 199524
Blocks:
TreeView+ depends on / blocked
 
Reported: 2006-07-20 04:13 UTC by Sam Steingold
Modified: 2007-11-30 22:11 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2006-07-28 18:12:56 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Sam Steingold 2006-07-20 04:13:58 UTC
Description of problem:

fc5 comes with libsigsegv 2.3 which is known to be buggy.
it has to be upgraded (see bug 199524)
and clisp must then be rebuilt.

Version-Release number of selected component (if applicable):

clisp 2.39
libsigsegv 2.3 ---> 2.4

Comment 1 Sam Steingold 2006-07-20 04:17:16 UTC
"clisp --version" insicates that it has beed built with debugging symbols.
this is because clisp configure now respects the environment variable CFLAGS
and when it is not set uses "-g -O2" as per GNU standards.
please re-configure CLISP with CFLAGS="":
CFLAGS="" ./configure ....
thanks.

Comment 2 Rex Dieter 2006-07-20 11:25:30 UTC
AFAIK, clisp is linked dynamically against libsigsegv, so unless there were abi
changes (and/or header differences), a rebuild shouldn't be (absolutely) necessary.

Comment 3 Gérard Milmeister 2006-07-23 16:36:57 UTC
(In reply to comment #1)
> "clisp --version" insicates that it has beed built with debugging symbols.
> this is because clisp configure now respects the environment variable CFLAGS
> and when it is not set uses "-g -O2" as per GNU standards.
> please re-configure CLISP with CFLAGS="":
> CFLAGS="" ./configure ....
> thanks.
Currently CFLAGS is not set at all in the .spec file.
Could you explain, why unsetting CFLAGS is necessary?

Comment 4 Sam Steingold 2006-07-23 18:13:37 UTC
(In reply to comment #2)
> AFAIK, clisp is linked dynamically against libsigsegv, so unless there were abi
> changes (and/or header differences), a rebuild shouldn't be (absolutely)
necessary.

clisp is not linked dynamically against libsigsegv.
it is linked statically.
the currently distributed clisp segfaults on
(defun f () (f))
(f)
even when the system is upgraded to libsigsegv 2.4.
when clisp is built against libsigsegv 2.4, I get
*** - Program stack overflow. RESET
instead of segfault.

Comment 5 Sam Steingold 2006-07-23 18:17:53 UTC
(In reply to comment #3)
> (In reply to comment #1)
> > "clisp --version" insicates that it has beed built with debugging symbols.
> > this is because clisp configure now respects the environment variable CFLAGS
> > and when it is not set uses "-g -O2" as per GNU standards.
> > please re-configure CLISP with CFLAGS="":
> > CFLAGS="" ./configure ....
> > thanks.
> Currently CFLAGS is not set at all in the .spec file.
> Could you explain, why unsetting CFLAGS is necessary?

when CFLAGS is not set, AC_PROG_CC in autoconf sets it to "-g -O2"
which is not what we want here.
you must NOT unset CFLAGS,
you must SET it to "" (an empty string)
like you do for every other gnu package that uses autoconf
and which you do not want to distribute with the debug symbols.


Comment 6 Gérard Milmeister 2006-07-23 21:31:11 UTC
(In reply to comment #4)
> (In reply to comment #2)
> > AFAIK, clisp is linked dynamically against libsigsegv, so unless there were abi
> > changes (and/or header differences), a rebuild shouldn't be (absolutely)
> necessary.
> 
> clisp is not linked dynamically against libsigsegv.
> it is linked statically.
> the currently distributed clisp segfaults on
> (defun f () (f))
> (f)
> even when the system is upgraded to libsigsegv 2.4.
> when clisp is built against libsigsegv 2.4, I get
> *** - Program stack overflow. RESET
> instead of segfault.

It seems that /usr/bin/clisp is not linked against libsigsegv:

[gemi]:~:$ldd /usr/bin/clisp
        linux-gate.so.1 =>  (0x00ae9000)
        libc.so.6 => /lib/libc.so.6 (0x00b07000)
        /lib/ld-linux.so.2 (0x00aea000)

However /usr/lib/clisp/full/lisp.run is:

[gemi]:~:$ldd /usr/lib/clisp/full/lisp.run
        linux-gate.so.1 =>  (0x00ae9000)
        libm.so.6 => /lib/libm.so.6 (0x00c3c000)
        libz.so.1 => /usr/lib/libz.so.1 (0x00c69000)
        libpq.so.4 => /usr/lib/libpq.so.4 (0x4bd9a000)
        libpcre.so.0 => /lib/libpcre.so.0 (0x06f5d000)
        libXext.so.6 => /usr/lib/libXext.so.6 (0x43202000)
        libSM.so.6 => /usr/lib/libSM.so.6 (0x00112000)
        libICE.so.6 => /usr/lib/libICE.so.6 (0x00de3000)
        libX11.so.6 => /usr/lib/libX11.so.6 (0x43103000)
        libdb-4.3.so => /usr/lib/libdb-4.3.so (0x0042a000)
        libreadline.so.5 => /usr/lib/libreadline.so.5 (0x0080f000)
        libncurses.so.5 => /usr/lib/libncurses.so.5 (0x0089a000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x06b93000)
        libdl.so.2 => /lib/libdl.so.2 (0x00c63000)
        libsigsegv.so.0 => /usr/lib/libsigsegv.so.0 (0x4b9a4000)
        libc.so.6 => /lib/libc.so.6 (0x00b07000)
        /lib/ld-linux.so.2 (0x00aea000)
        libssl.so.6 => /lib/libssl.so.6 (0x00324000)
        libcrypto.so.6 => /lib/libcrypto.so.6 (0x00149000)
        libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00280000)
        libresolv.so.2 => /lib/libresolv.so.2 (0x0012f000)
        libnsl.so.1 => /lib/libnsl.so.1 (0x002f5000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00d7d000)
        libXau.so.6 => /usr/lib/libXau.so.6 (0x00d93000)
        libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00d98000)
        libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x003a2000)
        libcom_err.so.2 => /lib/libcom_err.so.2 (0x00144000)
        libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x00369000)
        libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0x0011d000)

What does this mean for the libsigsegv?

Comment 7 Gérard Milmeister 2006-07-23 21:32:39 UTC
(In reply to comment #5)
> (In reply to comment #3)
> > (In reply to comment #1)
> > > "clisp --version" insicates that it has beed built with debugging symbols.
> > > this is because clisp configure now respects the environment variable CFLAGS
> > > and when it is not set uses "-g -O2" as per GNU standards.
> > > please re-configure CLISP with CFLAGS="":
> > > CFLAGS="" ./configure ....
> > > thanks.
> > Currently CFLAGS is not set at all in the .spec file.
> > Could you explain, why unsetting CFLAGS is necessary?
> 
> when CFLAGS is not set, AC_PROG_CC in autoconf sets it to "-g -O2"
> which is not what we want here.
> you must NOT unset CFLAGS,
> you must SET it to "" (an empty string)
> like you do for every other gnu package that uses autoconf
> and which you do not want to distribute with the debug symbols.
> 
Could you open a separate bug report on this?


Comment 8 Sam Steingold 2006-07-24 00:18:18 UTC
(In reply to comment #6)
> (In reply to comment #4)
> > (In reply to comment #2)
> > > AFAIK, clisp is linked dynamically against libsigsegv, so unless there
were abi
> > > changes (and/or header differences), a rebuild shouldn't be (absolutely)
> > necessary.
> > 
> > clisp is not linked dynamically against libsigsegv.
> > it is linked statically.
> > the currently distributed clisp segfaults on
> > (defun f () (f))
> > (f)
> > even when the system is upgraded to libsigsegv 2.4.
> > when clisp is built against libsigsegv 2.4, I get
> > *** - Program stack overflow. RESET
> > instead of segfault.
> 
> It seems that /usr/bin/clisp is not linked against libsigsegv:
of course, this is just a wrapper that calls lisp.run

> However /usr/lib/clisp/full/lisp.run is:
of course, this is the runtime.

> What does this mean for the libsigsegv?
it means that _EVERY_ update of libsigsegv requires rebuilding of clisp.
Bruno should be able to say more.


Comment 9 Sam Steingold 2006-07-24 00:21:15 UTC
(In reply to comment #7)
> (In reply to comment #5)
> > (In reply to comment #3)
> > > (In reply to comment #1)
> > > > "clisp --version" insicates that it has beed built with debugging symbols.
> > > > this is because clisp configure now respects the environment variable CFLAGS
> > > > and when it is not set uses "-g -O2" as per GNU standards.
> > > > please re-configure CLISP with CFLAGS="":
> > > > CFLAGS="" ./configure ....
> > > > thanks.
> > > Currently CFLAGS is not set at all in the .spec file.
> > > Could you explain, why unsetting CFLAGS is necessary?
> > 
> > when CFLAGS is not set, AC_PROG_CC in autoconf sets it to "-g -O2"
> > which is not what we want here.
> > you must NOT unset CFLAGS,
> > you must SET it to "" (an empty string)
> > like you do for every other gnu package that uses autoconf
> > and which you do not want to distribute with the debug symbols.
> > 
> Could you open a separate bug report on this?
> 
bug 199887


Comment 10 Gérard Milmeister 2006-07-24 14:47:15 UTC
I rebuilt clisp locally, and indeed the test case you provided for libsigsegv
now works as expected. This is strange, however. If libsigsegv is linked 
dynamically (as it appears to be according to the ldd output), then it should
not matter, if the library is updated separately. If it does link statically,
then why is there am RPM dependency on the shared library? Also, linking
statically is strongly discouraged. To me it seems, that there is something
wrong here.

Comment 11 Rex Dieter 2006-07-24 15:05:04 UTC
One possibility is that the libsigsegv api/abi changed subtly.


Note You need to log in before you can comment on or make changes to this bug.