[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: open_issues/bash_busy-loop.mdwn
From: |
Samuel Thibault |
Subject: |
Re: open_issues/bash_busy-loop.mdwn |
Date: |
Thu, 19 Aug 2010 01:40:13 +0200 |
User-agent: |
Mutt/1.5.12-2006-07-14 |
olafBuddenhagen@gmx.net, le Wed 18 Aug 2010 14:38:34 +0200, a écrit :
> Yes for both. I generated a backtrace from the hang with dash:
>
> #0 0x0104ef1c in swtch_pri () at
> /usr/src/eglibc-2.11.2/build-tree/hurd-i386-libc/mach/swtch_pri.S:2
> #1 0x010507b4 in __spin_lock_solid (lock=0x11c18c0) at spin-solid.c:27
> #2 0x010509ad in __mutex_lock_solid (lock=0x11c18c0) at mutex-solid.c:31
> #3 0x010d1c1b in __mutex_lock (oldmem=0x805f560, bytes=92) at
> ../mach/lock-intern.h:89
> #4 __libc_realloc (oldmem=0x805f560, bytes=92) at malloc.c:3814
On seeing this, I got to wonder whether we have some protection against
forking while this mutex being already held by another thread. Probably
worth checking.
> #5 0x010c1e72 in _IO_vasprintf (result_ptr=0x1024a74, format=0x11ac528
> "%s%s%s:%u: %s%sUnexpected error: %s.\n", args=0x1024650 "") at vasprintf.c:86
> #6 0x010aacab in ___asprintf (string_ptr=0x1024a74, format=0x11ac528
> "%s%s%s:%u: %s%sUnexpected error: %s.\n") at asprintf.c:37
> #7 0x01086f98 in __assert_perror_fail (errnum=19, file=0x11a8718
> "../sysdeps/mach/hurd/fork.c", line=466, function=0x11a874f "__fork") at
> assert-perr.c:62
> #8 0x010fc510 in __fork () at ../sysdeps/mach/hurd/fork.c:466
And then this: there's actually a bug happening during the fork call:
there are thread_refs, and for some reason the child is not able to get
them too.
> No debugging symbols available for dash; but I hope they are not needed
> really... The problem seems to be some kind of deadlock in an error path
> within glibc's fork() handling. Any suggestion how to debug this?
The two paths: whether we have protection against concurrency between
the allocator mutex being held and fork, and why the port_mod_refs call
doesn't work.
Samuel