Liam Healy ([info]lhealy) wrote,
@ 2008-03-05 08:54:00
Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Entry tags:debian, lisp

SBCL, libc6, and GCC


For those that don't follow the mailing list, SBCL on Debian is unusable in unstable. SBCL did not change, but Debian upgraded libc6 to 2.7-9. This causes SBCL to spin at 100% usage, or simply to hang, while starting up. The only relevant change to libc6 is that it is now compiled with GCC 4.3 instead of 4.2; the libc6 maintainer has confirmed that backing out this change and recompiling libc6 with GCC 4.2 allows SBCL to work. It is still unclear where the problem(s) is/are; but the experts have narrowed it down further. Follow the developments on the Debian bug report; even if you don't use Debian, presumably this combination of software is a problem. In the meantime, if you are a sid user, don't upgrade! Though apparently some people have experienced the problem as a random failure, my experience is that it's 100% reproduceible.


Software is complicated.




(Post a new comment)

Ubuntu too?
(Anonymous)
2008-03-06 09:33 pm UTC (link)
Possibly a dumb question, but does this effect the builds coming down the ubuntu stream? If that even makes sense.

Chris Foley

(Reply to this) (Thread)

Re: Ubuntu too?
[info]lhealy
2008-03-07 01:01 am UTC (link)
I don't know if Ubuntu tracks Debian sid, but if it does, then yes, it's potentially a problem. If you're using a released version of Ubuntu it won't affect you.

In the meantime (see http://lkml.org/lkml/2008/3/5/207) it appears that this problem is that gcc decided to start strictly following the x86/x86-64 ABI which no major kernel (Linux, FreeBSD, Hurd) follows, so there will probably be a quick reversion of gcc to old behavior, and a slow evolution of kernels to be correct.

(Reply to this) (Parent)

It's a GCC/kernel issue
(Anonymous)
2008-03-11 10:10 pm UTC (link)
Essentially, here is what broke with GCC 4.3:

The x86 and x86-64 ABIs say that upon entry to a function, the direction flag is cleared. They have always said that (AFAIK). In GCC 4.3, a change was made that basically assumes this is true (which avoids doing unneeded work, for instance to clear the flags when we know they already should be).

Problem: The Linux kernel does not clear the direction flag when entering an application signal handler. So if a function is going along doing something, and a signal is triggered, and the called signal handler calls certain functions (such as, say, memcpy), you can see a crash or other failure.

(Reply to this)

Debian Warp!
(Anonymous)
2008-03-20 02:37 am UTC (link)
I read the Debian bug report, and it looks like they had patches for SBCL and Linux 2.6.24 two weeks ago, and also reverting gcc or libc6 is basically trivial. But nothing has happened since then.

Who do I bribe to get some of these patches applied in sid? :-)

(Reply to this)


Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…