NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/56828: futex calls in Linux emulation sometimes hang



The following reply was made to PR kern/56828; it has been noted by GNATS.

From: Thomas Klausner <wiz%NetBSD.org@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc: 
Subject: Re: kern/56828: futex calls in Linux emulation sometimes hang
Date: Fri, 16 Sep 2022 14:05:07 +0200

 Some information from debugging with riastradh, OCR'd and handfixed:
 
 crash> ps/w | grep futex
 7203 8445 java linux 43 futex ffffa3212cc45ed0
 7203 8701 java linux 43 futex ffffa3212cc3eed0
 ...
 many many more of these.
 
 (gdb) p futex_tab
 $1 = (lock = {u = (mtxa_owner = 0, s = (mtxs_dummy = 0 '\000', mtxs_ipl = {_ipl = 0 '\000'}, mtxs_lock = 0 '\000', mtxs_unused = 0 '\000'}}}, va = {rbt_root = 0x0, rbt_ops = 0xffffffff81375ba0 <futex_rb_ops>,
 rbt_minmax = {0x0, 0x0}}, oa = {rbt_root = 0xffff8039324615a0, rbt_ops = 0xffffffff81375b80 <futex_shared_rb_ops>, rbt_minmax = {0xffff8035d9ac71e0, 0xffff8035fa7f0c60}}}
 (gdb) print ((struct futex_wait *) (0xffffa3212cc45ed0
 - (size_t)&((struct futex_wait *)0)->fw_cv))
 $2 = (struct futex wait *) 0xffffa3212cc45ec8
 (gd) print &((struct futex_wait *)0)->fw_cv
 $3 = (kcondvar t *) 0x8
 (gdb) print _Alignof (struct futex_wait)
 $4 = 8
 (gdb) print *((struct futex_wait *) (0xffffa3212cc45ed0 - (size_t)&((struct futex_wait *)0)->fw_cv))
 $5 = (fw lock = {u = {mtxa_owner = 0, s = {mtxs_dummy = 0 '\000', mtxs_ipl = { ipl = 0 '\000'}, mtxs_lock = 0 '\000', mtxs_unused = 0 '\000'}}}, fw_cv = {cv_opaque = 0xffff803897cb8100, 0xffffffff813e61a9}}, fw_futex = 0xffff803873cf9400, fw_entry = {tqe_next = 0x0, tqe_prev = 0xffff803873cf9440}, fw_abort = (le_next = 0xca, le_prev = 0xffffa3212cc45f407, fw_bitset=-1, fw_aborting = false}
 (gdb) x/s ((struct futex_wait *)(0xffffa3212cc45ed0 - (size_t)&((struct futex_wait *)0)->fw_cv))->fw_cv->cv_opaque[1]
 Oxffffffff813e61a9: "futex"
 (gdb) print *((struct futex_wait *)(0xffffa3212cceed0 - (size_t)&((struct futex_wait *)0)->fw_cv))
 $6 = {fw lock = {u = (mtxa_owner = 0, s = {mtxs_dummy = 0 '\000', mtxs_ipl = { ipl = 0 '\000'}, mtxs_lock = 0 '\000', mtxs_unused = 0 '\000'}}}, fw_cv = {cv_opaque = {0xffff80389a4d3940, 0xffffffff813e61a93}, fw_futex = 0xffff8038720bcac0, fw_entry = {tqe_next = 0x0, tqe_prev = 0xffff8038720bcb00}, fw_abort = {le_next = Oxffff8035da5d3100, le_prev = 0xffffa3212cc3ef307, fw_bitset = -1, fw_aborting = false }
 


Home | Main Index | Thread Index | Old Index