This is the mail archive of the
glibc-bugs@sourceware.org
mailing list for the glibc project.
[Bug nptl/19004] tst-robust8 fails intermittently on x86_64
- From: "paulo.cesar.pereira.de.andrade at gmail dot com" <sourceware-bugzilla at sourceware dot org>
- To: glibc-bugs at sourceware dot org
- Date: Fri, 29 Jan 2016 13:20:30 +0000
- Subject: [Bug nptl/19004] tst-robust8 fails intermittently on x86_64
- Auto-submitted: auto-generated
- References: <bug-19004-131 at http dot sourceware dot org/bugzilla/>
https://sourceware.org/bugzilla/show_bug.cgi?id=19004
Paulo Andrade <paulo.cesar.pereira.de.andrade at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Attachment #8927|0 |1
is obsolete| |
--- Comment #9 from Paulo Andrade <paulo.cesar.pereira.de.andrade at gmail dot com> ---
Created attachment 8934
--> https://sourceware.org/bugzilla/attachment.cgi?id=8934&action=edit
robust_test.stp
Updated stap script, and s/robust_test2/robust_test/
Now I can easily trigger again the issue, instrumenting
with systemtap:
0 S root 19653 19650 0 80 0 - 1584 kretpr 11:13 pts/1 00:00:00
./robust_test
1 S root 19656 19653 0 80 0 - 1582 kretpr 11:13 pts/1 00:00:00
./robust_test
1 Z root 19708 19653 0 80 0 - 0 kretpr 11:13 pts/1 00:00:00
[robust_test] <defunct>
1 Z root 19711 19653 0 80 0 - 0 kretpr 11:13 pts/1 00:00:00
[robust_test] <defunct>
1 S root 19712 19653 0 80 0 - 1584 kretpr 11:13 pts/1 00:00:00
./robust_test
1 S root 19713 19653 0 80 0 - 1584 kretpr 11:13 pts/1 00:00:00
./robust_test
1 Z root 19714 19653 0 80 0 - 0 kretpr 11:13 pts/1 00:00:00
[robust_test] <defunct>
1 S root 19715 19653 0 80 0 - 1584 kretpr 11:13 pts/1 00:00:00
./robust_test
1 S root 19716 19653 0 80 0 - 1584 kretpr 11:13 pts/1 00:00:00
./robust_test
1 Z root 19717 19653 0 80 0 - 0 kretpr 11:13 pts/1 00:00:00
[robust_test] <defunct>
A few pages of the systemtap output:
[19697] > handle_futex_death(uaddr=0x7f87da9cd000 curr=0xffff8800c1608000
pi=0x0)
[19697] < handle_futex_death() return=0x0
[19697] < exit_robust_list()
[19697] < mm_release()
[19653] > schedule()
[19653] < schedule()
[19697] signal.send SIGCHLD to 19653
[19697] > schedule()
[19653] > syscall.wait4(upid=0x4cf1 stat_addr=0x7ffc78b0308c options=0x0
ru=0x0)
[19653] < syscall.wait4() return=0x4cf1
[19707] > syscall.set_robust_list(head=0x7f87da9a9a20 len=0x18)
[19707] < syscall.set_robust_list() return=0x0
[19707] > __pthread_mutex_lock(mutex=0x7f87da9cd000)
[19653] > pthread_mutex_unlock(mutex=0x7f87da9cd000)
[19707] > __pthread_mutex_lock_full(mutex=0x7f87da9cd000)
[19653] > pthread_mutex_unlock(decr=0x1 mutex=0x7f87da9cd000)
[19707] > syscall.futex(uaddr=0x7f87da9cd000 op=0x0 val=0x80004cc5 utime=0x0
uaddr2=0x80 val3=0x0)
[19707] > futex_wait(uaddr=0x7f87da9cd000 flags=0x1 val=0x80004cc5 abs_time=0x0
bitset=0xffffffff)
[19653] > __pthread_mutex_unlock_full(mutex=0x7f87da9cd000 decr=0x1)
[19707] > futex_wait_setup(uaddr=0x7f87da9cd000 val=0x80004cc5 flags=0x1
q=0xffff88020b5c3dc8 hb=0xffff88020b5c3d58)
[19707] < futex_wait() return=0x0
[19707] > futex_wait_queue_me(hb=0xffffc90001893fc0 q=0xffff88020b5c3dc8
timeout=0x0)
[19707] > schedule()
[19653] > syscall.futex(uaddr=0x7f87da9cd000 op=0x1 val=0x1
utime=0x7f87da9a9a10 uaddr2=0x7f87da9cd000 val3=0x4cc5)
[19653] < syscall.futex() return=0x1
[19702] < schedule()
[19653] < 0x4011a7() return=0x0
[19702] < futex_wait()
[19653] < 0x4011a7() return=0x0
[19702] < do_futex() return=0x0
[19708] > syscall.set_robust_list(head=0x7f87da9a9a20 len=0x18)
[19702] < syscall.futex() return=0x0
[19708] < syscall.set_robust_list() return=0x0
[19653] signal.send SIGTERM to 19701
[19702] < 0x401122() return=0x0
[19702] < 0x401122() return=0x0
[19701] < schedule()
[19653] > __pthread_mutex_lock(mutex=0x7f87da9cd000)
[19701] < futex_wait()
[19702] > pthread_mutex_unlock(mutex=0x7f87da9cd000)
[19701] < do_futex() return=0xfffffffffffffe00
[19653] > __pthread_mutex_lock_full(mutex=0x7f87da9cd000)
[19701] < syscall.futex() return=0xfffffffffffffe00
[19702] > pthread_mutex_unlock(decr=0x1 mutex=0x7f87da9cd000)
[19701] do_exit(code=0xf)
[19702] > __pthread_mutex_unlock_full(mutex=0x7f87da9cd000 decr=0x1)
[19701] exit_mm(tsk=0xffff88030a4d4500)
[19653] > syscall.futex(uaddr=0x7f87da9cd000 op=0x0 val=0x80004cf6 utime=0x0
uaddr2=0x80 val3=0x0)
[19701] > mm_release(tsk=0xffff88030a4d4500 mm=0xffff8803046e12c0)
[19653] > futex_wait(uaddr=0x7f87da9cd000 flags=0x1 val=0x80004cf6 abs_time=0x0
bitset=0xffffffff)
[19702] > syscall.futex(uaddr=0x7f87da9cd000 op=0x1 val=0x1
utime=0x7f87da9cd020 uaddr2=0x7f87da9cd000 val3=0x0)
[19701] > exit_robust_list(curr=0xffff88030a4d4500)
head = 0x7f87da9a9a20
&head.list = 0x7f87da9a9a20
entry = 0x7f87da9cd020
next = 0x0
futex_offset = -32
pending = 0x7f87da9cd020
[19653] > futex_wait_setup(uaddr=0x7f87da9cd000 val=0x80004cf6 flags=0x1
q=0xffff8801df113dc8 hb=0xffff8801df113d58)
[19702] < syscall.futex() return=0x1
[19701] > handle_futex_death(uaddr=0x7f87da9cd000 curr=0xffff88030a4d4500
pi=0x0)
[19653] < futex_wait() return=0xfffffffffffffff5
[19702] < 0x4011a7() return=0x0
[19701] < handle_futex_death() return=0x0
[19701] < exit_robust_list()
[19653] < do_futex() return=0xfffffffffffffff5
[19702] < 0x4011a7() return=0x0
[19701] < mm_release()
[19653] < syscall.futex() return=0xfffffffffffffff5
[19653] < 0x401122() return=0x0
[19708] > __pthread_mutex_lock(mutex=0x7f87da9cd000)
[19653] < 0x401122() return=0x0
[19653] > syscall.wait4(upid=0x4cf5 stat_addr=0x7ffc78b0308c options=0x0
ru=0x0)
[19653] > schedule()
[19702] > __pthread_mutex_lock(mutex=0x7f87da9d0908)
[19708] > __pthread_mutex_lock_full(mutex=0x7f87da9cd000)
[19702] < _dl_fini() return=0x0
[19708] > syscall.futex(uaddr=0x7f87da9cd000 op=0x0 val=0x80004cc5 utime=0x0
uaddr2=0x80 val3=0x0)
[19708] > futex_wait(uaddr=0x7f87da9cd000 flags=0x1 val=0x80004cc5 abs_time=0x0
bitset=0xffffffff)
[19708] > futex_wait_setup(uaddr=0x7f87da9cd000 val=0x80004cc5 flags=0x1
q=0xffff8801de85bdc8 hb=0xffff8801de85bd58)
[19708] < futex_wait() return=0x0
[19702] > pthread_mutex_unlock(mutex=0x7f87da9d0908)
[19708] > futex_wait_queue_me(hb=0xffffc90001893fc0 q=0xffff8801de85bdc8
timeout=0x0)
[19708] > schedule()
[19702] > pthread_mutex_unlock(decr=0x1 mutex=0x7f87da9d0908)
[19702] < _dl_fini() return=0x0
[19702] do_exit(code=0x0)
[19702] exit_mm(tsk=0xffff88030a4d0b80)
[19701] signal.send SIGCHLD to 19653
[19702] > mm_release(tsk=0xffff88030a4d0b80 mm=0xffff8803046e3840)
[19701] > schedule()
[19653] < schedule()
[19703] < schedule()
[19702] > exit_robust_list(curr=0xffff88030a4d0b80)
head = 0x7f87da9a9a20
&head.list = 0x7f87da9a9a20
entry = 0x7f87da9cd020
next = 0x7f87da9a9a20
futex_offset = -32
pending = 0x0
[19703] < futex_wait()
[19702] > handle_futex_death(uaddr=0x7f87da9cd000 curr=0xffff88030a4d0b80
pi=0x0)
[19653] < syscall.wait4() return=0x4cf5
[19702] < handle_futex_death() return=0x0
[19703] < do_futex() return=0x0
[19702] < exit_robust_list()
[19703] < syscall.futex() return=0x0
[19702] < mm_release()
[19703] > syscall.futex(uaddr=0x7f87da9cd000 op=0x0 val=0x80004cc5 utime=0x0
uaddr2=0x80 val3=0x0)
[19703] > futex_wait(uaddr=0x7f87da9cd000 flags=0x1 val=0x80004cc5 abs_time=0x0
bitset=0xffffffff)
[19703] > futex_wait_setup(uaddr=0x7f87da9cd000 val=0x80004cc5 flags=0x1
q=0xffff88026a2fbdc8 hb=0xffff88026a2fbd58)
[19703] < futex_wait() return=0x0
[19703] > futex_wait_queue_me(hb=0xffffc90001893fc0 q=0xffff88026a2fbdc8
timeout=0x0)
[19703] > schedule()
[19702] > schedule()
[19702] < schedule()
[19702] signal.send SIGCHLD to 19653
[19702] > schedule()
[19653] > syscall.wait4(upid=0x4cf6 stat_addr=0x7ffc78b0308c options=0x0
ru=0x0)
[19653] < syscall.wait4() return=0x4cf6
[19709] > syscall.set_robust_list(head=0x7f87da9a9a20 len=0x18)
[19709] < syscall.set_robust_list() return=0x0
[19709] > __pthread_mutex_lock(mutex=0x7f87da9cd000)
[19653] > pthread_mutex_unlock(mutex=0x7f87da9cd000)
[19709] > __pthread_mutex_lock_full(mutex=0x7f87da9cd000)
[19653] > pthread_mutex_unlock(decr=0x1 mutex=0x7f87da9cd000)
[19653] > __pthread_mutex_unlock_full(mutex=0x7f87da9cd000 decr=0x1)
[19709] > syscall.futex(uaddr=0x7f87da9cd000 op=0x0 val=0x80004cc5 utime=0x0
uaddr2=0x80 val3=0x0)
[19709] > futex_wait(uaddr=0x7f87da9cd000 flags=0x1 val=0x80004cc5 abs_time=0x0
bitset=0xffffffff)
[19653] > syscall.futex(uaddr=0x7f87da9cd000 op=0x1 val=0x1
utime=0x7f87da9a9a10 uaddr2=0x7f87da9cd000 val3=0x4cc5)
[19710] > syscall.set_robust_list(head=0x7f87da9a9a20 len=0x18)
[19710] < syscall.set_robust_list() return=0x0
[19709] > futex_wait_setup(uaddr=0x7f87da9cd000 val=0x80004cc5 flags=0x1
q=0xffff8801de85fdc8 hb=0xffff8801de85fd58)
[19653] < syscall.futex() return=0x1
[19709] < futex_wait() return=0xfffffffffffffff5
[19653] < 0x4011a7() return=0x0
[19709] < do_futex() return=0xfffffffffffffff5
[19653] < 0x4011a7() return=0x0
[19709] < syscall.futex() return=0xfffffffffffffff5
[19709] < 0x401122() return=0x0
[19653] signal.send SIGTERM to 19703
[19709] < 0x401122() return=0x0
[19653] > __pthread_mutex_lock(mutex=0x7f87da9cd000)
[19709] > pthread_mutex_unlock(mutex=0x7f87da9cd000)
[19703] < schedule()
[19703] < futex_wait()
[19709] > pthread_mutex_unlock(decr=0x1 mutex=0x7f87da9cd000)
[19653] > __pthread_mutex_lock_full(mutex=0x7f87da9cd000)
[19703] < do_futex() return=0xfffffffffffffe00
[19703] < syscall.futex() return=0xfffffffffffffe00
[19709] > __pthread_mutex_unlock_full(mutex=0x7f87da9cd000 decr=0x1)
[19703] do_exit(code=0xf)
[19653] > syscall.futex(uaddr=0x7f87da9cd000 op=0x0 val=0x80004cfd utime=0x0
uaddr2=0x80 val3=0x0)
[19703] exit_mm(tsk=0xffff88030a4d6780)
[19709] > syscall.futex(uaddr=0x7f87da9cd000 op=0x1 val=0x1
utime=0x7f87da9cd020 uaddr2=0x7f87da9cd000 val3=0x0)
[19653] > futex_wait(uaddr=0x7f87da9cd000 flags=0x1 val=0x80004cfd abs_time=0x0
bitset=0xffffffff)
[19703] > mm_release(tsk=0xffff88030a4d6780 mm=0xffff8803046e5dc0)
[19709] < syscall.futex() return=0x1
[19653] > futex_wait_setup(uaddr=0x7f87da9cd000 val=0x80004cfd flags=0x1
q=0xffff8801df113dc8 hb=0xffff8801df113d58)
[19710] > __pthread_mutex_lock(mutex=0x7f87da9cd000)
[19709] < 0x4011a7() return=0x0
[19653] < futex_wait() return=0xfffffffffffffff5
[19703] > exit_robust_list(curr=0xffff88030a4d6780)
head = 0x7f87da9a9a20
&head.list = 0x7f87da9a9a20
entry = 0x7f87da9cd020
next = 0x0
futex_offset = -32
pending = 0x7f87da9cd020
[19709] < 0x4011a7() return=0x0
[19653] < do_futex() return=0xfffffffffffffff5
[19653] < syscall.futex() return=0xfffffffffffffff5
[19703] > handle_futex_death(uaddr=0x7f87da9cd000 curr=0xffff88030a4d6780
pi=0x0)
[19703] < handle_futex_death() return=0x0
[19703] < exit_robust_list()
[19653] < 0x401122() return=0x0
[19703] < mm_release()
[19653] < 0x401122() return=0x0
[19710] > __pthread_mutex_lock_full(mutex=0x7f87da9cd000)
[19653] > syscall.wait4(upid=0x4cfd stat_addr=0x7ffc78b0308c options=0x0
ru=0x0)
[19709] > __pthread_mutex_lock(mutex=0x7f87da9d0908)
[19710] > syscall.futex(uaddr=0x7f87da9cd000 op=0x0 val=0x80004cc5 utime=0x0
uaddr2=0x80 val3=0x0)
[19653] > schedule()
[19709] < _dl_fini() return=0x0
[19710] > futex_wait(uaddr=0x7f87da9cd000 flags=0x1 val=0x80004cc5 abs_time=0x0
bitset=0xffffffff)
[19710] > futex_wait_setup(uaddr=0x7f87da9cd000 val=0x80004cc5 flags=0x1
q=0xffff88020b5a3dc8 hb=0xffff88020b5a3d58)
[19710] < futex_wait() return=0x0
[19709] > pthread_mutex_unlock(mutex=0x7f87da9d0908)
[19709] > pthread_mutex_unlock(decr=0x1 mutex=0x7f87da9d0908)
[19710] > futex_wait_queue_me(hb=0xffffc90001893fc0 q=0xffff88020b5a3dc8
timeout=0x0)
[19710] > schedule()
[19709] < _dl_fini() return=0x0
[19709] do_exit(code=0x0)
[19709] exit_mm(tsk=0xffff88030a4d2280)
[19709] > mm_release(tsk=0xffff88030a4d2280 mm=0xffff8803046e3200)
[19709] > exit_robust_list(curr=0xffff88030a4d2280)
head = 0x7f87da9a9a20
&head.list = 0x7f87da9a9a20
entry = 0x7f87da9cd020
next = 0x7f87da9a9a20
futex_offset = -32
pending = 0x0
[19703] signal.send SIGCHLD to 19653
[19709] > handle_futex_death(uaddr=0x7f87da9cd000 curr=0xffff88030a4d2280
pi=0x0)
[19703] > schedule()
[19709] < handle_futex_death() return=0x0
[19709] < exit_robust_list()
[19709] < mm_release()
[19709] signal.send SIGCHLD to 19653
[19709] > schedule()
[19704] < schedule()
[19653] < schedule()
[19704] < futex_wait()
[19704] < do_futex() return=0x0
[19704] < syscall.futex() return=0x0
[19653] < syscall.wait4() return=0x4cfd
[19704] > syscall.futex(uaddr=0x7f87da9cd000 op=0x0 val=0x80004cc5 utime=0x0
uaddr2=0x80 val3=0x0)
[19704] > futex_wait(uaddr=0x7f87da9cd000 flags=0x1 val=0x80004cc5 abs_time=0x0
bitset=0xffffffff)
[19704] > futex_wait_setup(uaddr=0x7f87da9cd000 val=0x80004cc5 flags=0x1
q=0xffff88026a2ffdc8 hb=0xffff88026a2ffd58)
[19704] < futex_wait() return=0x0
[19704] > futex_wait_queue_me(hb=0xffffc90001893fc0 q=0xffff88026a2ffdc8
timeout=0x0)
[19704] > schedule()
[19705] < schedule()
[19705] < futex_wait()
[19705] < do_futex() return=0x0
[19705] < syscall.futex() return=0x0
[19705] > syscall.futex(uaddr=0x7f87da9cd000 op=0x0 val=0x80004cc5 utime=0x0
uaddr2=0x80 val3=0x0)
[19705] > futex_wait(uaddr=0x7f87da9cd000 flags=0x1 val=0x80004cc5 abs_time=0x0
bitset=0xffffffff)
[19705] > futex_wait_setup(uaddr=0x7f87da9cd000 val=0x80004cc5 flags=0x1
q=0xffff8801df15bdc8 hb=0xffff8801df15bd58)
[19705] < futex_wait() return=0x0
[19705] > futex_wait_queue_me(hb=0xffffc90001893fc0 q=0xffff8801df15bdc8
timeout=0x0)
[19705] > schedule()
[19653] > syscall.wait4(upid=0x4cf7 stat_addr=0x7ffc78b0308c options=0x0
ru=0x0)
[19653] < syscall.wait4() return=0x4cf7
[19711] > syscall.set_robust_list(head=0x7f87da9a9a20 len=0x18)
[19711] < syscall.set_robust_list() return=0x0
[19711] > __pthread_mutex_lock(mutex=0x7f87da9cd000)
[19711] > __pthread_mutex_lock_full(mutex=0x7f87da9cd000)
[19711] > syscall.futex(uaddr=0x7f87da9cd000 op=0x0 val=0x80004cc5 utime=0x0
uaddr2=0x80 val3=0x0)
[19711] > futex_wait(uaddr=0x7f87da9cd000 flags=0x1 val=0x80004cc5 abs_time=0x0
bitset=0xffffffff)
[19711] > futex_wait_setup(uaddr=0x7f87da9cd000 val=0x80004cc5 flags=0x1
q=0xffff88020b5a7dc8 hb=0xffff88020b5a7d58)
[19711] < futex_wait() return=0x0
[19711] > futex_wait_queue_me(hb=0xffffc90001893fc0 q=0xffff88020b5a7dc8
timeout=0x0)
[19653] > pthread_mutex_unlock(mutex=0x7f87da9cd000)
[19711] > schedule()
[19653] > pthread_mutex_unlock(decr=0x1 mutex=0x7f87da9cd000)
[19712] > syscall.set_robust_list(head=0x7f87da9a9a20 len=0x18)
[19712] < syscall.set_robust_list() return=0x0
[19653] > __pthread_mutex_unlock_full(mutex=0x7f87da9cd000 decr=0x1)
[19653] > syscall.futex(uaddr=0x7f87da9cd000 op=0x1 val=0x1 utime=0x0
uaddr2=0x7f87da9cd000 val3=0x4)
[19653] < syscall.futex() return=0x1
[19706] < schedule()
[19653] < 0x4011a7() return=0x0
[19706] < futex_wait()
[19706] < do_futex() return=0x0
[19653] < 0x4011a7() return=0x0
[19706] < syscall.futex() return=0x0
[19706] < 0x401122() return=0x0
[19653] signal.send SIGTERM to 19707
[19706] < 0x401122() return=0x0
[19653] > __pthread_mutex_lock(mutex=0x7f87da9cd000)
[19707] < schedule()
[19706] > pthread_mutex_unlock(mutex=0x7f87da9cd000)
[19707] < futex_wait()
[19706] > pthread_mutex_unlock(decr=0x1 mutex=0x7f87da9cd000)
[19653] > __pthread_mutex_lock_full(mutex=0x7f87da9cd000)
[19707] < do_futex() return=0xfffffffffffffe00
[19707] < syscall.futex() return=0xfffffffffffffe00
[19653] > syscall.futex(uaddr=0x7f87da9cd000 op=0x0 val=0x80004cfa utime=0x0
uaddr2=0x80 val3=0x0)
[19706] > __pthread_mutex_unlock_full(mutex=0x7f87da9cd000 decr=0x1)
[19653] > futex_wait(uaddr=0x7f87da9cd000 flags=0x1 val=0x80004cfa abs_time=0x0
bitset=0xffffffff)
[19707] do_exit(code=0xf)
[19706] > syscall.futex(uaddr=0x7f87da9cd000 op=0x1 val=0x1
utime=0x7f87da9cd020 uaddr2=0x7f87da9cd000 val3=0x0)
[19712] > __pthread_mutex_lock(mutex=0x7f87da9cd000)
[19707] exit_mm(tsk=0xffff88030a4d3980)
[19653] > futex_wait_setup(uaddr=0x7f87da9cd000 val=0x80004cfa flags=0x1
q=0xffff8801df113dc8 hb=0xffff8801df113d58)
[19706] < syscall.futex() return=0x1
[19707] > mm_release(tsk=0xffff88030a4d3980 mm=0xffff8803046e2580)
[19653] < futex_wait() return=0xfffffffffffffff5
[19706] < 0x4011a7() return=0x0
[19653] < do_futex() return=0xfffffffffffffff5
[19706] < 0x4011a7() return=0x0
[19653] < syscall.futex() return=0xfffffffffffffff5
[19707] > exit_robust_list(curr=0xffff88030a4d3980)
head = 0x7f87da9a9a20
&head.list = 0x7f87da9a9a20
entry = 0x7f87da9cd020
next = 0x0
futex_offset = -32
pending = 0x7f87da9cd020
[19712] > __pthread_mutex_lock_full(mutex=0x7f87da9cd000)
[19707] > handle_futex_death(uaddr=0x7f87da9cd000 curr=0xffff88030a4d3980
pi=0x0)
[19653] < 0x401122() return=0x0
[19707] < handle_futex_death() return=0x0
[19653] < 0x401122() return=0x0
[19707] < exit_robust_list()
[19712] > syscall.futex(uaddr=0x7f87da9cd000 op=0x0 val=0x80004cc5 utime=0x0
uaddr2=0x80 val3=0x0)
[19707] < mm_release()
[19653] > syscall.wait4(upid=0x4cfb stat_addr=0x7ffc78b0308c options=0x0
ru=0x0)
[19712] > futex_wait(uaddr=0x7f87da9cd000 flags=0x1 val=0x80004cc5 abs_time=0x0
bitset=0xffffffff)
[19653] > schedule()
[19706] > __pthread_mutex_lock(mutex=0x7f87da9d0908)
[19712] > futex_wait_setup(uaddr=0x7f87da9cd000 val=0x80004cc5 flags=0x1
q=0xffff88020b5abdc8 hb=0xffff88020b5abd58)
[19712] < futex_wait() return=0x0
[19706] < _dl_fini() return=0x0
[19712] > futex_wait_queue_me(hb=0xffffc90001893fc0 q=0xffff88020b5abdc8
timeout=0x0)
[19712] > schedule()
[19706] > pthread_mutex_unlock(mutex=0x7f87da9d0908)
[19706] > pthread_mutex_unlock(decr=0x1 mutex=0x7f87da9d0908)
[19706] < _dl_fini() return=0x0
[19706] do_exit(code=0x0)
[19706] exit_mm(tsk=0xffff88030a4d2e00)
[19706] > mm_release(tsk=0xffff88030a4d2e00 mm=0xffff8803046e1900)
[19707] signal.send SIGCHLD to 19653
[19706] > exit_robust_list(curr=0xffff88030a4d2e00)
head = 0x7f87da9a9a20
&head.list = 0x7f87da9a9a20
entry = 0x7f87da9cd020
next = 0x7f87da9a9a20
futex_offset = -32
pending = 0x0
[19706] > handle_futex_death(uaddr=0x7f87da9cd000 curr=0xffff88030a4d2e00
pi=0x0)
[19707] > schedule()
[19706] < handle_futex_death() return=0x0
[19706] < exit_robust_list()
[19706] < mm_release()
[19653] < schedule()
[19653] < syscall.wait4() return=0x4cfb
[19706] signal.send SIGCHLD to 19653
[19706] > schedule()
[19708] < schedule()
[19708] < futex_wait()
[19708] < do_futex() return=0x0
[19708] < syscall.futex() return=0x0
[19708] > syscall.futex(uaddr=0x7f87da9cd000 op=0x0 val=0x80004cc5 utime=0x0
uaddr2=0x80 val3=0x0)
[19708] > futex_wait(uaddr=0x7f87da9cd000 flags=0x1 val=0x80004cc5 abs_time=0x0
bitset=0xffffffff)
[19708] > futex_wait_setup(uaddr=0x7f87da9cd000 val=0x80004cc5 flags=0x1
q=0xffff8801de85bdc8 hb=0xffff8801de85bd58)
[19708] < futex_wait() return=0x0
[19708] > futex_wait_queue_me(hb=0xffffc90001893fc0 q=0xffff8801de85bdc8
timeout=0x0)
[19708] > schedule()
[19653] > syscall.wait4(upid=0x4cfa stat_addr=0x7ffc78b0308c options=0x0
ru=0x0)
[19653] < syscall.wait4() return=0x4cfa
[19653] > pthread_mutex_unlock(mutex=0x7f87da9cd000)
[19653] > pthread_mutex_unlock(decr=0x1 mutex=0x7f87da9cd000)
[19653] > __pthread_mutex_unlock_full(mutex=0x7f87da9cd000 decr=0x1)
[19653] > syscall.futex(uaddr=0x7f87da9cd000 op=0x1 val=0x1
utime=0x7f87da9a9a10 uaddr2=0x7f87da9cd000 val3=0x4cc5)
[19653] < syscall.futex() return=0x1
[19653] < 0x4011a7() return=0x0
[19653] < 0x4011a7() return=0x0
[19653] signal.send SIGTERM to 19710
[19653] > __pthread_mutex_lock(mutex=0x7f87da9cd000)
[19653] > __pthread_mutex_lock_full(mutex=0x7f87da9cd000)
[19714] > syscall.set_robust_list(head=0x7f87da9a9a20 len=0x18)
[19653] < 0x401122() return=0x0
[19714] < syscall.set_robust_list() return=0x0
[19653] < 0x401122() return=0x0
[19653] > syscall.wait4(upid=0x4cfe stat_addr=0x7ffc78b0308c options=0x0
ru=0x0)
[19653] > schedule()
[19713] > syscall.set_robust_list(head=0x7f87da9a9a20 len=0x18)
[19713] < syscall.set_robust_list() return=0x0
[19714] > __pthread_mutex_lock(mutex=0x7f87da9cd000)
[19714] > __pthread_mutex_lock_full(mutex=0x7f87da9cd000)
[19714] > syscall.futex(uaddr=0x7f87da9cd000 op=0x0 val=0x80004cc5 utime=0x0
uaddr2=0x80 val3=0x0)
[19714] > futex_wait(uaddr=0x7f87da9cd000 flags=0x1 val=0x80004cc5 abs_time=0x0
bitset=0xffffffff)
[19714] > futex_wait_setup(uaddr=0x7f87da9cd000 val=0x80004cc5 flags=0x1
q=0xffff88020c567dc8 hb=0xffff88020c567d58)
[19714] < futex_wait() return=0x0
[19714] > futex_wait_queue_me(hb=0xffffc90001893fc0 q=0xffff88020c567dc8
timeout=0x0)
[19714] > schedule()
[19710] < schedule()
[19710] < futex_wait()
[19710] < do_futex() return=0x0
[19713] > __pthread_mutex_lock(mutex=0x7f87da9cd000)
[19710] < syscall.futex() return=0x0
[19710] do_exit(code=0xf)
[19710] exit_mm(tsk=0xffff8802bba2ae00)
[19710] > mm_release(tsk=0xffff8802bba2ae00 mm=0xffff8803046e0000)
[19713] > __pthread_mutex_lock_full(mutex=0x7f87da9cd000)
[19710] > exit_robust_list(curr=0xffff8802bba2ae00)
head = 0x7f87da9a9a20
&head.list = 0x7f87da9a9a20
entry = 0x7f87da9cd020
next = 0x7f87da9a9a20
futex_offset = -32
pending = 0x7f87da9cd020
[19710] > handle_futex_death(uaddr=0x7f87da9cd000 curr=0xffff8802bba2ae00
pi=0x0)
[19713] > syscall.futex(uaddr=0x7f87da9cd000 op=0x0 val=0x80004cc5 utime=0x0
uaddr2=0x80 val3=0x0)
[19710] < handle_futex_death() return=0x0
[19710] < exit_robust_list()
[19710] < mm_release()
[19713] > futex_wait(uaddr=0x7f87da9cd000 flags=0x1 val=0x80004cc5 abs_time=0x0
bitset=0xffffffff)
[19713] > futex_wait_setup(uaddr=0x7f87da9cd000 val=0x80004cc5 flags=0x1
q=0xffff8802bbae7dc8 hb=0xffff8802bbae7d58)
[19713] < futex_wait() return=0x0
[19713] > futex_wait_queue_me(hb=0xffffc90001893fc0 q=0xffff8802bbae7dc8
timeout=0x0)
[19713] > schedule()
[19710] signal.send SIGCHLD to 19653
[19710] > schedule()
[19653] < schedule()
[19653] < syscall.wait4() return=0x4cfe
[19653] > pthread_mutex_unlock(mutex=0x7f87da9cd000)
[19653] > pthread_mutex_unlock(decr=0x1 mutex=0x7f87da9cd000)
[19653] > __pthread_mutex_unlock_full(mutex=0x7f87da9cd000 decr=0x1)
[19653] > syscall.futex(uaddr=0x7f87da9cd000 op=0x1 val=0x1
utime=0x7f87da9a9a10 uaddr2=0x7f87da9cd000 val3=0x4cc5)
[19653] < syscall.futex() return=0x1
[19715] > syscall.set_robust_list(head=0x7f87da9a9a20 len=0x18)
[19715] < syscall.set_robust_list() return=0x0
[19653] < 0x4011a7() return=0x0
[19653] < 0x4011a7() return=0x0
[19704] < schedule()
[19704] < futex_wait()
[19653] signal.send SIGTERM to 19704
[19704] < do_futex() return=0x0
[19704] < syscall.futex() return=0x0
[19653] > __pthread_mutex_lock(mutex=0x7f87da9cd000)
[19704] do_exit(code=0xf)
[19653] > __pthread_mutex_lock_full(mutex=0x7f87da9cd000)
[19653] < 0x401122() return=0x0
[19704] exit_mm(tsk=0xffff88030a4d5080)
[19653] < 0x401122() return=0x0
[19704] > mm_release(tsk=0xffff88030a4d5080 mm=0xffff8803046e3e80)
[19653] > syscall.wait4(upid=0x4cf8 stat_addr=0x7ffc78b0308c options=0x0
ru=0x0)
[19653] > schedule()
[19704] > exit_robust_list(curr=0xffff88030a4d5080)
head = 0x7f87da9a9a20
&head.list = 0x7f87da9a9a20
entry = 0x7f87da9cd020
next = 0x7f87da9a9a20
futex_offset = -32
pending = 0x7f87da9cd020
[19715] > __pthread_mutex_lock(mutex=0x7f87da9cd000)
[19704] > handle_futex_death(uaddr=0x7f87da9cd000 curr=0xffff88030a4d5080
pi=0x0)
[19704] < handle_futex_death() return=0x0
[19704] < exit_robust_list()
[19704] < mm_release()
[19715] > __pthread_mutex_lock_full(mutex=0x7f87da9cd000)
[19715] > syscall.futex(uaddr=0x7f87da9cd000 op=0x0 val=0x80004cc5 utime=0x0
uaddr2=0x80 val3=0x0)
[19715] > futex_wait(uaddr=0x7f87da9cd000 flags=0x1 val=0x80004cc5 abs_time=0x0
bitset=0xffffffff)
[19715] > futex_wait_setup(uaddr=0x7f87da9cd000 val=0x80004cc5 flags=0x1
q=0xffff88020cb3bdc8 hb=0xffff88020cb3bd58)
[19715] < futex_wait() return=0x0
[19715] > futex_wait_queue_me(hb=0xffffc90001893fc0 q=0xffff88020cb3bdc8
timeout=0x0)
[19715] > schedule()
[19704] signal.send SIGCHLD to 19653
[19704] > schedule()
[19653] < schedule()
[19653] < syscall.wait4() return=0x4cf8
[19653] > pthread_mutex_unlock(mutex=0x7f87da9cd000)
[19653] > pthread_mutex_unlock(decr=0x1 mutex=0x7f87da9cd000)
[19653] > __pthread_mutex_unlock_full(mutex=0x7f87da9cd000 decr=0x1)
[19653] > syscall.futex(uaddr=0x7f87da9cd000 op=0x1 val=0x1
utime=0x7f87da9a9a10 uaddr2=0x7f87da9cd000 val3=0x4cc5)
[19653] < syscall.futex() return=0x1
[19716] > syscall.set_robust_list(head=0x7f87da9a9a20 len=0x18)
[19653] < 0x4011a7() return=0x0
[19716] < syscall.set_robust_list() return=0x0
[19653] < 0x4011a7() return=0x0
[19705] < schedule()
[19705] < futex_wait()
[19653] signal.send SIGTERM to 19705
[19705] < do_futex() return=0x0
[19705] < syscall.futex() return=0x0
[19653] > __pthread_mutex_lock(mutex=0x7f87da9cd000)
[19705] do_exit(code=0xf)
[19653] > __pthread_mutex_lock_full(mutex=0x7f87da9cd000)
[19705] exit_mm(tsk=0xffff88030a4d0000)
[19653] < 0x401122() return=0x0
[19705] > mm_release(tsk=0xffff88030a4d0000 mm=0xffff8803046e7080)
[19653] < 0x401122() return=0x0
[19653] > syscall.wait4(upid=0x4cf9 stat_addr=0x7ffc78b0308c options=0x0
ru=0x0)
[19653] > schedule()
[19705] > exit_robust_list(curr=0xffff88030a4d0000)
head = 0x7f87da9a9a20
&head.list = 0x7f87da9a9a20
entry = 0x7f87da9cd020
next = 0x7f87da9a9a20
futex_offset = -32
pending = 0x7f87da9cd020
[19705] > handle_futex_death(uaddr=0x7f87da9cd000 curr=0xffff88030a4d0000
pi=0x0)
[19716] > __pthread_mutex_lock(mutex=0x7f87da9cd000)
[19705] < handle_futex_death() return=0x0
[19705] < exit_robust_list()
[19705] < mm_release()
[19716] > __pthread_mutex_lock_full(mutex=0x7f87da9cd000)
[19716] > syscall.futex(uaddr=0x7f87da9cd000 op=0x0 val=0x80004cc5 utime=0x0
uaddr2=0x80 val3=0x0)
[19716] > futex_wait(uaddr=0x7f87da9cd000 flags=0x1 val=0x80004cc5 abs_time=0x0
bitset=0xffffffff)
[19716] > futex_wait_setup(uaddr=0x7f87da9cd000 val=0x80004cc5 flags=0x1
q=0xffff88020cb3fdc8 hb=0xffff88020cb3fd58)
[19716] < futex_wait() return=0x0
[19716] > futex_wait_queue_me(hb=0xffffc90001893fc0 q=0xffff88020cb3fdc8
timeout=0x0)
[19716] > schedule()
[19705] signal.send SIGCHLD to 19653
[19705] > schedule()
[19653] < schedule()
[19653] < syscall.wait4() return=0x4cf9
[19653] > pthread_mutex_unlock(mutex=0x7f87da9cd000)
[19653] > pthread_mutex_unlock(decr=0x1 mutex=0x7f87da9cd000)
[19653] > __pthread_mutex_unlock_full(mutex=0x7f87da9cd000 decr=0x1)
[19653] > syscall.futex(uaddr=0x7f87da9cd000 op=0x1 val=0x1
utime=0x7f87da9a9a10 uaddr2=0x7f87da9cd000 val3=0x4cc5)
[19653] < syscall.futex() return=0x1
[19653] < 0x4011a7() return=0x0
[19717] > syscall.set_robust_list(head=0x7f87da9a9a20 len=0x18)
[19653] < 0x4011a7() return=0x0
[19717] < syscall.set_robust_list() return=0x0
[19711] < schedule()
[19653] signal.send SIGTERM to 19714
[19711] < futex_wait()
[19653] > __pthread_mutex_lock(mutex=0x7f87da9cd000)
[19711] < do_futex() return=0x0
[19711] < syscall.futex() return=0x0
[19653] > __pthread_mutex_lock_full(mutex=0x7f87da9cd000)
[19711] < 0x401122() return=0x0
[19653] > syscall.futex(uaddr=0x7f87da9cd000 op=0x0 val=0x80004cff utime=0x0
uaddr2=0x80 val3=0x0)
[19711] < 0x401122() return=0x0
[19653] > futex_wait(uaddr=0x7f87da9cd000 flags=0x1 val=0x80004cff abs_time=0x0
bitset=0xffffffff)
[19711] > pthread_mutex_unlock(mutex=0x7f87da9cd000)
[19653] > futex_wait_setup(uaddr=0x7f87da9cd000 val=0x80004cff flags=0x1
q=0xffff8801df113dc8 hb=0xffff8801df113d58)
[19711] > pthread_mutex_unlock(decr=0x1 mutex=0x7f87da9cd000)
[19653] < futex_wait() return=0x0
[19653] > futex_wait_queue_me(hb=0xffffc90001893fc0 q=0xffff8801df113dc8
timeout=0x0)
[19653] > schedule()
[19711] > __pthread_mutex_unlock_full(mutex=0x7f87da9cd000 decr=0x1)
[19711] > syscall.futex(uaddr=0x7f87da9cd000 op=0x1 val=0x1
utime=0x7f87da9cd020 uaddr2=0x7f87da9cd000 val3=0x0)
[19717] > __pthread_mutex_lock(mutex=0x7f87da9cd000)
[19711] < syscall.futex() return=0x1
[19711] < 0x4011a7() return=0x0
[19712] < schedule()
[19711] < 0x4011a7() return=0x0
[19712] < futex_wait()
[19712] < do_futex() return=0x0
[19717] > __pthread_mutex_lock_full(mutex=0x7f87da9cd000)
[19712] < syscall.futex() return=0x0
[19717] < 0x401122() return=0x0
[19712] > syscall.futex(uaddr=0x7f87da9cd000 op=0x0 val=0x80004d05 utime=0x0
uaddr2=0x80 val3=0x0)
[19717] < 0x401122() return=0x0
[19712] > futex_wait(uaddr=0x7f87da9cd000 flags=0x1 val=0x80004d05 abs_time=0x0
bitset=0xffffffff)
[19717] > pthread_mutex_unlock(mutex=0x7f87da9cd000)
[19712] > futex_wait_setup(uaddr=0x7f87da9cd000 val=0x80004d05 flags=0x1
q=0xffff88020b5abdc8 hb=0xffff88020b5abd58)
[19711] > __pthread_mutex_lock(mutex=0x7f87da9d0908)
[19712] < futex_wait() return=0x0
[19717] > pthread_mutex_unlock(decr=0x1 mutex=0x7f87da9cd000)
[19712] > futex_wait_queue_me(hb=0xffffc90001893fc0 q=0xffff88020b5abdc8
timeout=0x0)
[19712] > schedule()
[19711] < _dl_fini() return=0x0
[19717] > __pthread_mutex_unlock_full(mutex=0x7f87da9cd000 decr=0x1)
[19717] > syscall.futex(uaddr=0x7f87da9cd000 op=0x1 val=0x1
utime=0x7f87da9cd020 uaddr2=0x7f87da9cd000 val3=0x0)
[19711] > pthread_mutex_unlock(mutex=0x7f87da9d0908)
[19717] < syscall.futex() return=0x1
[19711] > pthread_mutex_unlock(decr=0x1 mutex=0x7f87da9d0908)
[19708] < schedule()
[19708] < futex_wait()
[19717] < 0x4011a7() return=0x0
[19708] < do_futex() return=0x0
[19711] < _dl_fini() return=0x0
[19708] < syscall.futex() return=0x0
[19717] < 0x4011a7() return=0x0
[19708] < 0x401122() return=0x0
[19708] < 0x401122() return=0x0
[19708] > pthread_mutex_unlock(mutex=0x7f87da9cd000)
[19708] > pthread_mutex_unlock(decr=0x1 mutex=0x7f87da9cd000)
[19708] > __pthread_mutex_unlock_full(mutex=0x7f87da9cd000 decr=0x1)
[19717] > __pthread_mutex_lock(mutex=0x7f87da9d0908)
[19708] > syscall.futex(uaddr=0x7f87da9cd000 op=0x1 val=0x1
utime=0x7f87da9cd020 uaddr2=0x7f87da9cd000 val3=0x0)
[19711] do_exit(code=0x0)
[19717] < _dl_fini() return=0x0
[19708] < syscall.futex() return=0x1
[19708] < 0x4011a7() return=0x0
[19711] exit_mm(tsk=0xffff8802bba2b980)
[19708] < 0x4011a7() return=0x0
[19711] > mm_release(tsk=0xffff8802bba2b980 mm=0xffff8803046e76c0)
[19717] > pthread_mutex_unlock(mutex=0x7f87da9d0908)
[19711] > exit_robust_list(curr=0xffff8802bba2b980)
head = 0x7f87da9a9a20
&head.list = 0x7f87da9a9a20
entry = 0x7f87da9cd020
next = 0x0
futex_offset = -32
pending = 0x0
[19717] > pthread_mutex_unlock(decr=0x1 mutex=0x7f87da9d0908)
[19711] > handle_futex_death(uaddr=0x7f87da9cd000 curr=0xffff8802bba2b980
pi=0x0)
[19708] > __pthread_mutex_lock(mutex=0x7f87da9d0908)
[19717] < _dl_fini() return=0x0
[19711] < handle_futex_death() return=0x0
[19711] < exit_robust_list()
[19708] < _dl_fini() return=0x0
[19711] < mm_release()
[19708] > pthread_mutex_unlock(mutex=0x7f87da9d0908)
[19708] > pthread_mutex_unlock(decr=0x1 mutex=0x7f87da9d0908)
[19717] do_exit(code=0x0)
[19708] < _dl_fini() return=0x0
[19717] exit_mm(tsk=0xffff8802bba2dc00)
[19717] > mm_release(tsk=0xffff8802bba2dc00 mm=0xffff8803046e1900)
[19717] > exit_robust_list(curr=0xffff8802bba2dc00)
head = 0x7f87da9a9a20
&head.list = 0x7f87da9a9a20
entry = 0x7f87da9cd020
next = 0x0
futex_offset = -32
pending = 0x0
[19708] do_exit(code=0x0)
[19717] > handle_futex_death(uaddr=0x7f87da9cd000 curr=0xffff8802bba2dc00
pi=0x0)
[19717] < handle_futex_death() return=0x0
[19708] exit_mm(tsk=0xffff88030a4d7300)
[19717] < exit_robust_list()
[19717] < mm_release()
[19708] > mm_release(tsk=0xffff88030a4d7300 mm=0xffff8803046e5780)
[19708] > exit_robust_list(curr=0xffff88030a4d7300)
head = 0x7f87da9a9a20
&head.list = 0x7f87da9a9a20
entry = 0x7f87da9cd020
next = 0x0
futex_offset = -32
pending = 0x0
[19708] > handle_futex_death(uaddr=0x7f87da9cd000 curr=0xffff88030a4d7300
pi=0x0)
[19708] < handle_futex_death() return=0x0
[19708] < exit_robust_list()
[19708] < mm_release()
[19711] signal.send SIGCHLD to 19653
[19711] > schedule()
[19717] signal.send SIGCHLD to 19653
[19717] > schedule()
[19714] < schedule()
[19714] < futex_wait()
[19714] < do_futex() return=0x0
[19714] < syscall.futex() return=0x0
[19708] signal.send SIGCHLD to 19653
[19708] > schedule()
[19714] do_exit(code=0xf)
[19714] exit_mm(tsk=0xffff8802bba2a280)
[19714] > mm_release(tsk=0xffff8802bba2a280 mm=0xffff8803046e12c0)
[19714] > exit_robust_list(curr=0xffff8802bba2a280)
head = 0x7f87da9a9a20
&head.list = 0x7f87da9a9a20
entry = 0x7f87da9cd020
next = 0x0
futex_offset = -32
pending = 0x7f87da9cd020
[19714] > handle_futex_death(uaddr=0x7f87da9cd000 curr=0xffff8802bba2a280
pi=0x0)
[19714] < handle_futex_death() return=0x0
[19714] < exit_robust_list()
[19714] < mm_release()
[19714] signal.send SIGCHLD to 19653
[19714] > schedule()
So, I wonder if the below conditions can become true...
1. process A spawns process B and race for a robust mutex
2. process B has robust mutex locked or in process of locking it
3. process B dies
4. while cleaning up from process B death, process C is started
5. during fork, robust_list of A or C may become inconsistent
because only one process would call pthread_mutex_consistent,
so, while the mutex would be recovered, the robust list would
not
6. C also dies with mutex locked causing corruption and dead lock
--
You are receiving this mail because:
You are on the CC list for the bug.