On 12/09/2026 11:24, Michael Kelly wrote:
On 11/09/2026 21:57, Michael Kelly wrote:
Would you expect rumpkernel and/or Hurd to cope with a gpt
partitioned disk? Perhaps this is the block but I'll look tomorrow.
I found that parted was somehow blocked in a call to uuid_generate. I
haven't delved further yet into this but I suspect maybe a call into
'/dev/random' functionality is involved. For the
The lockup happens after uuid_generate() makes the call to getrandom().
getrandom() does attempt to lookup /dev/urandom but that fails with
EGRATUITOUS. The library code for uuid_generate() goes on to some
fallback code to generate random data involving gettimeofday(), getpid()
and getuid(). It's the call to getuid() that causes the lockup because
it is attempting to spin_lock using the invalid pointer 0x30. The root
cause is that _hurd_ports is NULL because _hurd_init() hasn't been
called yet.
I've seen _hurd_ports_use() is sometimes used, for example in
__file_name_lookup_at(), to fail in the case where _hurd_ports is NULL.
This might be where the EGRATUITOUS for /dev/urandom comes from.
getuid() always assumes it has a valid _hurd_ports.
Any ideas for solving this one ? Patching util-linux/lib/randutils.c
(crank_random) to not call getuid() would be simple but doesn't seem right.
Mike.