[Bug 231793] panic: [pmc,4965] pm=0xfffff80480ff2400 runcount 0

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Fri Oct 5 05:56:25 UTC 2018


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=231793

--- Comment #5 from commit-hook at freebsd.org ---
A commit references this bug:

Author: mmacy
Date: Fri Oct  5 05:55:57 UTC 2018
New revision: 339188
URL: https://svnweb.freebsd.org/changeset/base/339188

Log:
  hwpmc: Refactor sample ring buffer handling to fix races

  Refactor sample ring buffer ring handling to make it more robust to
  long running callchain collection handling

  r338112 introduced a (now fixed) regression that exposed a number of race
  conditions within the management of the sample buffers. This
  simplifies the handling and moves the decision to overwrite a
  callchain sample that has taken too long out of the NMI in to the
  hardlock handler. With this change the problem no longer shows up as a
  ring corruption but as the code spending all of its time in callchain
  collection.

  - Makes the producer / consumer index incrementing monotonic, making it
    easier (for me at least) to reason about.
  - Moves the decision to overwrite a sample from NMI context to interrupt
    context where we can enforce serialization.
  - Puts a time limit on waiting to collect a user callchain - putting a
    bound on head-of-line blocking causing samples to be dropped
  - Removes the flush routine which was previously needed to purge
    dangling references to the pmc from the sample buffers but now is only
    a source of a race condition on unload.

  Previously one could lock up or crash HEAD by running:
  pmcstat -S inst_retired.any_p -T and then hitting ^C

  After this change it is no longer possible.

  PR:   231793
  Reviewed by:  markj@
  Approved by:  re (gjb@)
  Differential Revision:        https://reviews.freebsd.org/D17011

Changes:
  head/sys/dev/hwpmc/hwpmc_logging.c
  head/sys/dev/hwpmc/hwpmc_mod.c
  head/sys/sys/pmc.h
  head/sys/sys/pmckern.h

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list