diff options
-rw-r--r-- | open_issues/cannot_create__dev_null__interrupted_system_call.mdwn | 343 | ||||
-rw-r--r-- | open_issues/libpthread_cancellation_points.mdwn | 78 |
2 files changed, 419 insertions, 2 deletions
diff --git a/open_issues/cannot_create__dev_null__interrupted_system_call.mdwn b/open_issues/cannot_create__dev_null__interrupted_system_call.mdwn index b0f14a17..1051b3b9 100644 --- a/open_issues/cannot_create__dev_null__interrupted_system_call.mdwn +++ b/open_issues/cannot_create__dev_null__interrupted_system_call.mdwn @@ -1,4 +1,5 @@ -[[!meta copyright="Copyright © 2013, 2014 Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2013, 2014, 2015 Free Software Foundation, +Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this @@ -10,6 +11,10 @@ License|/fdl]]."]]"""]] [[!tag open_issue_hurd]] +/!\ [[I|tschwinge]] think this has been resolved? + +[[!toc levels=3]] + # IRC, freenode, #hurd, 2013-12-05 @@ -191,3 +196,339 @@ License|/fdl]]."]]"""]] http://gnashdev.org:8010/builders/z-sid-hurd-i386/builds/30/steps/system_upgrade/logs/stdio <gg0> especially during setup-translators -k <braunr> yes + + +## [[tschwinge]]'s notes, 2014-02-24 + + $ i=0; while ! grep Inter < l; do rm -vrf ./* && echo $((++i)) && dash -x ../W._C._Handy/configure --prefix="$PWD".install --enable-gold --with-sysroot=/ SHELL=/bin/dash CC=gcc-4.8 CXX=g++-4.8 --disable-werror > l 2>&1; done + +Does happen, but log not useful. + + $ i=0; while ! grep Inter < l; do rm -vrf ./* && echo $((++i)) && dash -x ../W._C._Handy/configure --prefix="$PWD".install --enable-gold --with-sysroot=/ CC=gcc-4.8 CXX=g++-4.8 --disable-werror > l 2>&1; done + +Running fine 2066 times, then I terminated. + + $ i=0; while ! grep Inter < l; do rm -vrf ./* && echo $((++i)) && dash -x ../W._C._Handy/configure --prefix="$PWD".install --enable-gold --with-sysroot=/ SHELL=/bin/dash\ -x CC=gcc-4.8 CXX=g++-4.8 --disable-werror > l 2>&1; done + [...] + 9 + ./config.status: 299: ./config.status: cannot create /dev/null: Interrupted system call + + + ln -s conf29005.file conf29005.dir + + test ! -f conf29005.exe + + rm -f conf29005 conf29005.exe conf29005.dir/conf29005.file conf29005.file + ./config.status: 299: ./config.status: cannot create /dev/null: Interrupted system call + + rmdir conf29005.dir + + mkdir -p . + + $ cat -n < config.status | sed -n '294,+10 p' + 294 fi + 295 else + 296 as_ln_s='cp -p' + 297 fi + 298 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file + 299 rmdir conf$$.dir 2>/dev/null + 300 + 301 + 302 # as_fn_mkdir_p + 303 # ------------- + 304 # Create "$as_dir" as a directory, including parents if necessary. + +But conf29005.dir now still exists, empty. + + $ rmdir conf29005.dir 2> /dev/null + $ echo $? + +What this configure invocation is doing differently from the previous one is +that it re-execs the configure script (due to, and with SHELL=[...]). + +/bin/sh currently is a symlink to bash. + + $ i=0; while ! grep Inter < l; do rm -vrf ./* && echo $((++i)) && bash -x ../W._C._Handy/configure --prefix="$PWD".install --enable-gold --with-sysroot=/ SHELL=/bin/bash\ -x CC=gcc-4.8 CXX=g++-4.8 --disable-werror > l 2>&1; done + +Running fine 60 times, then I terminated. + + $ sudo ln -sf dash /bin/sh + + $ i=0; while ! grep Inter < l; do rm -vrf ./* && echo $((++i)) && dash -x ../W._C._Handy/configure --prefix="$PWD".install --enable-gold --with-sysroot=/ CC=gcc-4.8 CXX=g++-4.8 --disable-werror > l 2>&1; done + +Running fine 50 times, then I terminated. + + + CONFIG_SHELL=/bin/bash as_have_required=yes + [...] + + exec /bin/bash ../W._C._Handy/configure --prefix=/home/thomas/tmp/binutils-gdb/tschwinge/W._C._Handy.build.install --enable-gold --with-sysroot=/ CC=gcc-4.8 CXX=g++-4.8 --disable-werror + + $ i=0; while ! grep Inter < l; do rm -vrf ./* && echo $((++i)) && bash -x ../W._C._Handy/configure --prefix="$PWD".install --enable-gold --with-sysroot=/ SHELL=/bin/bash\ -x CC=gcc-4.8 CXX=g++-4.8 --disable-werror > l 2>&1; done + +Running fine 85 times, then I terminated. + +No exec. + + $ i=0; while ! grep Inter < l; do rm -vrf ./* && echo $((++i)) && bash -x ../W._C._Handy/configure --prefix="$PWD".install --enable-gold --with-sysroot=/ SHELL=/bin/sh\ -x CC=gcc-4.8 CXX=g++-4.8 --disable-werror > l 2>&1; done + [...] + 18 + ./config.status: 299: ./config.status: cannot create /dev/null: Interrupted system call + +No exec. -> Assuming exec of /bin/*sh is not relevant. + +Back to normal: + + $ sudo ln -sf bash /bin/sh + +Maybe it's a dash issue (or, an issue triggered by dash)? + +/usr/share/doc/dash/changelog.Debian.gz + + dash (0.5.7-4) unstable; urgency=low + + * Thx Michael Gilbert for NMU. + * 0006-JOBS-address-format-security-build-error.diff: new: address + format-security build error (patch from Simon Ruderich). + * debian/rules: make DEB_BUILD_OPTIONS=diet build working again. + * debian/diff/0007-EVAL-Report-I-O-error-on-stdout.diff: new: eval: report + I/O error on stdout (closes: #690473). + + -- Gerrit Pape <pape@smarden.org> Wed, 08 Jan 2014 11:54:11 +0000 + + dash (0.5.7-3+nmu1) unstable; urgency=medium + + * Non-maintainer upload. + * Enable build-hardening flags (closes: #662721). + + -- Michael Gilbert <mgilbert@debian.org> Wed, 25 Dec 2013 13:46:03 -0500 + + dash (0.5.7-3) unstable; urgency=low + [...] + -- Gerrit Pape <pape@smarden.org> Thu, 01 Mar 2012 00:09:45 +0000 + +From its name alone, »0007-EVAL-Report-I-O-error-on-stdout.diff: new: eval: +report I/O error on stdout (closes: #690473)« sounds suspicious. + + diff --git a/src/eval.c b/src/eval.c + index 7252463..863aa77 100644 + --- a/src/eval.c + +++ b/src/eval.c + @@ -899,6 +899,8 @@ evalbltin(const struct builtincmd *cmd, int argc, char **argv, int flags) + else + status = (*cmd->builtin)(argc, argv); + flushall(); + + if (outerr(out1)) + + warnx("%s: I/O error", commandname); + status |= outerr(out1); + exitstatus = status; + cmddone: + + ./output.h:extern struct output *out1; + ./output.h:#define outerr(f) (f)->flags + +That doesn't really look too suspicious, but let's try without this patch: + + $ apt-get source dash + $ cd dash-0.5.7/ + $ mv debian/diff/0007-Report-I-O-error-on-stdout.diff{,_} + $ dpkg-buildpackage -uc -b + $ sudo dpkg -i ../dash_0.5.7-4_hurd-i386.deb + + $ i=0; while ! grep Inter < l; do rm -vrf ./* && echo $((++i)) && bash -x ../W._C._Handy/configure --prefix="$PWD".install --enable-gold --with-sysroot=/ SHELL=/bin/dash\ -x CC=gcc-4.8 CXX=g++-4.8 --disable-werror > l 2>&1; done + [...] + 2 + ./config.status: 299: ./config.status: cannot create /dev/null: Interrupted system call + +So that dash change is not relevant. + + $ i=0; while ! grep Inter < l; do rm -vrf ./* && echo $((++i)) && dash -x ../W._C._Handy/configure --prefix="$PWD".install --enable-gold --with-sysroot=/ SHELL=/bin/dash\ -x CC=gcc-4.8 CXX=g++-4.8 --disable-werror > l 2>&1; done + [...] + 185 + ./config.status: 299: ./config.status: cannot create /dev/null: Interrupted system call + +Wow, so it can take a little while... + +Before noticing this problem, I had been running dash 0.5.7-3+nmu1; re-get that +from <http://snapshot.debian.org/binary/dash/>. + + $ i=0; while ! grep Inter < l; do rm -vrf ./* && echo $((++i)) && dash -x ../W._C._Handy/configure --prefix="$PWD".install --enable-gold --with-sysroot=/ SHELL=/bin/dash\ -x CC=gcc-4.8 CXX=g++-4.8 --disable-werror > l 2>&1; done + [...] + 178 + ./config.status: 299: ./config.status: cannot create /dev/null: Interrupted system call + + $ i=0; while ! grep Inter < l; do rm -vrf ./* && echo $((++i)) && bash -x ../W._C._Handy/configure --prefix="$PWD".install --enable-gold --with-sysroot=/ SHELL=/bin/dash\ -x CC=gcc-4.8 CXX=g++-4.8 --disable-werror > l 2>&1; done + [...] + 27 + ./config.status: 299: ./config.status: cannot create /dev/null: Interrupted system call + + [...] + 5 + ./config.status: 299: ./config.status: cannot create /dev/null: Interrupted system call + + [...] + 3 + ./config.status: 299: ./config.status: cannot create /dev/null: Interrupted system call + + [...] + 16 + ./config.status: 299: ./config.status: cannot create /dev/null: Interrupted system call + + [...] + 70 + ./config.status: 299: ./config.status: cannot create /dev/null: Interrupted system call + + [...] + 2 + ./config.status: 299: ./config.status: cannot create /dev/null: Interrupted system call + + [...] + 3 + ./config.status: 299: ./config.status: cannot create /dev/null: Interrupted system call + +It appears that generally the issue appearch faster when running »bash +configure SHELL=/bin/dash« as opposed to »dash configure SHELL=/bin/dash«. + +To re-confirm that dash needs to be involved: + + $ i=0; while ! grep Inter < l; do rm -vrf ./* && echo $((++i)) && bash -x ../W._C._Handy/configure --prefix="$PWD".install --enable-gold --with-sysroot=/ SHELL=/bin/bash\ -x CC=gcc-4.8 CXX=g++-4.8 --disable-werror > l 2>&1; done + +The next morning: + + bash: l: Computer bought the farm + rm: cannot remove `./*': Computer bought the farm + bash: l: Computer bought the farm + rm: cannot remove `./*': Computer bought the farm + [...] + $ fsysopts . + fsysopts: .: Computer bought the farm + $ cd + $ fsysopts . + /hurd/ext2fs --readonly --no-atime --no-inherit-dir-group /dev/hd2s2 + +Console: [[ext2fs_libports_reference_counting_assertion.mdwn]]. Reboot. + +Again: + + $ i=0; while ! grep Inter < l; do rm -vrf ./* && echo $((++i)) && bash -x ../W._C._Handy/configure --prefix="$PWD".install --enable-gold --with-sysroot=/ SHELL=/bin/bash\ -x CC=gcc-4.8 CXX=g++-4.8 --disable-werror > l 2>&1; done + +Running fine 18054 times, then I terminated. + +Then, [[message-id "87wqghouoc.fsf@schwinge.name" desc="coulomb died"]]... + + +## [[tschwinge]]'s notes, 2014-04-09 + +Now running in a QEMU/KVM virtual machine. The issue is much harder to +reproduce. + +Reinstalling Debian's hurd package, it is observed fairly regularely, always +when setting up the translators, but in different positions: + + $ sudo apt-get --reinstall install hurd + Reading package lists... Done + Building dependency tree + Reading state information... Done + 0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 1 not upgraded. + Need to get 0 B/1377 kB of archives. + After this operation, 0 B of additional disk space will be used. + (Reading database ... 70001 files and directories currently installed.) + Preparing to unpack .../hurd_1%3a0.5.git20140326-1_hurd-i386.deb ... + Unpacking hurd (1:0.5.git20140326-1) over (1:0.5.git20140326-1) ... + Setting up hurd (1:0.5.git20140326-1) ... + Setting up translators: /hurd/exec /hurd/proxy-defpager /hurd/pflocal (+link) /hurd/pfinet (+link) (+link) /hurd/procfs -c /hurd/password crash-kill crash-suspend crash-dump-core crash. + Creating device nodes: fd fdX std vcs hdX hdXsY hdXs1Y sdX sdXsY/sbin/MAKEDEV: 75: /sbin/MAKEDEV: cannot create /dev/null: Interrupted system call + sdXs1Y cdX netdde ethX loopX ttyX ptyp ptyq lprX comX random urandom kbd mouse shm. + [...] + $ sudo apt-get --reinstall install hurd + Reading package lists... Done + Building dependency tree + Reading state information... Done + 0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 1 not upgraded. + Need to get 0 B/1377 kB of archives. + After this operation, 0 B of additional disk space will be used. + (Reading database ... 70001 files and directories currently installed.) + Preparing to unpack .../hurd_1%3a0.5.git20140326-1_hurd-i386.deb ... + Unpacking hurd (1:0.5.git20140326-1) over (1:0.5.git20140326-1) ... + Setting up hurd (1:0.5.git20140326-1) ... + Setting up translators: /hurd/exec /hurd/proxy-defpager /hurd/pflocal (+link) /hurd/pfinet (+link) (+link) /hurd/procfs -c /hurd/password crash-kill crash-suspend crash-dump-core crash. + Creating device nodes: fd fdX std vcs hdX hdXsY hdXs1Y sdX sdXsY sdXs1Y cdX netdde ethX loopX ttyX ptyp/sbin/MAKEDEV: 75: /sbin/MAKEDEV: cannot create /dev/null: Interrupted system call + ptyq lprX comX random urandom kbd mouse shm. + [...] + $ sudo apt-get --reinstall install hurd + Reading package lists... Done + Building dependency tree + Reading state information... Done + 0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 1 not upgraded. + Need to get 0 B/1377 kB of archives. + After this operation, 0 B of additional disk space will be used. + (Reading database ... 70001 files and directories currently installed.) + Preparing to unpack .../hurd_1%3a0.5.git20140326-1_hurd-i386.deb ... + Unpacking hurd (1:0.5.git20140326-1) over (1:0.5.git20140326-1) ... + Setting up hurd (1:0.5.git20140326-1) ... + Setting up translators: /hurd/exec /hurd/proxy-defpager /hurd/pflocal (+link) /hurd/pfinet (+link) (+link) /hurd/procfs -c /hurd/password crash-kill crash-suspend crash-dump-core crash. + Creating device nodes: fd fdX std vcs hdX hdXsY/sbin/MAKEDEV: 75: /sbin/MAKEDEV: cannot create /dev/null: Interrupted system call + hdXs1Y/sbin/MAKEDEV: 75: /sbin/MAKEDEV: cannot create /dev/null: Interrupted system call + sdX sdXsY sdXs1Y cdX netdde ethX loopX ttyX ptyp ptyq lprX comX random urandom kbd mouse shm. + +It can also reproduced when manually running `setup-translators` -- but not as +easily: + + $ i=0 && rm -f l && while ! grep Inter < l; do echo $((++i)) && sudo /usr/lib/hurd/setup-translators -K > l 2>&1; done + [...] + 112 + Creating device nodes: fd fdX std vcs hdX hdXsY hdXs1Y/sbin/MAKEDEV: 75: /sbin/MAKEDEV: cannot create /dev/null: Interrupted system call + +That's with: + + $ readlink /bin/sh + dash + +Switch to bash: + + $ sudo dpkg-reconfigure dash + [No.] + $ readlink /bin/sh + bash + + $ i=0 && rm -f l && while ! grep Inter < l; do echo $((++i)) && sudo /usr/lib/hurd/setup-translators -K > l 2>&1; done + [...] + +Still not happened after 16800 iterations, half a day later. + +So it really is related to dash, in some way. Not necessarily a bug in dash, +but something that dash is doing differently (and triggers a bug somewhere +else). + +The next question is what was changed in (presumably) early 2013-12 that +this behavior is now exhibited. + + +### `ps -AF hurd-long` + +By the way, after having run `setup-translators` for half a day, we got: + + $ ps -AF hurd-long + PID UID PPID PGrp Sess TH Vmem RSS %CPU User System Args + 1 0 1 1 1 3 146M 908K 0.0 0:00.22 0:00.23 init [2] + 2 - 1 1 1 1 146M 216K 0.0 0:00.01 0:00.01 /hurd/init root=device:hd0s1 + 3 - 1 1 1 8 1.64G 48.3M 0.6 0:00.00 6:42.01 root=device:hd0s1 + 4 - 2 1 1 14 135M 1.12M 12.3 15:43.29 73min /hurd/proc + 5 - 2 1 1 11 432M 31.9M 27.5 31:22.42 2hrs ext2fs --readonly --multiboot-command-line=root=device:hd0s1 --host-priv-port=1 --device-master-port=2 --exec-server-task=3 -T typed device:hd0s1 + 6 - 5 1 1 4 136M 1000K 5.8 5:04.45 36:49.29 /hurd/exec + 7 - 2 1 1 4 136M 648K 1.8 0:46.65 7:22.07 /hurd/auth + 8 0 5 1 1 5 136M 772K 0.0 0:00.04 0:00.36 /hurd/term /dev/console device console + 10 0 5 1 1 17 139M 1.2M 0.3 1:13.67 6:00.96 /hurd/pflocal + 12 0 1 12 12 6 140M 12.9M 0.0 0:00.00 0:00.09 /hurd/mach-defpager + 21 0 5 1 1 3 136M 1.01M 0.0 0:00.61 0:01.39 /hurd/procfs -c + 39 0 5 1 1 2 135M 604K 0.0 0:00.00 0:00.03 /hurd/proxy-defpager + 94 0 1 15 15 6 139M 1.22M 0.4 0:03.25 0:11.16 /hurd/tmpfs --nosuid --noexec --size=10% --mode=755 tmpfs + 115 0 1 15 15 3 139M 948K 0.0 0:00.00 0:00.00 /hurd/tmpfs --noexec --nosuid --size=5242880 --mode=1777 tmpfs + 202 0 1 15 15 3 139M 944K 0.0 0:00.27 0:00.81 /hurd/tmpfs --nosuid --noexec --size=314560k --mode=1777 tmpfs + 226 0 5 1 1 2 135M 780K 0.0 0:00.00 0:00.00 /hurd/storeio hd1 + 234 0 5 1 1 2 135M 768K 0.0 0:00.01 0:00.02 /hurd/storeio hd0s1 + 235 0 5 1 1 2 136M 832K 0.0 0:00.00 0:00.01 /hurd/storeio hd2 + 237 - 21 1 1 2 134M 788K 0.0 0:00.00 0:00.01 /hurd/mtab / + 480 0 1 15 15 9 401M 2.86M 0.0 0:27.17 1:41.08 /hurd/ext2fs /dev/hd2 + [...] + 1005 1000 1000 1005 1005 2 147M 2.15M 0.0 0:00.00 0:00.02 /bin/bash + 1016 0 5 1 1 5 414M 407M 1.3 3:43.68 12:20.81 /hurd/term /dev/ptyp2 pty-master /dev/ttyp2 + 1019 1000 1000 1019 1019 2 147M 2.49M 0.3 0:04.30 0:19.64 /bin/bash + 1165 0 5 1 1 2 134M 928K 0.0 0:02.42 0:16.48 /hurd/magic --directory fd + 1183 0 5 1 1 2 134M 872K 0.0 0:02.03 0:06.30 /hurd/magic tty + 1188 - 5 1 1 4 136M 1M 2.6 2:33.19 16:58.50 /hurd/null + 1208 0 5 1 1 4 136M 3.07M 0.0 0:00.67 0:03.07 /hurd/term /dev/ptyp3 pty-master /dev/ttyp3 + [...] diff --git a/open_issues/libpthread_cancellation_points.mdwn b/open_issues/libpthread_cancellation_points.mdwn index 48f1acf5..09127e0c 100644 --- a/open_issues/libpthread_cancellation_points.mdwn +++ b/open_issues/libpthread_cancellation_points.mdwn @@ -1,4 +1,4 @@ -[[!meta copyright="Copyright © 2013 Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2013, 2015 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this @@ -137,3 +137,79 @@ the mig msg call either. ### IRC, freenode, #hurd, 2013-04-16 <braunr> youpi: yes, we said some time ago that it was lacking + + +# `userspace-rcu` + +With `2.13-39+hurd.3.rbraun.1` (that is, `2.13-39+hurd.3` plus +`hurd-i386/0001-Mask-options-implemented-by-the-userspace-side-of-ma.patch.`) +installed. + +During `make check` of the `userspace-rcu` package. + + [...] + ./test_urcu_gc 4 4 10 -d 0 -b 4096 + [hangs] + + (gdb) thread apply all bt + + Thread 5 (Thread 14933.5): + #0 0x0106785c in mach_msg_trap () at /home/rbraun/devel/debian/packages/eglibc/eglibc-2.13/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2 + #1 0x01068074 in __mach_msg (msg=0x27fff2c, option=3, send_size=24, rcv_size=32, rcv_name=120, timeout=0, notify=0) at msg.c:115 + #2 0x011ed35c in __thread_suspend (target_thread=115) at /home/rbraun/devel/debian/packages/eglibc/eglibc-2.13/build-tree/hurd-i386-libc/mach/RPC_thread_suspend.c:84 + #3 0x01045016 in __pthread_thread_halt (thread=0x80744a8) at ../libpthread/sysdeps/mach/pt-thread-halt.c:43 + #4 0x01041365 in __pthread_exit (status=0x2) at ./pthread/pt-exit.c:118 + #5 0x01040e78 in entry_point (start_routine=0x80494b0 <thr_writer>, arg=0x3) at ./pthread/pt-create.c:50 + #6 0x00000000 in ?? () + + Thread 4 (Thread 14933.4): + #0 0x0106785c in mach_msg_trap () at /home/rbraun/devel/debian/packages/eglibc/eglibc-2.13/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2 + #1 0x01068074 in __mach_msg (msg=0x25fff2c, option=3, send_size=24, rcv_size=32, rcv_name=119, timeout=0, notify=0) at msg.c:115 + #2 0x011ed35c in __thread_suspend (target_thread=113) at /home/rbraun/devel/debian/packages/eglibc/eglibc-2.13/build-tree/hurd-i386-libc/mach/RPC_thread_suspend.c:84 + #3 0x01045016 in __pthread_thread_halt (thread=0x8073aa8) at ../libpthread/sysdeps/mach/pt-thread-halt.c:43 + #4 0x01041365 in __pthread_exit (status=0x2) at ./pthread/pt-exit.c:118 + #5 0x01040e78 in entry_point (start_routine=0x80494b0 <thr_writer>, arg=0x2) at ./pthread/pt-create.c:50 + #6 0x00000000 in ?? () + + Thread 3 (Thread 14933.3): + #0 0x0106785c in mach_msg_trap () at /home/rbraun/devel/debian/packages/eglibc/eglibc-2.13/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2 + #1 0x01068074 in __mach_msg (msg=0x23ffe34, option=1282, send_size=0, rcv_size=40, rcv_name=122, timeout=10, notify=0) at msg.c:115 + #2 0x0106ece3 in _hurd_select (nfds=0, pollfds=0x0, readfds=0x0, writefds=0x0, exceptfds=0x0, timeout=0x23ffefc, sigmask=0x0) at hurdselect.c:382 + #3 0x0115875b in __poll (fds=fds@entry=0x0, nfds=nfds@entry=0, timeout=timeout@entry=10) at ../sysdeps/mach/hurd/poll.c:48 + #4 0x0804a1bc in urcu_adaptative_busy_wait (wait=0x23fff48) at ../urcu-wait.h:164 + #5 synchronize_rcu_mb () at ../urcu.c:329 + #6 0x0804946c in rcu_gc_clear_queue (wtidx=wtidx@entry=1) at test_urcu_gc.c:241 + #7 0x080495e6 in rcu_gc_reclaim (old=<optimized out>, wtidx=1) at test_urcu_gc.c:264 + #8 thr_writer (data=0x1) at test_urcu_gc.c:295 + #9 0x01040e70 in entry_point (start_routine=0x80494b0 <thr_writer>, arg=0x1) at ./pthread/pt-create.c:50 + #10 0x00000000 in ?? () + + Thread 2 (Thread 14933.2): + #0 0x0106785c in mach_msg_trap () at /home/rbraun/devel/debian/packages/eglibc/eglibc-2.13/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2 + #1 0x01068074 in __mach_msg (msg=0x17fdf30, option=3, send_size=32, rcv_size=4096, rcv_name=95, timeout=0, notify=0) at msg.c:115 + #2 0x01068799 in __mach_msg_server_timeout (demux=0x1079150 <msgport_server>, max_size=4096, rcv_name=95, option=0, timeout=0) at msgserver.c:151 + #3 0x0106886b in __mach_msg_server (demux=0x1079150 <msgport_server>, max_size=4096, rcv_name=95) at msgserver.c:196 + #4 0x0107911f in _hurd_msgport_receive () at msgportdemux.c:68 + #5 0x01040e70 in entry_point (start_routine=0x10790b0 <_hurd_msgport_receive>, arg=0x0) at ./pthread/pt-create.c:50 + #6 0x00000000 in ?? () + + Thread 1 (Thread 14933.1): + #0 0x0106785c in mach_msg_trap () at /home/rbraun/devel/debian/packages/eglibc/eglibc-2.13/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2 + #1 0x01068074 in __mach_msg (msg=0x15ff93c, option=2, send_size=0, rcv_size=24, rcv_name=94, timeout=0, notify=0) at msg.c:115 + #2 0x010451a2 in __pthread_block (thread=0x805e600) at ../libpthread/sysdeps/mach/pt-block.c:35 + #3 0x010443a8 in __pthread_cond_timedwait_internal (cond=0x80730dc, mutex=0x80730bc, abstime=0x0) at ./pthread/../sysdeps/generic/pt-cond-timedwait.c:130 + #4 0x01043fcc in __pthread_cond_wait (cond=0x80730dc, mutex=0x80730bc) at ./pthread/../sysdeps/generic/pt-cond-wait.c:36 + #5 0x010414ef in pthread_join (thread=8, status=status@entry=0x15ffa6c) at ./pthread/pt-join.c:46 + #6 0x08048f9b in main (argc=8, argv=0x15ffb08) at test_urcu_gc.c:466 + (gdb) thread 3 + [Switching to thread 3 (Thread 14933.3)] + #0 0x0106785c in mach_msg_trap () at /home/rbraun/devel/debian/packages/eglibc/eglibc-2.13/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2 + 2 /home/rbraun/devel/debian/packages/eglibc/eglibc-2.13/build-tree/hurd-i386-libc/mach/mach_msg_trap.S: Datei oder Verzeichnis nicht gefunden. + (gdb) call pthread_self() + $1 = 8 + +That is, Thread 1 is waiting for Thread 3 (8) to join, which is stuck in +`poll`. + +Is this really the [[libpthread_cancellation_points]] issue -- there doesn't +seem to be any thread cancellation involved? |