Skip to content

Commit

Permalink
sem: fix NULL pointer when open CONFIG_PRIORITY_INHERITANCE
Browse files Browse the repository at this point in the history
set CONFIG_PRIORITY_INHERITANCE=y
set CONFIG_SEM_PREALLOCHOLDERS=0

semaphore/sem_holder.c:320:34: runtime error: member access within null pointer of type 'struct tcb_s'
    #0 0xd8b540 in nxsem_boostholderprio semaphore/sem_holder.c:320
    #1 0xd8c1cf in nxsem_boost_priority semaphore/sem_holder.c:703
    #2 0xda5dfa in nxsem_wait semaphore/sem_wait.c:145
    #3 0xda61d9 in nxsem_wait_uninterruptible semaphore/sem_wait.c:248
    #4 0x12f2477 in media_service_thread0 /home/ligd/platform/dev/apps/examples/hello/hello_main.c:44
    #5 0x1204154 in pthread_startup pthread/pthread_create.c:59
    #6 0x1cd906f in pthread_start pthread/pthread_create.c:139
    #7 0xe72fcb in pre_start sim/sim_initialstate.c:52

Signed-off-by: ligd <liguiding1@xiaomi.com>
  • Loading branch information
GUIDINGLI authored and xiaoxiang781216 committed Oct 11, 2024
1 parent cac90af commit 4409db4
Showing 1 changed file with 6 additions and 7 deletions.
13 changes: 6 additions & 7 deletions sched/semaphore/sem_holder.c
Original file line number Diff line number Diff line change
Expand Up @@ -319,7 +319,7 @@ static int nxsem_boostholderprio(FAR struct semholder_s *pholder,
* because the thread is already running at a sufficient priority.
*/

if (rtcb->sched_priority > htcb->sched_priority)
if (rtcb && htcb && rtcb->sched_priority > htcb->sched_priority)
{
/* Raise the priority of the holder of the semaphore. This
* cannot cause a context switch because we have preemption
Expand Down Expand Up @@ -757,14 +757,13 @@ void nxsem_release_holder(FAR sem_t *sem)
return;
}
}

/* The current task is not a holder */

DEBUGPANIC();
#else
pholder = &sem->holder;
DEBUGASSERT(pholder->htcb == rtcb);
nxsem_freeholder(sem, pholder);
if (pholder->htcb)
{
DEBUGASSERT(pholder->htcb == rtcb);
nxsem_freeholder(sem, pholder);
}
#endif
}
}
Expand Down

0 comments on commit 4409db4

Please sign in to comment.