Skip to content

JankStatsAggregator.issueJankReport concurrency issues #309

Open
@tommybart

Description

@tommybart

The example JankStatsAggregator class can produce ConcurrentModificationException for listeners that perform some additional operations on it. Presumably because of how FrameData objects are internally mutated.

It appears that JankStatsAggregator.issueJankReport attempts to account for that with copies, but it may not be fully thread safe.

For example:

private val reportListener = JankStatsAggregator.OnJankReportListener { _, _, jankFrameData -> 
    jankFrameData.filter(...).map { frame ->
        // Do something with FrameData and/or StateInfo
    }
}

This usage results in rare concurrency exceptions. I'm not sure if it is a misusage on my end, but as a user I would expect the listener to be thread safe.

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions