zyfeier commented on PR #8175:
URL: https://github.com/apache/nuttx/pull/8175#issuecomment-1396333791
> @zyfeier
>
> > Increase the sem count when the holder task exit, to avoid lock failure
at next time.
>
> Could you explain the lock failure more concretely? Is it possible to
detect the failure with ostest?
Here is the test case for this issue, need enable
CONFIG_PRIORITY_INHERITANCE and CONFIG_SMP.
This case will finally stop at` nxmutex_lock(&group->tg_joinlock)`, and we
can see no one is holding
this lock, but the semcount value is 0.
```
static pthread_t g_bench_threads;
int priority = 98;
static void bench_spawn_helper(void *args)
{
UNUSED(args);
pthread_exit(NULL);
}
static void thread_test(void)
{
struct sched_param param;
pthread_attr_t attr;
int policy;
pthread_attr_init(&attr);
pthread_getschedparam(0, &policy, ¶m);
param.sched_priority = priority;
pthread_attr_setschedparam(&attr, ¶m);
pthread_create(&g_bench_threads, &attr,
(pthread_startroutine_t)bench_spawn_helper, NULL);
printf("Pthread Create Success!\n");
pthread_attr_destroy(&attr);
}
int main(int argc, FAR char *argv[])
{
int i = 0;
for (;;)
{
thread_test();
pthread_cancel(g_bench_threads);
printf("No.%d -> Test Success!\n", i);
i++;
}
return 0;
}
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]