Skip to content

Conversation

@joyent-automation
Copy link

OS-6997 bhyve should error check mutexes

This PR was migrated-from-gerrit, https://cr.joyent.us/#/c/4139/.
The raw archive of this CR is here.
See MANTA-4594 for info on Joyent Eng's migration from Gerrit.

CR discussion

@mgerdts commented at 2018-06-05T04:44:02

Patch Set 1: Code-Review-1

Quick untested hack

@mgerdts commented at 2018-06-05T12:48:25

Uploaded patch set 3: Commit message was updated.

@mgerdts commented at 2018-06-05T15:00:24

Patch Set 4: -Code-Review

I'm not sure if this is a great idea or not, but would like feedback.

When mutexes are initialized with the static initializers, flag.flag1 (lwp_mutex_t) or __pthread_mutex_flags.__pthread_mutex_flag1 (pthread_mutex_t) does not get set to (LOCK_INITED). This is the case with PTHREAD_MUTEX_INITIALIZER and PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP. Aside from that, mdb shows PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP and _check_mutex_init() leading to the same results.

To catch issues with future syncs, we may want to add an ASSERT3S() in _check_mutex_lock() to ensure that PTHREAD_MUTEX_ERRORCHECK is set.

@mgerdts commented at 2018-06-05T15:25:19

Patch Set 4:

Summary of comments at https://chat.joyent.us/joyent/pl/q1r4j3atwpr55cnjc4i6z155wy

  • No need to edit all the files, just use -include CFLAG
  • Use mutex_enter() and mutex_exit()
  • Use mutex_init(&mtx, LOCK_ERRORCHECK, NULL)
  • Consider adding a pthread version of mutex_*() to avoid casts

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.

3 participants