[Bug 283101] pthread_cancel() doesn't cancel a thread that's currently in pause()

From: <bugzilla-noreply_at_freebsd.org>
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.