Re,

Samuel Thibault, le mer. 27 juil. 2022 23:35:46 +0200, a ecrit:
> Peter B, le mer. 27 juil. 2022 18:02:53 +0100, a ecrit:
> > #11 0x010bcff2 in __GI___assert_fail (assertion=0x10538b5 "self != NULL",
> > file=0x10538ab "pt-self.c", line=28, function=0x10538c4
> > <__PRETTY_FUNCTION__.1> "__pthread_self") at assert.c:101
> > #12 0x0104d33f in __pthread_self () at pt-self.c:28
> > #13 __pthread_self () at pt-self.c:25
> > #14 0x0803d0c7 in lock () at sem_inc.c:145
> > #15 0x0803d1d6 in DUMA_get_sem () at sem_inc.c:230
> > #16 0x0803afcc in _duma_init () at duma.c:1034
> > #17 0x0803c386 in _duma_malloc (size=716, filename=0x803e060 <unknown_file>
> > "UNKNOWN (use #include \"duma.h\")", lineno=0) at duma.c:1966
> > #18 0x0803cc8b in malloc (size=716) at duma.c:2424
> > #19 0x0104c33d in __pthread_alloc (pthread=0x1039d30) at pt-alloc.c:124
> > #20 0x0104c773 in __pthread_create_internal (thread=0x1039d78,
> > attr=0x1039d7c, start_routine=0x0, arg=0x0) at pt-create.c:120
> > #21 0x0105146b in _init_routine (stack=<optimized out>) at 
> > ../sysdeps/mach/hurd/htl/pt-sysdep.c:66
> > #22 0x0001164b in call_init (l=<optimized out>, argc=argc@entry=1, 
> > argv=argv@entry=0x1039e54, env=0x1039e5c) at dl-init.c:74
> > #23 0x000117f5 in call_init (env=0x1039e5c, argv=0x1039e54, argc=1, 
> > l=<optimized out>) at dl-init.c:37
> > #24 _dl_init (main_map=0x389d0, argc=1, argv=0x1039e54, env=0x1039e5c) at 
> > dl-init.c:88
> > #25 0x00002052 in _dl_start_user () from /lib/ld.so
> 
> Ok, that confirms what I was guessing: libpthread is initializing
> itself, and for that uses a dynamic allocation, during which duma calls
> pthread_self, which cannot work yet.
> 
> Ideally libpthread would not need to allocate anything for its
> initialization, but that's really tricky. Possibly we can trick
> pthread_self into being callable very early.

Could you try with the libc from 

https://people.debian.org/~sthibault/tmp/hurd-i386/

Samuel

Reply via email to