[Bug 283101] pthread_cancel() doesn't cancel a thread that's currently in pause()
Date: Fri, 20 Dec 2024 11:10:13 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=283101 --- Comment #16 from vedad@kajtaz.net --- (In reply to Konstantin Belousov from comment #14) Here it is: (gdb) print *pthread $1 = {tid = 394413, lock = {m_owner = 0, m_flags = 0, m_ceilings = {0, 0}, m_rb_lnk = 0, m_spare = {0, 0}}, cycle = 0, locklevel = 0, critical_count = 0, sigblock = 0, fsigblock = 0, tle = {tqe_next = 0xf1713c12000, tqe_prev = 0x821f39590 <_thread_list>}, gcle = { tqe_next = 0x0, tqe_prev = 0x0}, hle = {le_next = 0x0, le_prev = 0x821f39e20}, wle = {tqe_next = 0x0, tqe_prev = 0x0}, refcount = 1, start_routine = 0x201a70 <thread>, arg = 0x0, attr = {sched_policy = 2, sched_inherit = 4, prio = 0, suspend = 0, flags = 2, stackaddr_attr = 0x823a8f000, stacksize_attr = 2097152, guardsize_attr = 4096, cpuset = 0x0, cpusetsize = 0}, sigcancel_cnt = 1, sigcancel_crit_cnt = 1, cancel_enable = 1, cancel_pending = 1, cancel_point = 1, no_cancel = 0, cancel_async = 0, cancelling = 0, sigmask = {__bits = {0, 0, 0, 0}}, unblock_sigcancel = 0, in_sigsuspend = 1, deferred_siginfo = {si_signo = 0, si_errno = 0, si_code = 0, si_pid = 0, si_uid = 0, si_status = 0, si_addr = 0x0, si_value = {sival_int = 0, sival_ptr = 0x0, sigval_int = 0, sigval_ptr = 0x0}, _reason = {_fault = {_trapno = 0}, _timer = {_timerid = 0, _overrun = 0}, _mesgq = {_mqd = 0}, _poll = {_band = 0}, _capsicum = {_syscall = 0}, __spare__ = {__spare1__ = 0, __spare2__ = {0, 0, 0, 0, 0, 0, 0}}}}, deferred_sigmask = {__bits = {0, 0, 0, 0}}, deferred_sigact = {__sigaction_u = {__sa_handler = 0x0, __sa_sigaction = 0x0}, sa_flags = 0, sa_mask = {__bits = {0, 0, 0, 0}}}, deferred_run = 0, force_exit = 0, state = PS_RUNNING, error = 0, joiner = 0xf1713c12000, flags = 0, tlflags = 2, mq = {{ tqh_first = 0x0, tqh_last = 0xf1713c12fb0}, {tqh_first = 0x0, tqh_last = 0xf1713c12fc0}, {tqh_first = 0x0, tqh_last = 0xf1713c12fd0}, {tqh_first = 0x0, tqh_last = 0xf1713c12fe0}, {tqh_first = 0x0, tqh_last = 0xf1713c12ff0}, {tqh_first = 0x0, tqh_last = 0xf1713c13000}}, ret = 0x0, specific = 0x0, specific_data_count = 0, rdlock_count = 0, rtld_bits = 0, tcb = 0xf171420f120, cleanup = 0x0, ex = {exception_class = 0, exception_cleanup = 0x0, private_1 = 0, private_2 = 0}, unwind_stackend = 0x823c8f000, unwind_disabled = 0, magic = 3499860245, report_events = 0, event_mask = 0, event_buf = {event = TD_EVENT_NONE, th_p = 0, data = 0}, wchan = 0x0, mutex_obj = 0x0, will_sleep = 0, nwaiter_defer = 0, robust_inited = 0, robust_list = 0, priv_robust_list = 0, inact_mtx = 0, defer_waiters = {0x0 <repeats 50 times>}, wake_addr = 0xf1714200018, sleepqueue = 0xf1713c19080, name = 0x0, dlerror_msg = '\000' <repeats 511 times>, dlerror_seen = 0} (gdb) print *curthread $2 = {tid = 100589, lock = {m_owner = 0, m_flags = 0, m_ceilings = {0, 0}, m_rb_lnk = 0, m_spare = {0, 0}}, cycle = 0, locklevel = 0, critical_count = 0, sigblock = 0, fsigblock = 0, tle = {tqe_next = 0x0, tqe_prev = 0xf1713c12e40}, gcle = {tqe_next = 0x0, tqe_prev = 0x0}, hle = {le_next = 0x0, le_prev = 0x821f39db0}, wle = {tqe_next = 0x0, tqe_prev = 0x0}, refcount = 0, start_routine = 0x0, arg = 0x0, attr = {sched_policy = 2, sched_inherit = 4, prio = 0, suspend = 0, flags = 258, stackaddr_attr = 0x8003a5000, stacksize_attr = 536870912, guardsize_attr = 4096, cpuset = 0x0, cpusetsize = 0}, sigcancel_cnt = 0, sigcancel_crit_cnt = 0, cancel_enable = 1, cancel_pending = 0, cancel_point = 1, no_cancel = 0, cancel_async = 0, cancelling = 0, sigmask = {__bits = {0, 0, 0, 0}}, unblock_sigcancel = 0, in_sigsuspend = 0, deferred_siginfo = {si_signo = 0, si_errno = 0, si_code = 0, si_pid = 0, si_uid = 0, si_status = 0, si_addr = 0x0, si_value = {sival_int = 0, sival_ptr = 0x0, sigval_int = 0, sigval_ptr = 0x0}, _reason = {_fault = { _trapno = 0}, _timer = {_timerid = 0, _overrun = 0}, _mesgq = {_mqd = 0}, _poll = {_band = 0}, _capsicum = {_syscall = 0}, __spare__ = {__spare1__ = 0, __spare2__ = {0, 0, 0, 0, 0, 0, 0}}}}, deferred_sigmask = {__bits = {0, 0, 0, 0}}, deferred_sigact = { __sigaction_u = {__sa_handler = 0x0, __sa_sigaction = 0x0}, sa_flags = 0, sa_mask = {__bits = {0, 0, 0, 0}}}, deferred_run = 0, force_exit = 0, state = PS_RUNNING, error = 0, joiner = 0x0, flags = 0, tlflags = 2, mq = {{tqh_first = 0x0, tqh_last = 0xf1713c121b0}, { tqh_first = 0x0, tqh_last = 0xf1713c121c0}, {tqh_first = 0x0, tqh_last = 0xf1713c121d0}, {tqh_first = 0x0, tqh_last = 0xf1713c121e0}, {tqh_first = 0x0, tqh_last = 0xf1713c121f0}, {tqh_first = 0x0, tqh_last = 0xf1713c12200}}, ret = 0x0, specific = 0x0, specific_data_count = 0, rdlock_count = 0, rtld_bits = 0, tcb = 0xf171381c120, cleanup = 0x8203a39f0, ex = {exception_class = 0, exception_cleanup = 0x0, private_1 = 0, private_2 = 0}, unwind_stackend = 0x8203a5000, unwind_disabled = 0, magic = 3499860245, report_events = 0, event_mask = 0, event_buf = {event = TD_EVENT_NONE, th_p = 0, data = 0}, wchan = 0x0, mutex_obj = 0x0, will_sleep = 0, nwaiter_defer = 0, robust_inited = 0, robust_list = 0, priv_robust_list = 0, inact_mtx = 0, defer_waiters = { 0x0 <repeats 50 times>}, wake_addr = 0x821f3a0e0, sleepqueue = 0xf1713c19000, name = 0x0, dlerror_msg = "Invalid shared object handle 0x821f39bf0", '\000' <repeats 471 times>, dlerror_seen = 1} -- You are receiving this mail because: You are the assignee for the bug.