Summary: | panic: [pmc,4204] cpu 0 didn't find a sample to collect | ||
---|---|---|---|
Product: | Base System | Reporter: | Ed Maste <emaste> |
Component: | kern | Assignee: | Andrew Turner <Andrew> |
Status: | Closed FIXED | ||
Severity: | Affects Only Me | CC: | Andrew, br |
Priority: | --- | ||
Version: | CURRENT | ||
Hardware: | arm64 | ||
OS: | Any | ||
URL: | https://reviews.freebsd.org/D6581 | ||
Bug Depends on: | |||
Bug Blocks: | 203349 |
Description
Ed Maste
![]() ![]() As a workaround I commented the KASSERT out with no ill effects. A commit references this bug: Author: andrew Date: Sat May 28 13:05:40 UTC 2016 New revision: 300902 URL: https://svnweb.freebsd.org/changeset/base/300902 Log: Don't panic in hwpmc when stopping sampling. When hwpmc stops sampling it will set the pm_state to something other than PMC_STATE_RUNNING. This means the following sequence can happen: CPU 0: Enter the interrupt handler CPU 0: Set the thread TDP_CALLCHAIN pflag CPU 1: Stop sampling CPU 0: Call pmc_process_samples, sampling is stopped so clears ps_nsamples CPU 0: Finishes interrupt processing with the TDP_CALLCHAIN flag set CPU 0: Call pmc_capture_user_callchain to capture the user call chain CPU 0: Find all the pmc sample are free so no call chains need to be captured CPU 0: KASSERT because of this This fixes the issue by checking if any of the samples have been stopped and including this in te KASSERT. PR: 204273 Reviewed by: bz, gnn Obtained from: ABT Systems Ltd Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D6581 Changes: head/sys/dev/hwpmc/hwpmc_mod.c |