Re: Where is libc for the Hurd?
Date: Tue, 09 Nov 1999 09:49:27 -0500
From: Bill White <email@example.com>
At 02:22 PM 11/8/99 -0500, Roland McGrath wrote:
>> I am looking at the nfsd, but I am getting traps and failures in:
>> sleep -> mach_msg -> mach_msg_trap
>Please be more specific. Can you show us the gdb backtrace and so forth?
>What does "traps and failures" mean exactly?
Sorry. I don't have it right in front of me, but I get a trace trap
(SIGIOT maybe?), and then, when I continue that, a SEGV. I think it
is related to GDB, since I don't see this when I run the program
outside of GDB. Is it possible that GDB breaks on some signal
which is normally ignored, and that some problem with restarting
after the trap causes the program to get a SEGV? I am not a gdb
expert anymore, if I ever was. Is it possible in gdb to turn
off breaking in some circs? That is, can I turn off breaking for
the trace trap?
GDB still has many deficiencies, especially when debugging multiple
threads. I am seeing similar problems as you're experiencing from
time to time. While I'm more or less acting as the maintainer of the
Hurd-specific parts of GDB, there are still parts of the interaction
between GDB and the program being debugged that I do not fully grasp
yet. I hope I can make some improvements though.
So, if the Hurd libc and the GNU/Linux libc are the same source base,
does that mean that most of the Hurd's libc is identical to Linux?
Yes, a lot of code is identical. The Hurd libc contains a lot of
additional code though, since libc implements a lot of functionality
that is provided by system calls on Linux. The Hurd libc also
contains a lot of Mach specific code. We also use a different stdio
implementation than Linux, but this will change in the future.
I thought that the Hurd's libc was in constant flux, though I can't
recover how I got that impression.
Well, it is changing, but not at a rapid pace. But we're fixing some
critical bugs from time to time.
Is the GNU/Linux libc in flux as well, and how is the work on the
There is a stable branch, 2.1.x, to which only bug-fixes are applied
and a development version that already contains a lot of new
functionality (for example, `wide' streams). Basically we try our
best to have it working on the Hurd when the glibc maintainer wants to
release a new version, but there is no formal way of synchronization.