[DynInst_API:] [dyninst/dyninst] 6bd68f: Fix proccontrol hangs in test_thread_X (#780)


Date: Fri, 24 Jul 2020 14:31:50 -0700
From: noreply@xxxxxxxxxx
Subject: [DynInst_API:] [dyninst/dyninst] 6bd68f: Fix proccontrol hangs in test_thread_X (#780)
  Branch: refs/heads/master
  Home:   https://github.com/dyninst/dyninst
  Commit: 6bd68f38b6e0ad9e1c6dfc56e6700a9cdb41c9f9
      https://github.com/dyninst/dyninst/commit/6bd68f38b6e0ad9e1c6dfc56e6700a9cdb41c9f9
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2020-07-24 (Fri, 24 Jul 2020)

  Changed paths:
    M dyninstAPI/src/pcEventMuxer.C
    M dyninstAPI/src/pcEventMuxer.h

  Log Message:
  -----------
  Fix proccontrol hangs in test_thread_X (#780)

* Use std::lock_guard throughout

PCEventMailbox::enqueue
* Check process state before enqueueing
* Add more proccontrol logging in PCEventMailbox
* Move broadcast to the end to reduce spurious wakeups
* Only add events for valid processes

PCEventMuxer::wait_internal
* Handle errors for Process::handleEvents
* Add logging for mailbox size check
* Add more loggin in non-blocking path
* Add logging for 'handle(NULL)' call
* Log successful event completion
* Remove unreachable code
* Remove unused parameter
* Use std::lock_guard

PCEventMailbox::dequeue
* add logging when returning empty event
* Add sanity check for process pointer
* add logging on sucessful event dequeue
* Ignore post-exit events on invalid processes

PCEventMailbox::find
* Use standard check for element values
    This prevents accidental insertion of non-existent keys.
* add logging
* add sanity check for passed process

PCEventMailbox
* Change procCount to map PIDs instead of PCProcess*
    This prevents null pointer issues as well as pointer-reuse in some
    abnormal situations.


[← Prev in Thread] Current Thread [Next in Thread→]
  • [DynInst_API:] [dyninst/dyninst] 6bd68f: Fix proccontrol hangs in test_thread_X (#780), noreply <=