Skip to content

MINIFICPP-1713 Fix transient segfault in RepoTests#1537

Closed
lordgamez wants to merge 1 commit intoapache:mainfrom
lordgamez:MINIFICPP-1713
Closed

MINIFICPP-1713 Fix transient segfault in RepoTests#1537
lordgamez wants to merge 1 commit intoapache:mainfrom
lordgamez:MINIFICPP-1713

Conversation

@lordgamez
Copy link
Contributor

https://issues.apache.org/jira/browse/MINIFICPP-1713


Thank you for submitting a contribution to Apache NiFi - MiNiFi C++.

In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:

For all changes:

  • Is there a JIRA ticket associated with this PR? Is it referenced
    in the commit message?

  • Does your PR title start with MINIFICPP-XXXX where XXXX is the JIRA number you are trying to resolve? Pay particular attention to the hyphen "-" character.

  • Has your PR been rebased against the latest commit within the target branch (typically main)?

  • Is your initial contribution a single, squashed commit?

For code changes:

  • If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?
  • If applicable, have you updated the LICENSE file?
  • If applicable, have you updated the NOTICE file?

For documentation related changes:

  • Have you ensured that format looks appropriate for the output in which it is rendered?

Note:

Please ensure that once the PR is submitted, you check GitHub Actions CI results for build issues and submit an update to your PR as soon as possible.

@szaszm
Copy link
Member

szaszm commented Mar 21, 2023

Could you describe what caused the segfault and why this fixes it?

@lordgamez
Copy link
Contributor Author

lordgamez commented Mar 21, 2023

Could you describe what caused the segfault and why this fixes it?

Even though the flush_counter is an atomic, incrementing it and checking its value are 2 separate operations and running them in parallel could create an ordering where the checked value is never 1. This can occur quite often if this thread is run every 1ms. Because of this the repository is not stopped before it is destroyed. Having a separate mutex to lock both incrementing and checkin the value of the flush_counter at the same time solves this issue.

@fgerlits fgerlits closed this in e775efa Mar 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants